'id', 'label' => 'ID', 'type' => 'text', 'prefix' => 'A-' ], [ 'name' => 'check_state', 'label' => '審核狀態', 'type' => 'select_from_array', 'options' => ['1' => '未審核  ', '2' => '通過  〇', '3' => '未通過 ✖', '4' => '重覆資料(僅標記)'], ], [ 'name' => 'hospital_name', 'label' => '就醫院所', 'type' => 'text', ], [ 'name' => 'name', 'label' => '姓名', 'type' => 'text', ], [ 'name' => 'twid', 'label' => '身份證', 'type' => 'text', ], [ 'name' => 'phone', 'label' => '手機號碼', 'type' => 'text', ], [ 'name' => 'email', 'label' => 'Email', 'type' => 'text', ], [ 'name' => 'address', 'label' => '地址', 'type' => 'textarea', ], ]); $this->setupListOperation(); $this->disableUserConfiguration(); } /** * Define what happens when the List operation is loaded. * * @see https://backpackforlaravel.com/docs/crud-operation-list-entries * @return void */ protected function setupListOperation() { CRUD::filter('審核狀態') ->type('dropdown') ->values([ 1 => '未審核', 2 => '通過  〇', 3 => '未通過 ✖' ]) ->whenActive(function($value) { CRUD::addClause('where', 'check_state', $value); }); CRUD::filter('ID') ->type('text') ->whenActive(function($value) { CRUD::addClause('where', 'id', $value); }); CRUD::filter('就醫院所') ->type('text') ->whenActive(function($value) { CRUD::addClause('where', 'hospital_name', 'LIKE', "%$value%"); }); CRUD::filter('姓名') ->type('text') ->whenActive(function($value) { CRUD::addClause('where', 'name', 'LIKE', "%$value%"); }); $this->crud->addColumns([ [ 'name' => 'id', 'label' => '報名流水號', 'type' => 'text', 'value' => function($entry) { return 'C-'. str_pad($entry->id, 6, '0', STR_PAD_LEFT); } ], [ 'name' => 'created_at', 'label' => '登記時間', 'type' => 'datetime', 'format' => 'YYYY/MM/DD HH:mm:SS' ], [ 'name' => 'check_state', 'label' => '審核狀態', 'type' => 'select_from_array', 'options' => ['1' => '未審核  ', '2' => '通過  〇', '3' => '未通過 ✖', '4' => '重覆資料(僅標記)'], ], [ 'name' => 'twid', 'label' => '身份證', 'type' => 'text' ], [ 'name' => 'name', 'label' => '姓名', 'type' => 'text' ], [ 'name' => 'hospital_name', 'label' => '就醫院所', 'type' => 'text', ], ]); } /** * Define what happens when the Create operation is loaded. * * @see https://backpackforlaravel.com/docs/crud-operation-create * @return void */ protected function setupCreateOperation() { CRUD::setValidation(EventHealthAllowanceRequest::class); $this->crud->addFields([ [ 'name' => 'hospital_name', 'label' => '就醫院所', 'type' => 'text', ], [ 'name' => 'name', 'label' => '姓名', 'type' => 'text', ], [ 'name' => 'twid', 'label' => '身份證', 'type' => 'text', ], [ 'name' => 'phone', 'label' => '手機號碼', 'type' => 'text', ], [ 'name' => 'email', 'label' => 'Email', 'type' => 'text', ], [ 'name' => 'address', 'label' => '地址', 'type' => 'text', ], [ 'name' => 'check_state', 'label' => "審核狀態", 'type' => 'select_from_array', 'options' => ['1' => '未審核  ', '2' => '通過  〇', '3' => '未通過 ✖', '4' => '重覆資料(僅標記)'], 'allows_null' => false, 'default' => '1', ], [ 'name' => 'check_reson', 'label' => "審核回應(未通過原因)", 'type' => 'text', ], ]); } /** * Define what happens when the Update operation is loaded. * * @see https://backpackforlaravel.com/docs/crud-operation-update * @return void */ protected function setupUpdateOperation() { $this->setupCreateOperation(); CRUD::iframe('record_card_img_src', '記錄小卡', [ 'url' => function ($crud) { $entry = $crud->getCurrentEntry(); $path = str_replace("uploads/", "", $entry->record_card_img_src); return $path ? route('storage.serve', $path) : ""; }, 'width' => '400px', 'height' => '300px', 'extra_attributes' => [ 'sandbox' => 'allow-same-origin allow-scripts allow-popups', // Security: Restrict iframe 'allow' => 'fullscreen', ], 'hint' => '', ]); CRUD::iframe('twid_front_img_src', '身份證正面', [ 'url' => function ($crud) { $entry = $crud->getCurrentEntry(); $path = str_replace("uploads/", "", $entry->twid_front_img_src); return $path ? route('storage.serve', $path) : ""; }, 'width' => '400px', 'height' => '300px', 'extra_attributes' => [ 'sandbox' => 'allow-same-origin allow-scripts allow-popups', // Security: Restrict iframe 'allow' => 'fullscreen', ], 'hint' => '', ]); CRUD::iframe('twid_back_img_src', '身份證反面', [ 'url' => function ($crud) { $entry = $crud->getCurrentEntry(); $path = str_replace("uploads/", "", $entry->twid_back_img_src); return $path ? route('storage.serve', $path) : ""; }, 'width' => '400px', 'height' => '300px', 'extra_attributes' => [ 'sandbox' => 'allow-same-origin allow-scripts allow-popups', // Security: Restrict iframe 'allow' => 'fullscreen', ], 'hint' => '', ]); CRUD::iframe('exam_1st_img_src', '檢驗檢查報告1', [ 'url' => function ($crud) { $entry = $crud->getCurrentEntry(); $path = str_replace("uploads/", "", $entry->exam_1st_img_src); return $path ? route('storage.serve', $path) : ""; }, 'width' => '400px', 'height' => '300px', 'extra_attributes' => [ 'sandbox' => 'allow-same-origin allow-scripts allow-popups', // Security: Restrict iframe 'allow' => 'fullscreen', ], 'hint' => '', ]); CRUD::iframe('exam_2nd_img_src', '檢驗檢查報告2', [ 'url' => function ($crud) { $entry = $crud->getCurrentEntry(); $path = str_replace("uploads/", "", $entry->exam_2nd_img_src); return $path ? route('storage.serve', $path) : ""; }, 'width' => '400px', 'height' => '300px', 'extra_attributes' => [ 'sandbox' => 'allow-same-origin allow-scripts allow-popups', // Security: Restrict iframe 'allow' => 'fullscreen', ], 'hint' => '', ]); } public function update() { $entry = $this->crud->getCurrentEntry(); $org_check_state = $entry->check_state; // do something before validation, before save, before everything $response = $this->traitUpdate(); // do something after save $entry = $this->crud->getCurrentEntry(); if ($entry->check_state != $org_check_state) { switch($entry->check_state) { case '2': //過通 try { Mail::to($entry->email)->send(new EventNotifyMail([ "title" => "反轉代謝新人生 皮蛇疫苗加碼補 審核通過!", "body" => "恭喜您審核通過!" ."\n\n登記資料:" ."\n流水號: C-".str_pad($entry->id, 6, '0', STR_PAD_LEFT) ."\n就醫院所:".$entry->hospital_name ."\n姓名:".$entry->name ."\n身份證字號:".substr($entry->twid,0,2)."xxxx".substr($entry->twid,-4) ."\n行動電話:".$entry->phone ."\n電子信箱:".$entry->email ."\n收件地址:".$entry->address ."\n\n補助方式將後續通知。" , ])); } catch (Exception $ex) { } break; case '3': //未通過 try { Mail::to($entry->email)->send(new EventNotifyMail([ "title" => "反轉代謝新人生 皮蛇疫苗加碼補 未通過審核!", "body" => "抱歉,您的審核未通過!" ."\n請依以下理由重新上活動網站登記" ."\n理由:".$entry->check_reson ."\n\n登記資料:" ."\n流水號: C-".str_pad($entry->id, 6, '0', STR_PAD_LEFT) ."\n就醫院所:".$entry->hospital_name ."\n姓名:".$entry->name ."\n身份證字號:".substr($entry->twid,0,2)."xxxx".substr($entry->twid,-4) ."\n行動電話:".$entry->phone ."\n電子信箱:".$entry->email ."\n收件地址:".$entry->address , ])); } catch (Exception $ex) { } break; } } return $response; } }