diff --git a/app/Exports/V3/RoadObservation/ComplaintsReport.php b/app/Exports/V3/RoadObservation/ComplaintsReport.php index e8012634..4484b4b0 100644 --- a/app/Exports/V3/RoadObservation/ComplaintsReport.php +++ b/app/Exports/V3/RoadObservation/ComplaintsReport.php @@ -61,7 +61,7 @@ class ComplaintsReport implements FromView, WithEvents, ShouldAutoSize, WithDraw $drawing2->setHeight(50); $drawing2->setOffsetX(5); $drawing2->setOffsetY(5); - $drawing2->setCoordinates('q1'); + $drawing2->setCoordinates('J1'); return [$drawing, $drawing2]; } } diff --git a/app/Http/Controllers/V3/Dashboard/Accident/AccidentReceiptController.php b/app/Http/Controllers/V3/Dashboard/Accident/AccidentReceiptController.php index a871ca0b..f4a5900b 100644 --- a/app/Http/Controllers/V3/Dashboard/Accident/AccidentReceiptController.php +++ b/app/Http/Controllers/V3/Dashboard/Accident/AccidentReceiptController.php @@ -80,11 +80,8 @@ class AccidentReceiptController extends Controller 'accident_type_fa' => DailyAccidentSettings::query()->where('type', 'accident_type')->where('name', $request->accident_type)->first()->value, 'way_id' => $nominatimService->get_way_id_from_nominatim($request->lat, $request->lng), 'report_base' => $request->report_base, - 'police_file' => $request->report_base ? null : FileFacade::save($request->file('police_file'), 'receipts_files/'), 'police_serial' => $request->police_serial ?? null, 'police_file_date' => $request->police_file_date ?? null, - 'damage_picture1' => FileFacade::save($request->file('damage_picture1'), 'receipts_files/'), - 'damage_picture2' => FileFacade::save($request->file('damage_picture2'), 'receipts_files/'), 'status' => AccidentStates::BEDON_EGHDAM->value, 'status_fa' => AccidentStates::name(AccidentStates::BEDON_EGHDAM->value), ]; @@ -109,6 +106,10 @@ class AccidentReceiptController extends Controller $accidentData['sum'] = $sum; $accident = Accident::query()->create($accidentData); + $accident->damage_picture1 = FileFacade::save($request->file('damage_picture1'), "receipts_files/{$accident->id}"); + $accident->damage_picture2 = FileFacade::save($request->file('damage_picture2'), "receipts_files/{$accident->id}"); + $accident->police_file = $request->report_base ? null : FileFacade::save($request->file('police_file'), "receipts_files/{$accident->id}"); + $accident->save(); $accident->damages()->attach($damageData); @@ -131,6 +132,7 @@ class AccidentReceiptController extends Controller $city = City::query()->where('id', '=', $request->city_id)->first(); $accidentData = [ + 'is_foreign' => $request->is_foreign, 'province_id' => $province->id, 'province_fa' => $province->name_fa, 'city_id' => $city->id, @@ -157,8 +159,8 @@ class AccidentReceiptController extends Controller FileFacade::delete($accident->police_file, true); } - if (!$request->report_base && $request->has('police_file')) { - FileFacade::delete($accident->police_file, true); + if ($request->has('police_file')) { + if ($accident->police_file) {FileFacade::delete($accident->police_file, true);} $accidentData['police_file'] = FileFacade::save($request->file('police_file'), "receipts_files/{$accident->id}/"); } @@ -206,10 +208,9 @@ class AccidentReceiptController extends Controller */ public function destroy(Accident $accident): JsonResponse { - throw_if($accident->status != AccidentStates::BEDON_EGHDAM->value, new ProhibitedAction('قابلیت حذف در این مرحله وجود ندارد')); - FileFacade::deleteDirectory('receipts_files/' . $accident->id); + FileFacade::deleteDirectory("receipts_files/{$accident->id}"); DB::transaction(function () use ($accident) { @@ -261,13 +262,14 @@ class AccidentReceiptController extends Controller return $this->successResponse(); } + /** + * @throws Throwable + */ public function submitInvoice(Accident $accident, PaymentService $paymentService): JsonResponse { $final_amount = $accident->sum - ($accident->deposit_insurance_amount + $accident->deposit_daghi_amount); - if ($final_amount < 0) { - return $this->errorResponse('error'); - } + throw_if($final_amount < 0, new ProhibitedAction('مبالغ داغی و بیمه از مبلغ کل بیشتر می باشد.')); $bill_code = $paymentService->invoiceBillApi($accident->driver_national_code, $final_amount); diff --git a/app/Http/Controllers/V3/Dashboard/RoadObservation/OperatorController.php b/app/Http/Controllers/V3/Dashboard/RoadObservation/OperatorController.php index 6e701d44..bd3033ee 100644 --- a/app/Http/Controllers/V3/Dashboard/RoadObservation/OperatorController.php +++ b/app/Http/Controllers/V3/Dashboard/RoadObservation/OperatorController.php @@ -23,6 +23,7 @@ use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; use Maatwebsite\Excel\Facades\Excel; use Symfony\Component\HttpFoundation\BinaryFileResponse; +use Throwable; class OperatorController { @@ -40,11 +41,17 @@ class OperatorController return Excel::download(new OperatorCartableReport($data['data']), $name); } + /** + * @throws Throwable + */ public function complaintsIndex(Request $request, OperatorService $operatorService): JsonResponse { return response()->json($operatorService->complaintsIndex($request)); } + /** + * @throws Throwable + */ public function complaintsReport(Request $request, OperatorService $operatorService): BinaryFileResponse { $name = 'گزارش از رسیدگی به شکایات واکنش سریع ' . verta()->now()->format('Y-m-d H:i') . '.xlsx'; @@ -181,24 +188,26 @@ class OperatorController { $province = Province::query()->find($request->province_id); - RoadObservationHistory::query()->create([ - 'id' => $roadObserved->id, - 'user_id' => auth()->user()->id, - 'action' => 'refer', - 'description' => $request->refer_description, - 'from_edareh' => $roadObserved->edarate_shahri_id, - 'to_edareh' => $request->edarate_shahri_id, - 'from_province' => $roadObserved->province_id, - 'to_province' => $province->id - ]); + DB::transaction(function () use ($roadObserved, $request, $province) { + RoadObservationHistory::query()->create([ + 'id' => $roadObserved->id, + 'user_id' => auth()->user()->id, + 'action' => 'refer', + 'description' => $request->refer_description, + 'from_edareh' => $roadObserved->edarate_shahri_id, + 'to_edareh' => $request->edarate_shahri_id, + 'from_province' => $roadObserved->province_id, + 'to_province' => $province->id + ]); - $roadObserved->update([ - 'edarate_shahri_id' => $request->edarate_shahri_id, - 'province_id' => $province->id, - 'province_fa' => $province->name_fa, - ]); + $roadObserved->update([ + 'edarate_shahri_id' => $request->edarate_shahri_id, + 'province_id' => $province->id, + 'province_fa' => $province->name_fa, + ]); - auth()->user()->addActivityComplete(1037); + auth()->user()->addActivityComplete(1037); + }); return $this->successResponse(); } diff --git a/app/Http/Controllers/V3/Dashboard/RoadObservation/SupervisorController.php b/app/Http/Controllers/V3/Dashboard/RoadObservation/SupervisorController.php index 5af4756c..02e48f63 100644 --- a/app/Http/Controllers/V3/Dashboard/RoadObservation/SupervisorController.php +++ b/app/Http/Controllers/V3/Dashboard/RoadObservation/SupervisorController.php @@ -13,6 +13,7 @@ use App\Services\Cartables\RoadObservation\SupervisorService; use App\Services\Cartables\RoadObservationTableService; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; +use Illuminate\Support\Facades\DB; use Maatwebsite\Excel\Facades\Excel; use Symfony\Component\HttpFoundation\BinaryFileResponse; @@ -29,16 +30,18 @@ class SupervisorController { $statusFa = $request->verify == 1 ? 'تایید شده' : 'عدم تایید'; - $roadObserved->update([ - 'status' => $request->verify, - 'status_fa' => $statusFa, - 'supervisor_id' => auth()->user()->id, - 'supervisor_name' => auth()->user()->name, - 'supervisor_description' => $request->description, - 'supervising_time' => now(), - ]); + DB::transaction(function () use ($request, $statusFa, $roadObserved) { + $roadObserved->update([ + 'status' => $request->verify, + 'status_fa' => $statusFa, + 'supervisor_id' => auth()->user()->id, + 'supervisor_name' => auth()->user()->name, + 'supervisor_description' => $request->description, + 'supervising_time' => now(), + ]); - auth()->user()->addActivityComplete(1138); + auth()->user()->addActivityComplete(1138); + }); return $this->successResponse(); } @@ -54,33 +57,35 @@ class SupervisorController public function restore(RestoreRequest $request, RoadObserved $roadObserved): JsonResponse { if ($roadObserved->image_before) { - FileFacade::delete($roadObserved->image_before); + FileFacade::delete($roadObserved->image_before, true); } if ($roadObserved->image_after) { - FileFacade::delete($roadObserved->image_after); + FileFacade::delete($roadObserved->image_after, true); } - $roadObserved->update([ - 'image_before' => null, - 'image_after' => null, - 'rms_last_activity' => null, - 'rms_last_activity_fa' => null, - 'updated_at_fa' => null, - 'updated_at' => null, - 'rms_status' => 0, - 'status' => null, - 'status_fa' => null, - ]); + DB::transaction(function () use ($request, $roadObserved) { + $roadObserved->update([ + 'image_before' => null, + 'image_after' => null, + 'rms_last_activity' => null, + 'rms_last_activity_fa' => null, + 'updated_at_fa' => null, + 'updated_at' => null, + 'rms_status' => 0, + 'status' => null, + 'status_fa' => null, + ]); - RoadObservationHistory::query()->create([ - 'id' => $roadObserved->id, - 'user_id' => auth()->user()->id, - 'action' => 'restore', - 'description' => $request->restore_description, - ]); + RoadObservationHistory::query()->create([ + 'id' => $roadObserved->id, + 'user_id' => auth()->user()->id, + 'action' => 'restore', + 'description' => $request->restore_description, + ]); - auth()->user()->addActivityComplete(1141); + auth()->user()->addActivityComplete(1141); + }); return $this->successResponse(); } diff --git a/app/Http/Requests/V3/AccidentReceipt/UpdateRequest.php b/app/Http/Requests/V3/AccidentReceipt/UpdateRequest.php index c73a9bc8..134bb4a0 100644 --- a/app/Http/Requests/V3/AccidentReceipt/UpdateRequest.php +++ b/app/Http/Requests/V3/AccidentReceipt/UpdateRequest.php @@ -23,6 +23,7 @@ class UpdateRequest extends FormRequest public function rules(): array { return [ + 'is_foreign' => 'required|boolean', 'province_id' => 'required|integer|exists:provinces,id', 'city_id' => 'required|integer|exists:cities,id', 'axis_name' => 'required|string', diff --git a/app/Services/Cartables/RoadObservation/OperatorService.php b/app/Services/Cartables/RoadObservation/OperatorService.php index 49ceb9cb..7256a92d 100644 --- a/app/Services/Cartables/RoadObservation/OperatorService.php +++ b/app/Services/Cartables/RoadObservation/OperatorService.php @@ -6,6 +6,7 @@ use App\Exceptions\ProhibitedAction; use App\Facades\DataTable\DataTableFacade; use App\Models\RoadObserved; use Illuminate\Http\Request; +use Throwable; class OperatorService { @@ -26,26 +27,27 @@ class OperatorService ->whereNotNull('road_observeds.province_id') ->whereNotNull('status') ->leftJoin('edarate_shahri', 'road_observeds.edarate_shahri_id', '=', 'edarate_shahri.id') - ->where('edarate_shahri_id', $user->edarate_shahri_id) - ->select($fields); + ->where('edarate_shahri_id', $user->edarate_shahri_id); return DataTableFacade::run( $query, $request, allowedFilters: ['*'], - allowedSortings: ['*']); + allowedSortings: ['*'], + allowedSelects: $fields); } /** - * @throws \Throwable + * @throws Throwable */ public function complaintsIndex(Request $request) { $user = auth()->user(); - $fields = 'fk_RegisteredEventMessage, road_observeds.id, Title, FeatureTypeTitle, MobileForSendEventSms, StartTime_DateTime, - road_observeds.created_at, rms_last_activity, rms_last_activity_fa, status, edarate_shahri_id, - status_fa, supervisor_description, rms_description, province_fa, city_id, city_fa, Description, edarate_shahri.name_fa as edarate_shahri_name_fa, lat, lng'; + $fields = ['fk_RegisteredEventMessage', 'road_observeds.id', 'Title', 'FeatureTypeTitle', 'MobileForSendEventSms', 'StartTime_DateTime', + 'road_observeds.created_at', 'rms_last_activity', 'rms_last_activity_fa', 'status', 'edarate_shahri_id', + 'status_fa', 'supervisor_description', 'rms_description', 'province_fa', 'city_id', 'city_fa', 'Description', + 'edarate_shahri.name_fa as edarate_shahri_name_fa', 'lat', 'lng']; if ($user->hasPermissionTo('show-fast-react')) { $query = RoadObserved::query()->leftjoin('edarate_shahri', 'road_observeds.edarate_shahri_id', 'edarate_shahri.id') diff --git a/resources/views/v3/Reports/AccidentReceipt/CountryReport.blade.php b/resources/views/v3/Reports/AccidentReceipt/CountryReport.blade.php index f4837f48..6050d470 100644 --- a/resources/views/v3/Reports/AccidentReceipt/CountryReport.blade.php +++ b/resources/views/v3/Reports/AccidentReceipt/CountryReport.blade.php @@ -27,7 +27,7 @@
| + | تاریخ دریافت گزارش: {{verta()->now()->format('Y/m/d H:i')}} | |||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| + | ||||||||||||||||||||||||||||||||
| گزارش کلی خسارات وارده | +گزارش کلی خسارات وارده | |||||||||||||||||||||||||||||||
| استان | شهرستان | نام محور | +نوع ناوگان | نام راننده | کد ملی راننده | شماره موبایل راننده | @@ -33,7 +34,7 @@نوع تصادف | تاریخ تصادف | مبلغ کل خسارت | -مبلغ فیش | +مبلغ فاکتور | مبلغ بیمه | مبلغ داغی | تاریخ ثبت | @@ -48,6 +49,7 @@{{$item->province_fa}} | {{$item->city_fa}} | {{$item->axis_name}} | +{{$item->is_foreign ? 'خارجی' : 'داخلی'}} | {{$item->driver_name}} | {{$item->driver_national_code}} | {{$item->driver_phone_number}} | diff --git a/resources/views/v3/Reports/AccidentReceipt/ProvinceReport.blade.php b/resources/views/v3/Reports/AccidentReceipt/ProvinceReport.blade.php index be9a6556..d48aef61 100644 --- a/resources/views/v3/Reports/AccidentReceipt/ProvinceReport.blade.php +++ b/resources/views/v3/Reports/AccidentReceipt/ProvinceReport.blade.php @@ -27,7 +27,7 @@|||||||||||
| + style="background-color: #DAEEF3;text-align: center;border-right:1px solid black;font-weight:bolder;font-size: 13px;"> گزارش خسارات وارده به ابنیه فنی و تاسیسات راه از تاریخ {{ verta($fromDate)->format('Y/n/j') }} تا @@ -44,7 +44,7 @@ اداره کل | - تعداد کل + تعداد خسارات ثبت شده | تعداد نحوه شناسایی خسارت @@ -60,11 +60,14 @@ | ||||||||||||||||||||||||||||||
| + کل + | در دست اقدام | - در حال فرایند پرداخت + در حال پرداخت | خاتمه یافته @@ -77,7 +80,7 @@ گزارش گشت راهداری | - فیش + فاکتور | بیمه @@ -95,6 +98,9 @@ | |||||||||||||||||||||||||||
| {{ $road['name'] }} | ++ {{ $road['tedade'] }} | +< | {{ $road['egdam'] }} | diff --git a/resources/views/v3/Reports/RoadObservation/OperatorCartableReport.blade.php b/resources/views/v3/Reports/RoadObservation/OperatorCartableReport.blade.php index 6dd7d746..8fe8cda1 100644 --- a/resources/views/v3/Reports/RoadObservation/OperatorCartableReport.blade.php +++ b/resources/views/v3/Reports/RoadObservation/OperatorCartableReport.blade.php @@ -33,7 +33,7 @@ | ||||||||||||||||||||||||||||
| + style="background-color: #DAEEF3;text-align: center;border-right:1px solid black;font-weight:bolder;font-size: 13px;"> گزارش کارتابل عملیات واکنش سریع | تاریخ ثبت | تاریخ اقدام | توضیح مامور | -توضیح کارشناس | +توضیح ناظر | وضعیت | diff --git a/routes/v3.php b/routes/v3.php index 6fc3ec01..6567212e 100644 --- a/routes/v3.php +++ b/routes/v3.php @@ -294,20 +294,19 @@ Route::prefix('road_observations') ->name('roadObservations.') ->group(function () { Route::name('operator.') - ->prefix('operator') ->controller(\App\Http\Controllers\V3\Dashboard\RoadObservation\OperatorController::class) ->group(function () { - Route::get('/cartable','cartableIndex')->name('cartableIndex')->middleware('permission:show-fast-react-edarate-shahri'); - Route::get('/cartable_report','cartableReport')->name('cartableReport')->middleware('permission:show-fast-react-edarate-shahri'); + Route::get('operator/cartable','cartableIndex')->name('cartableIndex')->middleware('permission:show-fast-react-edarate-shahri'); + Route::get('operator/report','cartableReport')->name('cartableReport')->middleware('permission:show-fast-react-edarate-shahri'); Route::get('/complaints_index', 'complaintsIndex') ->middleware('permission:show-fast-react-edarate-shahri|show-fast-react-province|show-fast-react') ->name('complaintsIndex'); Route::get('/complaints_report', 'complaintsReport')->name('complaintsReport') ->middleware('permission:show-fast-react-edarate-shahri|show-fast-react-province|show-fast-react'); - Route::post('/register/{roadObserved}', 'register') + Route::post('operator/register/{roadObserved}', 'register') ->middleware('permission:show-fast-react-edarate-shahri') ->name('register'); - Route::post('/modify_registration/{roadObserved}', 'modifyRegistration') + Route::post('operator/modify_registration/{roadObserved}', 'modifyRegistration') ->middleware('permission:show-fast-react-edarate-shahri') ->name('modifyRegistration'); Route::post('/refer/{roadObserved}', 'refer') @@ -316,6 +315,7 @@ Route::prefix('road_observations') Route::get('/refer_list/{roadObserved}', 'referList') ->middleware('permission:show-fast-react-edarate-shahri|show-fast-react-province|show-fast-react') ->name('referList'); + Route::get('/{roadObserved}', 'show')->name('show'); }); Route::name('supervisor.') @@ -336,7 +336,6 @@ Route::prefix('road_observations') Route::get('/excel', 'excel')->name('excel')->middleware('permission:show-fast-react-province|show-fast-react'); Route::get('/map', 'map')->name('map'); }); - Route::get('/{roadObserved}', [\App\Http\Controllers\V3\Dashboard\RoadObservation\OperatorController::class, 'show'])->name('show'); }); Route::prefix('log_list')||||||||||||||||||||||||||