eventManagementDb = new Event();
$this->itemManagementDb = new Item();
$this->submitManagementDb = new Submit();
}
public function getEvents()
{
$events = $this->eventManagementDb
->select([
'id',
\DB::raw("CONCAT(date_begin, ' ~ ', date_final, ': ', name) as name"),
])
->get()
->toArray();
// 整理返回值並返回
return $events;
}
public function getItems($eid)
{
$items = $this->itemManagementDb
->select([
'id',
'name',
])
->where('eid', $eid)
->get()
->toArray();
// 整理返回值並返回
return $items;
}
public function getSubmits(
&$cnt = 0,
$orderColumn,
$orderDir,
$start,
$length,
$searchValue,
$submitDateStart,
$submitDateFinal,
$iid,
$searchcol,
$duplicate
)
{
// 是否合併
$d = '';
if ($duplicate == GeneralConst::DUPLICATE_POLICY_MAX_BY_ID) {
$d = $this->submitManagementDb
->select([
'iid',
'identity',
\DB::raw("MAX(id) as id"),
])
->groupby('iid', 'identity')->get();
if ($d) {
$dd = $d->toArray();
$d = [];
foreach ($dd as $i) $d[] = $i['id'];
} else {
$d = [];
}
}
$submits = $this->submitManagementDb
->leftJoin('items', 'submits.iid', '=', 'items.id')
->leftJoin('events', 'items.eid', '=', 'events.id')
->select([
'submits.id',
\DB::raw("events.name as event_name"),
\DB::raw("items.name as item_name"),
\DB::raw("FROM_BASE64(AES_DECRYPT(UNHEX(submits.name), \"" . env('KK') . "\")) as name"),
\DB::raw("FROM_BASE64(AES_DECRYPT(UNHEX(submits.identity), \"" . env('KK') . "\")) as identity"),
\DB::raw("FROM_BASE64(AES_DECRYPT(UNHEX(submits.add_host), \"" . env('KK') . "\")) as add_host"),
\DB::raw("FROM_BASE64(AES_DECRYPT(UNHEX(submits.add_contact), \"" . env('KK') . "\")) as add_contact"),
\DB::raw("FROM_BASE64(AES_DECRYPT(UNHEX(submits.tel), \"" . env('KK') . "\")) as tel"),
\DB::raw("CASE items.is_ide WHEN '" . GeneralConst::PHOTO_YES . "' THEN CONCAT('下載') ELSE '' END as " . GeneralConst::$appendixMap[ GeneralConst::APPENDIX_IDENTITY_FRONT ]['sql']),
\DB::raw("CASE items.is_ide WHEN '" . GeneralConst::PHOTO_YES . "' THEN CONCAT('下載') ELSE '' END as " . GeneralConst::$appendixMap[ GeneralConst::APPENDIX_IDENTITY_BACK ]['sql']),
\DB::raw("CASE items.id_acc WHEN '" . GeneralConst::PHOTO_YES . "' THEN CONCAT('下載') ELSE '' END as " . GeneralConst::$appendixMap[ GeneralConst::APPENDIX_PASSBOOK ]['sql']),
\DB::raw("CONCAT('下載') as " . GeneralConst::$appendixMap[ GeneralConst::APPENDIX_DECLARE_PDF ]['sql']),
'submits.cdate',
]);
// 過濾搜尋條件
$submits = $submits->where('submits.cdate', '>=', $submitDateStart . ' 00:00:00');
$submits = $submits->where('submits.cdate', '<=', $submitDateFinal . ' 23:59:59');
$submits = $submits->where('submits.iid', $iid);
if ($duplicate == GeneralConst::DUPLICATE_POLICY_MAX_BY_ID) {
$submits = $submits->whereIn('submits.id', $d);
}
$submits = $submits->whereRaw("(
FROM_BASE64(AES_DECRYPT(UNHEX(submits.name), \"" . env('KK') . "\")) like '%" . $searchcol . "%'
OR FROM_BASE64(AES_DECRYPT(UNHEX(submits.identity), \"" . env('KK') . "\")) like '%" . $searchcol . "%'
OR FROM_BASE64(AES_DECRYPT(UNHEX(submits.add_host), \"" . env('KK') . "\")) like '%" . $searchcol . "%'
OR FROM_BASE64(AES_DECRYPT(UNHEX(submits.add_contact), \"" . env('KK') . "\")) like '%" . $searchcol . "%'
OR FROM_BASE64(AES_DECRYPT(UNHEX(submits.tel), \"" . env('KK') . "\")) like '%" . $searchcol . "%'
)");
// 取總筆數
$cnt = $submits->count();
// 排序
$submits = $submits
->orderByRaw((int)$orderColumn . ' ' . $orderDir);
// 彙整
// 分頁
$submits = $submits
->skip($start)->take($length);
// 實際取資料
$submits = $submits
->get()
->toArray();
// 整理返回值並返回
return $submits;
}
public function getExportSubmits(
$submitDateStart,
$submitDateFinal,
$iid,
$searchcol,
$duplicate
)
{
// 是否合併
$d = '';
if ($duplicate == GeneralConst::DUPLICATE_POLICY_MAX_BY_ID) {
$d = $this->submitManagementDb
->select([
'iid',
'identity',
\DB::raw("MAX(id) as id"),
])
->groupby('iid', 'identity')->get();
if ($d) {
$dd = $d->toArray();
$d = [];
foreach ($dd as $i) $d[] = $i['id'];
} else {
$d = [];
}
}
$submits = $this->submitManagementDb
->leftJoin('items', 'submits.iid', '=', 'items.id')
->leftJoin('events', 'items.eid', '=', 'events.id')
->select([
'submits.id',
\DB::raw("events.name as event_name"),
\DB::raw("items.name as item_name"),
\DB::raw("FROM_BASE64(AES_DECRYPT(UNHEX(submits.name), \"" . env('KK') . "\")) as name"),
\DB::raw("FROM_BASE64(AES_DECRYPT(UNHEX(submits.identity), \"" . env('KK') . "\")) as identity"),
\DB::raw("FROM_BASE64(AES_DECRYPT(UNHEX(submits.add_host), \"" . env('KK') . "\")) as add_host"),
\DB::raw("FROM_BASE64(AES_DECRYPT(UNHEX(submits.add_contact), \"" . env('KK') . "\")) as add_contact"),
\DB::raw("FROM_BASE64(AES_DECRYPT(UNHEX(submits.tel), \"" . env('KK') . "\")) as tel"),
\DB::raw("submits." . GeneralConst::$appendixMap[ GeneralConst::APPENDIX_IDENTITY_FRONT ]['sql'] . " as " . GeneralConst::$appendixMap[ GeneralConst::APPENDIX_IDENTITY_FRONT ]['sql']),
\DB::raw("submits." . GeneralConst::$appendixMap[ GeneralConst::APPENDIX_IDENTITY_BACK ]['sql'] . " as " . GeneralConst::$appendixMap[ GeneralConst::APPENDIX_IDENTITY_BACK ]['sql']),
\DB::raw("submits." . GeneralConst::$appendixMap[ GeneralConst::APPENDIX_PASSBOOK ]['sql'] . " as " . GeneralConst::$appendixMap[ GeneralConst::APPENDIX_PASSBOOK ]['sql']),
\DB::raw("submits." . GeneralConst::$appendixMap[ GeneralConst::APPENDIX_DECLARE_PDF ]['sql'] . " as " . GeneralConst::$appendixMap[ GeneralConst::APPENDIX_DECLARE_PDF ]['sql']),
'submits.cdate',
]);
// 過濾搜尋條件
$submits = $submits->where('submits.cdate', '>=', $submitDateStart . ' 00:00:00');
$submits = $submits->where('submits.cdate', '<=', $submitDateFinal . ' 23:59:59');
$submits = $submits->where('submits.iid', $iid);
if ($duplicate == GeneralConst::DUPLICATE_POLICY_MAX_BY_ID) {
$submits = $submits->whereIn('submits.id', $d);
}
$submits = $submits->whereRaw("(
FROM_BASE64(AES_DECRYPT(UNHEX(submits.name), \"" . env('KK') . "\")) like '%" . $searchcol . "%'
OR FROM_BASE64(AES_DECRYPT(UNHEX(submits.identity), \"" . env('KK') . "\")) like '%" . $searchcol . "%'
OR FROM_BASE64(AES_DECRYPT(UNHEX(submits.add_host), \"" . env('KK') . "\")) like '%" . $searchcol . "%'
OR FROM_BASE64(AES_DECRYPT(UNHEX(submits.add_contact), \"" . env('KK') . "\")) like '%" . $searchcol . "%'
OR FROM_BASE64(AES_DECRYPT(UNHEX(submits.tel), \"" . env('KK') . "\")) like '%" . $searchcol . "%'
)");
// 實際取資料
$submits = $submits
->get()
->toArray();
// 整理返回值並返回
return $submits;
}
public function getExcel($titles = [], $datas = [], $fileName = 'simple')
{
$spreadsheet = new Spreadsheet();
ini_set('memory_limit', '1024M');
ini_set("max_execution_time", "600");
$spreadsheet->getActiveSheet()->fromArray($titles, null, 'A1');
$spreadsheet->getActiveSheet()->fromArray($datas, null, 'A2');
$writer = IOFactory::createWriter($spreadsheet, 'Xlsx');
$writer->save($fileName);
}
}