123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217 |
- <?php
-
- namespace App\Http\Services\Backend\DataManagement;
-
- use App\Http\Services\ConstDef\GeneralConst;
- use App\Models\Web\Event;
- use App\Models\Web\Item;
- use App\Models\Web\Submit;
- use PhpOffice\PhpSpreadsheet\IOFactory;
- use PhpOffice\PhpSpreadsheet\Spreadsheet;
-
- class SubmitManagementService
- {
- // 相關私有 model 調用器宣告
- private $eventManagementDb;
- private $itemManagementDb;
- private $submitManagementDb;
-
- public function __construct()
- {
- date_default_timezone_set("Asia/Taipei");
- // 建構 model 調用器
- $this->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('<a href=\"/', submits." . GeneralConst::$appendixMap[ GeneralConst::APPENDIX_IDENTITY_FRONT ]['sql'] . ", '\" target='\"_blank\"'>下載</a>') ELSE '' END as " . GeneralConst::$appendixMap[ GeneralConst::APPENDIX_IDENTITY_FRONT ]['sql']),
- \DB::raw("CASE items.is_ide WHEN '" . GeneralConst::PHOTO_YES . "' THEN CONCAT('<a href=\"/', submits." . GeneralConst::$appendixMap[ GeneralConst::APPENDIX_IDENTITY_BACK ]['sql'] . ", '\" target='\"_blank\"'>下載</a>') ELSE '' END as " . GeneralConst::$appendixMap[ GeneralConst::APPENDIX_IDENTITY_BACK ]['sql']),
- \DB::raw("CASE items.id_acc WHEN '" . GeneralConst::PHOTO_YES . "' THEN CONCAT('<a href=\"/', submits." . GeneralConst::$appendixMap[ GeneralConst::APPENDIX_PASSBOOK ]['sql'] . ", '\" target='\"_blank\"'>下載</a>') ELSE '' END as " . GeneralConst::$appendixMap[ GeneralConst::APPENDIX_PASSBOOK ]['sql']),
- \DB::raw("CONCAT('<a class=\"dl\" href=\"/', submits." . GeneralConst::$appendixMap[ GeneralConst::APPENDIX_DECLARE_PDF ]['sql'] . ", '\" target='\"_blank\"'>下載</a>') 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);
- }
-
- }
|