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 @@ + style="background-color: #DAEEF3;text-align: center;border-right:1px solid black;font-weight:bolder;font-size: 13px;"> گزارش خسارات وارده به ابنیه فنی و تاسیسات راه از تاریخ {{ verta($fromDate)->format('Y/n/j') }} تا @@ -43,7 +43,7 @@ اداره کل - تعداد کل + تعداد خسارات ثبت شده نحوه شناسایی خسارت @@ -59,11 +59,14 @@ + + کل + در دست اقدام - در حال فرایند پرداخت + در حال پرداخت خاتمه یافته @@ -76,7 +79,7 @@ گزارش گشت راهداری - فیش + فاکتور بیمه @@ -94,6 +97,9 @@ {{ $road['name'] }} + + {{ $road['tedade'] }} + {{ $road['egdam'] }} diff --git a/resources/views/v3/Reports/AccidentReceipt/DataTableReport.blade.php b/resources/views/v3/Reports/AccidentReceipt/DataTableReport.blade.php index 134166b1..1109a5e5 100644 --- a/resources/views/v3/Reports/AccidentReceipt/DataTableReport.blade.php +++ b/resources/views/v3/Reports/AccidentReceipt/DataTableReport.blade.php @@ -10,15 +10,15 @@ - - + - + @@ -26,6 +26,7 @@ + @@ -33,7 +34,7 @@ - + @@ -48,6 +49,7 @@ + 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 @@ + + + diff --git a/resources/views/v3/Reports/RoadObservation/SupervisorCartableReport.blade.php b/resources/views/v3/Reports/RoadObservation/SupervisorCartableReport.blade.php index fa412f98..3174ec5c 100644 --- a/resources/views/v3/Reports/RoadObservation/SupervisorCartableReport.blade.php +++ b/resources/views/v3/Reports/RoadObservation/SupervisorCartableReport.blade.php @@ -49,7 +49,7 @@ - + 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')
+ تاریخ دریافت گزارش: {{verta()->now()->format('Y/m/d H:i')}}
گزارش کلی خسارات واردهگزارش کلی خسارات وارده
استان شهرستان نام محورنوع ناوگان نام راننده کد ملی راننده شماره موبایل رانندهنوع تصادف تاریخ تصادف مبلغ کل خسارتمبلغ فیشمبلغ فاکتور مبلغ بیمه مبلغ داغی تاریخ ثبت{{$item->province_fa}} {{$item->city_fa}} {{$item->axis_name}}{{$item->is_foreign ? 'خارجی' : 'داخلی'}} {{$item->driver_name}} {{$item->driver_national_code}} {{$item->driver_phone_number}}
+ 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;"> گزارش کارتابل عملیات واکنش سریع
تاریخ ثبت تاریخ اقدام توضیح مامورتوضیح کارشناستوضیح ناظر وضعیت