You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

108 lines
4.3 KiB

<?php
namespace App\Services;
use App\Models\ViolationParking;
use Illuminate\Support\Facades\DB;
use App\Class\LogWriter;
use Illuminate\Support\Facades\Auth;
use Carbon\Carbon;
class ViolationParkingService
{
public function review(ViolationParking $vpk, array $data, $user): array
{
DB::beginTransaction();
try {
$logData = [];
switch ($data['processcheck']) {
case 0:
// 編輯案件
$vpk->carnumber = $data['carnumber'] ?? $vpk->carnumber;
$vpk->violationtype = $data['violationtype'] ?? $vpk->violationtype;
$vpk->cartype = $data['cartype'] ?? $vpk->cartype;
$vpk->violationcode = $data['viocode'] ?? $vpk->violationcode;
$logData = [
'action' => 'edit',
'action_detail' => '編輯案件',
'ip' => request()->ip(),
'remark' => "編輯違停案件: {$vpk->carnumber} ,案件日期: {$vpk->datatime}",
];
break;
case 1:
// 舉發
$carrepeat = ViolationParking::where('carnumber', $data['carnumber'] ?? $vpk->carnumber)
->where('id', '<>', $vpk->id)
->where('processcheck', 1)
->whereBetween('datatime', [
Carbon::parse($vpk->datatime)->subDay()->toDateTimeString(),
Carbon::parse($vpk->datatime)->addDay()->toDateTimeString()
])->get();
if ($carrepeat->count() > 0) {
$vpk->processcheck = 2;
$vpk->unreportreason = '該車牌24小時內已被舉發過!!';
} else {
$vpk->processcheck = 1;
}
$vpk->carnumber = $data['carnumber'] ?? $vpk->carnumber;
$vpk->violationtype = $data['violationtype'] ?? $vpk->violationtype;
$vpk->cartype = $data['cartype'] ?? $vpk->cartype;
$vpk->violationcode = $data['viocode'] ?? $vpk->violationcode;
$logData = [
'action' => 'review',
'action_detail' => $vpk->processcheck === 1 ? '舉發案件' : '不舉發案件',
'ip' => request()->ip(),
'remark' => "舉發違停案件: {$vpk->carnumber} ,案件日期: {$vpk->datatime}",
];
break;
case 2:
// 不舉發
$vpk->carnumber = $data['carnumber'] ?? $vpk->carnumber;
$vpk->violationtype = $data['violationtype'] ?? $vpk->violationtype;
$vpk->cartype = $data['cartype'] ?? $vpk->cartype;
$vpk->unreportreason = $data['unreportreason'] ?? $vpk->unreportreason;
$vpk->processcheck = 2;
$logData = [
'action' => 'review',
'action_detail' => '不舉發案件',
'ip' => request()->ip(),
'remark' => "不舉發違停案件: {$vpk->carnumber} ,案件日期: {$vpk->datatime}",
];
break;
case 3:
// 還原
$vpk->violationcode = null;
$vpk->unreportreason = '';
$vpk->processcheck = 0;
$logData = [
'action' => 'reduction',
'action_detail' => '還原案件',
'ip' => request()->ip(),
'remark' => "還原違停案件: {$vpk->carnumber} ,案件日期: {$vpk->datatime}",
];
break;
}
$vpk->jsoncheck = $user->account;
$vpk->save();
LogWriter::writeLog($logData, 'api');
DB::commit();
return ['success' => $logData['remark']];
} catch (\Exception $e) {
DB::rollBack();
return ['error' => '系統錯誤'];
}
}
}