Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php namespace App\Http\Controllers;
- use Session;
- use Request;
- use DB;
- use CRUDBooster;
- use App\Models\RequestModel;
- use App\Models\RequestCustomerModel;
- use App\Models\CustomerModel;
- class AdminCpiTrxRequestController extends \crocodicstudio\crudbooster\controllers\CBController
- {
- public function cbInit()
- {
- # START CONFIGURATION DO NOT REMOVE THIS LINE
- $this->title_field = "id";
- $this->limit = "10";
- $this->orderby = "id,desc";
- $this->global_privilege = false;
- $this->button_table_action = true;
- $this->button_bulk_action = false;
- $this->button_action_style = "button_icon";
- $this->button_add = true;
- $this->button_edit = false;
- $this->button_delete = false;
- $this->button_detail = false;
- $this->button_show = true;
- $this->button_filter = true;
- $this->button_import = false;
- $this->button_export = false;
- $this->table = "cpi_trx_request";
- # END CONFIGURATION DO NOT REMOVE THIS LINE
- # START COLUMNS DO NOT REMOVE THIS LINE
- // $this->col = [];
- $this->col[] = ["label"=>"Tanggal","name"=>"request_date"];
- $this->col[] = ["label"=>"Tipe","name"=>"type", 'callback_php'=>'($row->type==REQUEST_TYPE_SO)?"<span class=\"label label-primary\">SO</span>":"<span class=\"label label-info\">QUO</span>"'];
- $this->col[] = ["label"=>"No SO/QUO", "name"=>"request_number"];
- $this->col[] = ["label"=>"Customer", "name"=>"id", "callback_php"=>'$this->customers($row->id)'];
- $this->col[] = ["label"=>"Jumlah Permohonan","name"=>"amount", 'callback_php'=>' "Rp.".number_format($row->amount)'];
- $this->col[] = ["label"=>"Status","name"=>"status", 'callback_php'=>'($row->status=="1")?"<span class=\"label label-success\">Permohonan Baru</span>":"<span class=\"label label-danger\">Disetujui</span>"'];
- // $this->col[] = ["label"=>"Jatuh Tempo","name"=>"due_date"];
- // $this->col[] = ["label"=>"Sales Kemarin","name"=>"sales_before"];
- // $this->col[] = ["label"=>"Transfer Kemarin","name"=>"transfer_before"];
- # END COLUMNS DO NOT REMOVE THIS LINE
- # START FORM DO NOT REMOVE THIS LINE
- $this->form = [];
- $this->form[] = ['label'=>'Tanggal Permohonan','name'=>'request_date','type'=>'text','validation'=>'required','width'=>'col-sm-10','readonly'=>'1','value'=>date("Y-m-d H:i:s")];
- $this->form[] = ['label'=>'Tipe','name'=>'type','type'=>'radio','validation'=>'required|integer|min:0','width'=>'col-sm-10','dataenum'=>'1|SO;2|QUO'];
- $this->form[] = ['label'=>'No SO/QUO','name'=>'request_number','type'=>'text','validation'=>'required|min:1','width'=>'col-sm-10'];
- $this->form[] = ['label'=>'Technical Support','name'=>'request_by','type'=>'select2','validation'=>'required|integer|min:0','width'=>'col-sm-10','datatable'=>'cpi_mst_employee,name'];
- $this->form[] = ['label'=>'Owner','name'=>'owner_id','type'=>'select2','validation'=>'required','width'=>'col-sm-10','datatable'=>'cpi_mst_owner,owner_name'];
- $this->form[] = ['label'=>'Customer','name'=>'customer_ids[]','type'=>'select2','width'=>'col-sm-10','datatable'=>'cpi_mst_customer,owner_id'];
- $this->form[] = ['label'=>'Jumlah Permohonan','name'=>'amount','type'=>'number','validation'=>'required|integer','width'=>'col-sm-10'];
- $this->form[] = ['label'=>'Jatuh Tempo','name'=>'due_date','type'=>'number','validation'=>'required|integer','width'=>'col-sm-10'];
- $this->form[] = ['label'=>'Sales Kemarin','name'=>'sales_before','type'=>'number','validation'=>'required|integer','width'=>'col-sm-10'];
- $this->form[] = ['label'=>'Transfer Kemarin','name'=>'transfer_before','type'=>'number','validation'=>'required|integer','width'=>'col-sm-10'];
- $this->form[] = ['label'=>'Credit Limit Total','name'=>'credit_limit_total','type'=>'number','validation'=>'required|integer','width'=>'col-sm-10'];
- $this->form[] = ['label'=>'Credit Limit Digunakan','name'=>'credit_limit_used','type'=>'number','validation'=>'required|integer','width'=>'col-sm-10'];
- $this->form[] = ['label'=>'Credit Term Waktu','name'=>'credit_term_waktu','type'=>'number','validation'=>'required|integer|min:0','width'=>'col-sm-10'];
- $this->form[] = ['label'=>'Credit Term Berjalan','name'=>'credit_term_berjalan','type'=>'number','validation'=>'required|integer|min:0','width'=>'col-sm-10'];
- # END FORM DO NOT REMOVE THIS LINE
- # OLD START FORM
- //$this->form = [];
- //$this->form[] = ['label'=>'Tanggal Permohonan','name'=>'request_date','type'=>'text','validation'=>'required','width'=>'col-sm-10','readonly'=>'1','value'=>date("Y-m-d H:i:s")];
- //$this->form[] = ['label'=>'Tipe','name'=>'type','type'=>'radio','validation'=>'required|integer|min:0','width'=>'col-sm-10','dataenum'=>'1|SO;2|QUO'];
- //$this->form[] = ['label'=>'No SO/QUO','name'=>'request_number','type'=>'text','validation'=>'required|min:1','width'=>'col-sm-10'];
- //$this->form[] = ['label'=>'Technical Support','name'=>'request_by','type'=>'select2','validation'=>'required|integer|min:0','width'=>'col-sm-10','datatable'=>'cms_users,name'];
- //$this->form[] = ['label'=>'Owner','name'=>'owner_id','type'=>'select2','validation'=>'required','width'=>'col-sm-10','datatable'=>'cpi_mst_owner,owner_name'];
- //$this->form[] = ['label'=>'Customer','name'=>'customer_ids[]','type'=>'select2','width'=>'col-sm-10','datatable'=>'cpi_mst_customer,name'];
- //$this->form[] = ['label'=>'Jumlah Permohonan','name'=>'amount','type'=>'number','validation'=>'required|integer','width'=>'col-sm-10'];
- //$this->form[] = ['label'=>'Jatuh Tempo','name'=>'due_date','type'=>'number','validation'=>'required|integer','width'=>'col-sm-10'];
- //$this->form[] = ['label'=>'Sales Kemarin','name'=>'sales_before','type'=>'number','validation'=>'required|integer','width'=>'col-sm-10'];
- //$this->form[] = ['label'=>'Transfer Kemarin','name'=>'transfer_before','type'=>'number','validation'=>'required|integer','width'=>'col-sm-10'];
- //$this->form[] = ['label'=>'Credit Limit Total','name'=>'credit_limit_total','type'=>'number','validation'=>'required|integer','width'=>'col-sm-10'];
- //$this->form[] = ['label'=>'Credit Limit Digunakan','name'=>'credit_limit_used','type'=>'number','validation'=>'required|integer','width'=>'col-sm-10'];
- //$this->form[] = ['label'=>'Credit Term Waktu','name'=>'credit_term_waktu','type'=>'number','validation'=>'required|integer|min:0','width'=>'col-sm-10'];
- //$this->form[] = ['label'=>'Credit Term Berjalan','name'=>'credit_term_berjalan','type'=>'number','validation'=>'required|integer|min:0','width'=>'col-sm-10'];
- # OLD END FORM
- /*
- | ----------------------------------------------------------------------
- | Sub Module
- | ----------------------------------------------------------------------
- | @label = Label of action
- | @path = Path of sub module
- | @foreign_key = foreign key of sub table/module
- | @button_color = Bootstrap Class (primary,success,warning,danger)
- | @button_icon = Font Awesome Class
- | @parent_columns = Sparate with comma, e.g : name,created_at
- |
- */
- $this->sub_module = array();
- /*
- | ----------------------------------------------------------------------
- | Add More Action Button / Menu
- | ----------------------------------------------------------------------
- | @label = Label of action
- | @url = Target URL, you can use field alias. e.g : [id], [name], [title], etc
- | @icon = Font awesome class icon. e.g : fa fa-bars
- | @color = Default is primary. (primary, warning, succecss, info)
- | @showIf = If condition when action show. Use field alias. e.g : [id] == 1
- |
- */
- $this->addaction[] = ['url'=>CRUDBooster::mainpath('detail/[id]'),'icon'=>'fa fa-eye','color'=>'primary'];
- $this->addaction[] = ['url'=>CRUDBooster::mainpath('edit/[id]'),'icon'=>'fa fa-pencil','color'=>'success','showIf'=>"[status] == '1'"];
- $this->addaction[] = ['url'=>CRUDBooster::mainpath('delete/[id]'),'icon'=>'fa fa-trash','color'=>'warning','showIf'=>"[status] == '1'", 'confirmation' => true];
- /*
- | ----------------------------------------------------------------------
- | Add More Button Selected
- | ----------------------------------------------------------------------
- | @label = Label of action
- | @icon = Icon from fontawesome
- | @name = Name of button
- | Then about the action, you should code at actionButtonSelected method
- |
- */
- $this->button_selected = array();
- /*
- | ----------------------------------------------------------------------
- | Add alert message to this module at overheader
- | ----------------------------------------------------------------------
- | @message = Text of message
- | @type = warning,success,danger,info
- |
- */
- $this->alert = array();
- /*
- | ----------------------------------------------------------------------
- | Add more button to header button
- | ----------------------------------------------------------------------
- | @label = Name of button
- | @url = URL Target
- | @icon = Icon from Awesome.
- |
- */
- $this->index_button = array();
- /*
- | ----------------------------------------------------------------------
- | Customize Table Row Color
- | ----------------------------------------------------------------------
- | @condition = If condition. You may use field alias. E.g : [id] == 1
- | @color = Default is none. You can use bootstrap success,info,warning,danger,primary.
- |
- */
- $this->table_row_color = array();
- /*
- | ----------------------------------------------------------------------
- | You may use this bellow array to add statistic at dashboard
- | ----------------------------------------------------------------------
- | @label, @count, @icon, @color
- |
- */
- $this->index_statistic = array();
- /*
- | ----------------------------------------------------------------------
- | Add javascript at body
- | ----------------------------------------------------------------------
- | javascript code in the variable
- | $this->script_js = "function() { ... }";
- |
- */
- $this->script_js = "";
- /*
- | ----------------------------------------------------------------------
- | Include HTML Code before index table
- | ----------------------------------------------------------------------
- | html code to display it before index table
- | $this->pre_index_html = "<p>test</p>";
- |
- */
- $this->pre_index_html = null;
- /*
- | ----------------------------------------------------------------------
- | Include HTML Code after index table
- | ----------------------------------------------------------------------
- | html code to display it after index table
- | $this->post_index_html = "<p>test</p>";
- |
- */
- $this->post_index_html = null;
- /*
- | ----------------------------------------------------------------------
- | Include Javascript File
- | ----------------------------------------------------------------------
- | URL of your javascript each array
- | $this->load_js[] = asset("myfile.js");
- |
- */
- $this->load_js =
- [
- asset("js/request-form.js"),
- asset("js/request-index.js")
- ];
- /*
- | ----------------------------------------------------------------------
- | Add css style at body
- | ----------------------------------------------------------------------
- | css code in the variable
- | $this->style_css = ".style{....}";
- |
- */
- $this->style_css = "
- input[type=number]::-webkit-inner-spin-button,
- input[type=number]::-webkit-outer-spin-button {
- -webkit-appearance: none;
- margin: 0;
- }
- ";
- /*
- | ----------------------------------------------------------------------
- | Include css File
- | ----------------------------------------------------------------------
- | URL of your css each array
- | $this->load_css[] = asset("myfile.css");
- |
- */
- $this->load_css = array();
- }
- /*
- | ----------------------------------------------------------------------
- | Hook for button selected
- | ----------------------------------------------------------------------
- | @id_selected = the id selected
- | @button_name = the name of button
- |
- */
- public function actionButtonSelected($id_selected, $button_name)
- {
- //Your code here
- }
- /*
- | ----------------------------------------------------------------------
- | Hook for manipulate query of index result
- | ----------------------------------------------------------------------
- | @query = current sql query
- |
- */
- public function hook_query_index(&$query)
- {
- //Your code here
- }
- /*
- | ----------------------------------------------------------------------
- | Hook for manipulate row of index table html
- | ----------------------------------------------------------------------
- |
- */
- public function hook_row_index($column_index, &$column_value)
- {
- //Your code here
- }
- /*
- | ----------------------------------------------------------------------
- | Hook for manipulate data input before add data is execute
- | ----------------------------------------------------------------------
- | @arr
- |
- */
- public function hook_before_add(&$postdata)
- {
- //
- }
- /*
- | ----------------------------------------------------------------------
- | Hook for execute command after add public static function called
- | ----------------------------------------------------------------------
- | @id = last insert id
- |
- */
- public function hook_after_add($id)
- {
- //Your code here
- }
- /*
- | ----------------------------------------------------------------------
- | Hook for manipulate data input before update data is execute
- | ----------------------------------------------------------------------
- | @postdata = input post data
- | @id = current id
- |
- */
- public function hook_before_edit(&$postdata, $id)
- {
- //Your code here
- }
- /*
- | ----------------------------------------------------------------------
- | Hook for execute command after edit public static function called
- | ----------------------------------------------------------------------
- | @id = current id
- |
- */
- public function hook_after_edit($id)
- {
- //Your code here
- }
- /*
- | ----------------------------------------------------------------------
- | Hook for execute command before delete public static function called
- | ----------------------------------------------------------------------
- | @id = current id
- |
- */
- public function hook_before_delete($id)
- {
- //Your code here
- }
- /*
- | ----------------------------------------------------------------------
- | Hook for execute command after delete public static function called
- | ----------------------------------------------------------------------
- | @id = current id
- |
- */
- public function hook_after_delete($id)
- {
- //Your code here
- }
- public function customers($id)
- {
- $customerString = "";
- $customers = RequestCustomerModel::where('request_id', '=', $id)
- ->where('deleted', '!=', 1)
- ->get();
- if($customers->count() > 0){
- $i = 0;
- foreach($customers as $customer){
- $customerName = CustomerModel::find($customer->customer_id)->name;
- if($i++ < $customers->count()-1 && $customerName != null){
- $customerString = $customerString.$customerName.", ";
- } else if(true && $customerName != null){
- $customerString = $customerString.$customerName;
- }
- }
- return $customerString;
- } else{
- return "-";
- }
- }
- public function getIndex() {
- //First, Add an auth
- // if(!CRUDBooster::isView()) CRUDBooster::redirect(CRUDBooster::adminPath(),trans('crudbooster.denied_access'));
- //Create your own query
- $request = RequestModel::orderby('status','asc');
- $data = [];
- $data['page_title'] = 'Permohonan';
- $customerCombinedString = "";
- //--- Search's scripts start from here ---
- if(Request::get('q') != null){
- $query = Request::get('q');
- //mencari kesamaan pada kolom customer
- $customerId = CustomerModel::where('name', 'like', '%' . $query . '%')->first();
- $i = 0;
- if(isset($customerId)){
- $customers = RequestCustomerModel::where('customer_id', $customerId->id)
- ->where('deleted', '!=', 1)
- ->get();
- foreach($customers as $customer){
- $rc = $customer->request_id;
- $request = $request->orWhere('id', $rc);
- $data['customers'][$i++] = $this->customers($rc);
- }
- } else {
- $i = 0;
- foreach($request->get() as $row){
- $data['customers'][$i++] = $this->customers($row->id);
- }
- //mencari kesamaan pada kolom request_date, request_number, amount
- $request = $request->orWhere('request_date', 'like', '%' . date('Y-m-d H:i:s', strtotime($query)) . '%')
- ->orWhere('request_number', 'like', '%' . $query . '%')
- ->orWhere('amount', 'like', '%' . $query . '%');
- //mencari kesamaan pada kolom tipe
- if(strtoupper($query) == 'SO'){
- $request = $request->orWhere('type', REQUEST_TYPE_SO);
- } else if(strtoupper($query) == 'QUO'){
- $request = $request->orWhere('type', REQUEST_TYPE_QUO);
- }
- //mencari kesamaan pada kolom status
- if(stripos('permohonan baru', strtolower($query)) !== false){
- $request = $request->orWhere('status', REQUEST_STATUS_NEW);
- } else if(stripos('disetujui', strtolower($query)) !== false){
- $request = $request->orWhere('status', REQUEST_STATUS_APPROVED);
- } else if(stripos('ditolak', strtolower($query)) !== false){
- $request = $request->orWhere('status', REQUEST_STATUS_REJECTED);
- } else if(stripos('diteruskan', strtolower($query)) !== false){
- $request = $request->orWhere('status', REQUEST_STATUS_FORWARDED);
- }
- }
- } else {
- $i = 0;
- foreach($request->get() as $row){
- $data['customers'][$i++] = $this->customers($row->id);
- }
- //kondisi pilih owner sesuai ts
- if ($request->status == 2) {
- $data['approver'] = Employee::find($request->approved_by);
- } else if ($request->status == 3){
- $data['rejecter'] = Employee::find($request->rejected_by);
- } else if ($request->status == 1 && $request->forward_counter > 0){
- $data['forward_to'] = Employee::find($request->forwarded_to);
- }
- }
- //--- Search's scripts ended here ---
- //--- Filter's scripts starts here ---
- if(Request::get('filter') !== null){
- $filters = Request::get('filter');
- foreach($filters as $filter){
- if($filter == 1){
- $request->where('type', REQUEST_TYPE_SO);
- } else if($filter == 2){
- $request->orWhere('type', REQUEST_TYPE_QUO);
- } else if($filter == 3){
- $request->where('status', REQUEST_STATUS_NEW);
- } else if($filter == 4){
- $request->orWhere('status', REQUEST_STATUS_APPROVED);
- } else if($filter == 5){
- $request->orWhere('status', REQUEST_STATUS_REJECTED);
- } else if($filter == 6){
- $request->orWhere('status', REQUEST_STATUS_FORWARDED);
- }
- }
- }
- //--- Filter's scripts ended here ---
- $request = $request->orderby('status','asc')->paginate(10);
- $data['result'] = $request;
- //Create a view. Please use `cbView` method instead of view method from laravel.
- $this->cbView('Custom_CRUDBooster.request_index',$data);
- }
- public function getEdit($id)
- {
- $request = RequestModel::find($id);
- if($request->status != REQUEST_STATUS_NEW){
- CRUDBooster::redirect(CRUDBooster::adminPath(),"Anda tidak dapat merubah data ini!");
- }
- $data = [];
- $data['page_title'] = 'Edit Data';
- $data['row'] = $request;
- //Please use cbView method instead view method from laravel
- $this->cbView('crudbooster::default.form',$data);
- }
- public function getDetail($id){
- try {
- $data = [];
- $data['page_title'] = 'Detail Permohonan';
- $selectedData = RequestModel::find($id);
- if(isset($selectedData)) {
- $request_by = DB::table('cpi_mst_employee')->where('id', $selectedData->request_by)->first()->name;
- $owner = DB::table('cpi_mst_owner')->where('id', $selectedData->owner_id)->first()->owner_name;
- $selectedData->request_by = $request_by;
- $selectedData->owner_id = $owner;
- $selectedData->amount = "Rp.".number_format($selectedData->amount);
- $selectedData->due_date = "Rp.".number_format($selectedData->due_date);
- $selectedData->sales_before = "Rp.".number_format($selectedData->sales_before);
- $selectedData->transfer_before = "Rp.".number_format($selectedData->transfer_before);
- $customers = RequestCustomerModel::
- join('cpi_mst_customer', 'cpi_trx_request_customer.customer_id', '=', 'cpi_mst_customer.id')
- ->select('cpi_mst_customer.name')
- ->where('cpi_trx_request_customer.request_id', '=', $selectedData->id)
- ->where('cpi_trx_request_customer.deleted', '!=', 1)
- ->get();
- $data['data'] = $selectedData;
- $data['customers'] = $customers;
- //CRUDBooster auth
- if(!CRUDBooster::isView()){
- CRUDBooster::denyAccess();
- }
- $this->cbView('Custom_CRUDBooster.request_detail',$data);
- } else {
- Log::error('Data permohonan (request) tidak ditemukan!');
- return redirect()->back();
- }
- } catch (Exception $e) {
- Log::error('Terjadi error! Message: ' . $e->getMessage());
- return redirect()->back();
- }
- }
- public function postAddSave(){
- try {
- $request_id = RequestModel::create([
- 'request_number'=> Request::get('request_number'),
- 'request_date'=> Request::get('request_date'),
- 'request_by'=> (int)Request::get('request_by'),
- 'assignee_user_id'=> (int)Request::get('request_by'),
- 'owner_id' => (int)Request::get('owner_id'),
- 'type'=> (int)Request::get('type'),
- 'status'=>1,
- 'amount'=> Request::get('amount'),
- 'due_date'=> Request::get('due_date'),
- 'sales_before'=> Request::get('sales_before'),
- 'transfer_before'=> Request::get('transfer_before'),
- 'credit_limit_total'=> Request::get('credit_limit_total'),
- 'credit_limit_used'=> Request::get('credit_limit_used'),
- 'credit_term_waktu'=> Request::get('credit_term_waktu'),
- 'credit_term_berjalan'=> Request::get('credit_term_berjalan')
- ])->id;
- foreach(Request::get('customer_ids') as $customer_id){
- RequestCustomerModel::create([
- 'request_id' => $request_id,
- 'customer_id' => $customer_id,
- 'deleted' => 0
- ]);
- }
- return redirect('/admin/cpi_trx_request?m=5');
- } catch (\Exception $e) {
- return redirect()->back();
- }
- }
- public function postEditSave($id){
- $requestData = RequestModel::find($id);
- try {
- $requestData->request_number = Request::get('request_number');
- $requestData->request_date = Request::get('request_date');
- $requestData->request_by = Request::get('request_by');
- $requestData->owner_id = Request::get('owner_id');
- $requestData->type = Request::get('type');
- $requestData->status = 1;
- $requestData->amount = Request::get('amount');
- $requestData->due_date = Request::get('due_date');
- $requestData->sales_before = Request::get('sales_before');
- $requestData->transfer_before = Request::get('transfer_before');
- $requestData->credit_limit_total = Request::get('credit_limit_total');
- $requestData->credit_limit_used = Request::get('credit_limit_used');
- $requestData->credit_term_waktu = Request::get('credit_term_waktu');
- $requestData->credit_term_berjalan = Request::get('credit_term_berjalan');
- $requestData->save();
- if(Request::get('customer_ids') !== null){
- $requestcustomer = RequestCustomerModel::where('request_id', $id)->delete();
- foreach(Request::get('customer_ids') as $customer_id){
- RequestCustomerModel::create([
- 'request_id' => $id,
- 'customer_id' => $customer_id,
- 'deleted' => 0
- ]);
- }
- }
- if(Request::get('return_url')) {
- CRUDBooster::redirect(Request::get('return_url'),trans("crudbooster.alert_update_data_success"),'success');
- }else{
- if(Request::get('submit') == trans('crudbooster.button_save_more')) {
- CRUDBooster::redirect(CRUDBooster::mainpath('add'),trans("crudbooster.alert_update_data_success"),'success');
- }else{
- CRUDBooster::redirect(CRUDBooster::mainpath(),trans("crudbooster.alert_update_data_success"),'success');
- }
- }
- } catch (\Exception $e) {
- return redirect()->back();
- }
- }
- public function getDelete($id){
- $employee = RequestModel::find($id);
- $customers = RequestCustomerModel::where('request_id', $employee->id);
- if($customers !== null){
- $customers->delete();
- }
- $employee->delete();
- $url = Request::get('return_url')?:CRUDBooster::referer();
- CRUDBooster::redirect($url,trans("crudbooster.alert_delete_data_success"),'success');
- }
- //By the way, you can still create your own method in here... :)
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement