'id',
'label' => 'ID',
'type' => 'text',
'prefix' => 'A-'
],
[
'name' => 'check_state',
'label' => '審核狀態',
'type' => 'select_from_array',
'options' => ['1' => '未審核 ', '2' => '通過 〇', '3' => '未通過 ✖', '4' => '重覆資料(僅標記)'],
],
[
'name' => 'disease_type',
'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('疾病類別')
->type('dropdown')
->values([
1 => '代謝症候群',
2 => '糖尿病',
3 => '初期慢性腎臟病',
4 => '糖尿病及初期慢性腎臟病'
])
->whenActive(function($value) {
CRUD::addClause('where', 'disease_type', $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 'B-'. 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' => 'disease_type',
'label' => '疾病類別',
'type' => 'select_from_array',
'options' => ['1' => '代謝症候群', '2' => '糖尿病', '3' => '初期慢性腎臟病', '4' => '糖尿病及初期慢性腎臟病'],
],
[
'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(EventImprovedHealthRequest::class);
$this->crud->addFields([
[
'name' => 'disease_type',
'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' => '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_img_src', '檢查報告', [
'url' => function ($crud) {
$entry = $crud->getCurrentEntry();
$path = str_replace("uploads/", "", $entry->exam_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('exam2_img_src', '檢查報告2', [
'url' => function ($crud) {
$entry = $crud->getCurrentEntry();
$path = str_replace("uploads/", "", $entry->exam2_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();
$diseaseTypes = ['1' => '代謝症候群', '2' => '糖尿病', '3' => '初期慢性腎臟病', '4' => '糖尿病及初期慢性腎臟病'];
if ($entry->check_state != $org_check_state) {
switch($entry->check_state) {
case '2': //過通
try {
Mail::to($entry->email)->send(new EventNotifyMail([
"title" => "健康達標GO 大獎汽車不是夢 審核通過!",
"body" => "恭喜您審核通過!"
."\n\n登記資料:"
."\n流水號: B-".str_pad($entry->id, 6, '0', STR_PAD_LEFT)
."\n疾病類別:".$diseaseTypes[$entry->disease_type]
."\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抽獎說明:本活動將於10月抽出得獎名單並公告於「活動網站/最新消息」及「桃園市政府衛生局網站/訊息公告/最新消息」。"
,
]));
} catch (Exception $ex) {
}
break;
case '3': //未通過
try {
Mail::to($entry->email)->send(new EventNotifyMail([
"title" => "健康達標GO 大獎汽車不是夢 審核未通過!",
"body" => "抱歉,您的審核未通過!"
."\n請依以下理由重新上活動網站登記"
."\n理由:".$entry->check_reson
."\n\n登記資料:"
."\n流水號: B-".str_pad($entry->id, 6, '0', STR_PAD_LEFT)
."\n疾病類別:".$diseaseTypes[$entry->disease_type]
."\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;
}
}