diff --git a/.env.example b/.env.example index 3ebfeaa3..4e0ec85b 100644 --- a/.env.example +++ b/.env.example @@ -71,26 +71,36 @@ FMS_ERROR_RATE_URL= FMS_ERROR_RATE_PASSWORD= FMS_ERROR_RATE_USERNAME= -HARIM_NEED_ACCESS_URL= +HARIM_NEED_ACCESS_URL='https://zamin.gov.ir/ow/api/ow/esb/response', HARIM_NEED_ACCESS_PASSWORD= HARIM_NEED_ACCESS_USERNAME= -HARIM_REJECT_URL= +HARIM_REJECT_URL='https://zamin.gov.ir/ow/api/ow/esb/response' HARIM_REJECT_PASSWORD= HARIM_REJECT_USERNAME= -HARIM_NO_NEED_ACCESS_URL= +HARIM_NO_NEED_ACCESS_URL='https://zamin.gov.ir/ow/api/ow/esb/response' HARIM_NO_NEED_ACCESS_PASSWORD= HARIM_NO_NEED_ACCESS_USERNAME= -HARIM_EDIT_ACCESS_URL= +HARIM_EDIT_ACCESS_URL='https://zamin.gov.ir/ow/api/ow/esb/response' HARIM_EDIT_ACCESS_PASSWORD= HARIM_EDIT_ACCESS_USERNAME= -HARIM_NEED_GUARANTEE_LETTER_URL= +HARIM_NEED_GUARANTEE_LETTER_URL='https://zamin.gov.ir/ow/api/ow/esb/response' HARIM_NEED_GUARANTEE_LETTER_PASSWORD= HARIM_NEED_GUARANTEE_LETTER_USERNAME= BACKUP_TARGET_DIR= BACKUP_USER= -BACKUP_PASSWORD= \ No newline at end of file +BACKUP_PASSWORD= + + +HARIM_ENCRYPTION_KEY="TestKey" +HARIM_ENCRYPTION_IV="1111000011110101" + +CHECKE_LIST_MACHINES_ACTIVITY_URL='fms.141.ir:7030/api/RMS/GetMovingVehicles', +CHECKE_LIST_MACHINES_ACTIVITY_PASSWORD= +CHECKE_LIST_MACHINES_ACTIVITY_USERNAME= + +HARIM_AMOUNT_FEE=1 \ No newline at end of file diff --git a/app/Console/Commands/DailyMovingMachineCommand.php b/app/Console/Commands/DailyMovingMachineCommand.php new file mode 100644 index 00000000..5b059dfd --- /dev/null +++ b/app/Console/Commands/DailyMovingMachineCommand.php @@ -0,0 +1,77 @@ +run(); + $response = collect($vehiclesInfo['vehiclesInfo']); + + $date = Carbon::yesterday()->toDateString(); + + $cmms = $response->pluck('machineCode'); + + $missions = Mission::query() + ->whereDate('start_time', $date) + ->get(); + + $missionCodes = $missions->pluck('machine_code'); + + $cmmsOnly = $cmms->diff($missionCodes); + $missionOnly = $missionCodes->diff($cmms); + + foreach ($cmmsOnly as $code) { + $cmm = $response->firstWhere('machineCode', '=', $code); + + MissionViolation::query()->create([ + 'machine_code' => $code, + 'type' => MissionViolationType::KHOROJ_BEDONE_MOGAVEZ->value, + 'request_date' => $date, + 'mileage' => $cmm['mileageKM'], +// 'exit_time' => $cmm['exit_time'], +// 'enter_time' => $cmm['enter_time'], + ]); + } + + foreach ($missionOnly as $code) { + MissionViolation::query()->create([ + 'machine_code' => $code, + 'mission_id' => $missions->where('machine_code', '=', $code)->value('id'), + 'type' => MissionViolationType::ADAM_TAHAROK->value, + 'request_date' => $date, + ]); + } + + $this->info("ماشین‌های متحرک بدون مأموریت: " . $cmmsOnly->count()); + $this->info("مأموریت‌های بدون حرکت در CMMS: " . $missionOnly->count()); + } +} diff --git a/app/Console/Commands/GetMachinesInfoListCommand.php b/app/Console/Commands/GetMachinesInfoListCommand.php index 4f01d45d..a11742cd 100644 --- a/app/Console/Commands/GetMachinesInfoListCommand.php +++ b/app/Console/Commands/GetMachinesInfoListCommand.php @@ -35,9 +35,9 @@ class GetMachinesInfoListCommand extends Command $updatedRows = 0; - if (isset($response['vw_MachBankFull'])) { + if (isset($response['vw_MachBankFull2'])) { - foreach ($response['vw_MachBankFull'] as $entry) { + foreach ($response['vw_MachBankFull2'] as $entry) { // Insert data into the database CMMSMachine::query()->updateOrCreate( [ @@ -54,8 +54,12 @@ class GetMachinesInfoListCommand extends Command 'car_id' => $entry['Id'], 'unit_group' => $entry['UnitGroup'] == [] ? null : $entry['UnitGroup'], 'plak_number' => $entry['PlakNumber'] ?? null, + 'province_id' => $entry['UnitGroupCode'] ?? null, + 'city_id' => $entry['UnitCode'] ?? null, + 'station_id' => $entry['Layer3Code'] ?? null, ]); - $updatedRows += 1; + + ++$updatedRows; } } diff --git a/app/Console/Commands/RoadObservationProblems.php b/app/Console/Commands/RoadObservationProblems.php index b585d167..e25b3109 100755 --- a/app/Console/Commands/RoadObservationProblems.php +++ b/app/Console/Commands/RoadObservationProblems.php @@ -78,7 +78,8 @@ class RoadObservationProblems extends Command $mobile = $value->MobileForSendEventSms; } - $cityModel = City::findCityWithLatLng($value->XGeo, $value->YGeo); + $city = findCityFromGeoJson($value->YGeo, $value->XGeo); + $cityModel = $city ? City::query()->find($city['city_id']) : City::query()->find(NikarayanComplaints::mapCities((int) $value->fk_Town)); $rop = RoadObserved::query()->updateOrCreate( ['fk_RegisteredEventMessage' => $value->fk_RegisteredEventMessage], [ diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php index 72869440..f4c047dd 100755 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -16,6 +16,7 @@ class Kernel extends ConsoleKernel protected $commands = [ 'App\Console\Commands\RoadObservationProblems', //// road observed webservice from 141 sawaneh 'App\Console\Commands\SendContractSmsNotification', //// road observed webservice from 141 sawaneh + 'App\Console\Commands\DailyMovingMachineCommand', ]; /** @@ -41,13 +42,16 @@ class Kernel extends ConsoleKernel $schedule->command("webservice:roadobserved --daily-mode") ->dailyAt('00:45')->appendOutputTo(storage_path('logs/nikarayan.log')); - $schedule->command("db:backup") - ->weekly()->at('03:00')->appendOutputTo(storage_path('logs/mariadb-backup.log')); +// $schedule->command("db:backup") +// ->weekly()->at('03:00')->appendOutputTo(storage_path('logs/mariadb-backup.log')); $schedule->command('telescope:prune --hours=48') ->dailyAt('04:00') ->appendOutputTo(storage_path('logs/telescope.log')); + $schedule->command('webservice:daily_moving_machine') + ->dailyAt('02:00')->appendOutputTo(storage_path('logs/dailymovingmachine.log')); + } /** diff --git a/app/Enums/AccidentWayGeoTypes.php b/app/Enums/AccidentWayGeoTypes.php new file mode 100644 index 00000000..09130863 --- /dev/null +++ b/app/Enums/AccidentWayGeoTypes.php @@ -0,0 +1,24 @@ + "تقاطع - دسترسی", + 2 => "قوس افقی یا قائم", + 3 => "پل", + 4 => "پل و قوس", + 5 => "تونل", + 6 => "میدان", + 7 => "دوربرگردان", + 8 => "بریدگی", + 9 => "تقاطع و قوس", + 10 => "نقطه عادی", + ]; + + return $mapArray[$state]; + } +} \ No newline at end of file diff --git a/app/Enums/AccidentWeatherConditions.php b/app/Enums/AccidentWeatherConditions.php new file mode 100644 index 00000000..88f11c28 --- /dev/null +++ b/app/Enums/AccidentWeatherConditions.php @@ -0,0 +1,28 @@ + 'برفی', + 2 => 'کولاک', + 3 => 'آفتابی', + 4 => 'بارانی', + 5 => 'یخبندان', + 6 => 'مه آلود', + ]; + + return $mapArray[$state]; + } +} \ No newline at end of file diff --git a/app/Enums/CmmsMachineStatus.php b/app/Enums/CmmsMachineStatus.php new file mode 100644 index 00000000..b679da8f --- /dev/null +++ b/app/Enums/CmmsMachineStatus.php @@ -0,0 +1,19 @@ + 'آماده', + self::RESERVE => 'رزرو', + self::DAR_MAMORIAT => 'در ماموریت', + }; + } +} \ No newline at end of file diff --git a/app/Enums/HarimPosition.php b/app/Enums/HarimPosition.php new file mode 100644 index 00000000..d28968c8 --- /dev/null +++ b/app/Enums/HarimPosition.php @@ -0,0 +1,17 @@ + 1.0, + self::FASELEH_AZ_MARKAZ_SHAHR_5_KM => 1.5, + }; + } +} diff --git a/app/Enums/HarimRoadType.php b/app/Enums/HarimRoadType.php new file mode 100644 index 00000000..cc1ae0c8 --- /dev/null +++ b/app/Enums/HarimRoadType.php @@ -0,0 +1,19 @@ + 1.0, + self::ASLI_VA_BOZORGRAH => 1.5, + self::AZADRAH => 2.0, + }; + } +} \ No newline at end of file diff --git a/app/Enums/HarimStates.php b/app/Enums/HarimStates.php index 8f73c4c0..426cb23a 100644 --- a/app/Enums/HarimStates.php +++ b/app/Enums/HarimStates.php @@ -8,40 +8,40 @@ enum HarimStates: int case BARESI_TAVASOT_DAFTAR_HARIM = 2; case BARESI_TAVASOT_MOAVEN = 3; case BARESI_TAVASOT_MODIR_KOL = 4; - case BARESI_FILE_APLODE_SHODE_TAVASOTE_DAFTAR_HARIM = 5; - case BARESI_FILE_APLODE_SHODE_TAVASOTE_MOAVEN = 6; - case BARESI_FILE_APLODE_SHODE_TAVASOTE_MODIR_KOL = 7; - case ERSAL_ZEMANAT_NAME_TAVASOTE_KARBAR =8; + case BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_DAFTAR_HARIM = 5; + case BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MOAVEN = 6; + case BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MODIR_KOL = 7; + case DARYAFTE_ARSE_VA_AYAN_NAHAI =8; case ERSAL_BE_PANJAREH_VAHED_NIAZ_BE_RAH_DASTRASI = 9; case EMKAN_PAZIR_NEMEBASHAD = 10; case ERSAL_BE_PANJAREH_VAHED_BEDONEH_NIAZ_BE_RAH_DASTRASI = 11; - case UPDATE_FILE_BARGOZARE_SHODE = 12; - case TAEDE_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_DAFTAR_HARIM = 13; - case TAEDE_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_TAVASOTE_MOAVEN = 14; - case TAEDE_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_MODIR_KOL = 15; + case UPDATE_RAHE_DASTRASI_BARGOZARE_SHODE = 12; + case BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_DAFTAR_HARIM = 13; + case BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_MOAVEN = 14; + case BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_MODIR_KOL = 15; case MOKHALEFAT_BA_DASTGAH = 16; + case ETMAM_FARAYAND = 17; - public static function name(int $state): string + public function label(): string { - $mapArray = [ - 1 => "بررسی ادارات شهرستان", - 2 => "بررسی توسط ادارات حریم", - 3 => "بررسی توسط معاون ", - 4 => "بررسی توسط مدیر کل", - 5 => "بررسی فایل آپلود شده توسط اداره حریم", - 6 => "بررسی فایل آپلود شده توسط معاون", - 7 => "بررسی فایل آپلود شده توسط مدیر", - 8 => "ارسال ضمانت نامه توسط کاربر", - 9 => "ارسال به پنجره واحد (نیاز به راه دسترسی)", - 10 => "امکان پذیر نمی باشد", - 11 => "ارسال به پنجره واحد (بدون نیاز به راه دسترسی)", - 12 => "بازبینی فایل بارگذاری شده", - 13 => "تائید عرصه و اعیان ارسال شده توسط اداره حریم", - 14 => "تائید عرصه و اعیان ارسال شده توسط معاون", - 15 => "تائید عرصه و اعیان ارسال شده توسط مدیر", - 16 => "مخالفت با درخواست" - ]; - - return $mapArray[$state]; + return match ($this) { + self::BARESI_EDARE_SHAHRESTAN => "بررسی ادارات شهرستان", + self::BARESI_TAVASOT_DAFTAR_HARIM => "بررسی توسط ادارات حریم", + self::BARESI_TAVASOT_MOAVEN => "بررسی توسط معاون ", + self::BARESI_TAVASOT_MODIR_KOL => "بررسی توسط مدیر کل", + self::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_DAFTAR_HARIM => "بررسی راه دسترسی آپلود شده توسط اداره حریم", + self::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MOAVEN => "بررسی راه دسترسی آپلود شده توسط معاون", + self::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MODIR_KOL => "بررسی راه دسترسی آپلود شده توسط مدیر", + self::DARYAFTE_ARSE_VA_AYAN_NAHAI => "دریافت عرصه و عیان نهایی", + self::ERSAL_BE_PANJAREH_VAHED_NIAZ_BE_RAH_DASTRASI => "ارسال به پنجره واحد (نیاز به راه دسترسی)", + self::EMKAN_PAZIR_NEMEBASHAD => "امکان پذیر نمی باشد", + self::ERSAL_BE_PANJAREH_VAHED_BEDONEH_NIAZ_BE_RAH_DASTRASI => "ارسال به پنجره واحد (بدون نیاز به راه دسترسی)", + self::UPDATE_RAHE_DASTRASI_BARGOZARE_SHODE => "بازبینی راه دسترسی بارگذاری شده", + self::BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_DAFTAR_HARIM => "تائید عرصه و اعیان ارسال شده توسط اداره حریم", + self::BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_MOAVEN => "تائید عرصه و اعیان ارسال شده توسط معاون", + self::BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_MODIR_KOL => "تائید عرصه و اعیان ارسال شده توسط مدیر", + self::MOKHALEFAT_BA_DASTGAH => "مخالفت با درخواست", + self::ETMAM_FARAYAND => "اتمام فرایند", + }; } } \ No newline at end of file diff --git a/app/Enums/HarimTraffic.php b/app/Enums/HarimTraffic.php new file mode 100644 index 00000000..8f36c605 --- /dev/null +++ b/app/Enums/HarimTraffic.php @@ -0,0 +1,22 @@ + 1.0, + self::MOTEVASET => 1.5, + self::SANGIN => 2.0, + }; + } +} + diff --git a/app/Enums/MachineStates.php b/app/Enums/MachineStates.php new file mode 100644 index 00000000..ccdd6e2e --- /dev/null +++ b/app/Enums/MachineStates.php @@ -0,0 +1,19 @@ + 'اماده به کار', + self::REZERV => 'رزرو', + self::DAR_HAL_MAMOREAT => 'در حال ماموریت', + }; + } +} \ No newline at end of file diff --git a/app/Enums/MissionViolationType.php b/app/Enums/MissionViolationType.php new file mode 100644 index 00000000..e9c55b0c --- /dev/null +++ b/app/Enums/MissionViolationType.php @@ -0,0 +1,17 @@ + "خروج بدون مجوز ", + self::ADAM_TAHAROK => "عدم تحرک", + }; + } +} \ No newline at end of file diff --git a/app/Enums/PanjarehVahedHistoryActions.php b/app/Enums/PanjarehVahedHistoryActions.php new file mode 100644 index 00000000..ca6f5180 --- /dev/null +++ b/app/Enums/PanjarehVahedHistoryActions.php @@ -0,0 +1,9 @@ +session()->exists('last_login')){ + if ($request->session()->exists('last_login')) { $user = auth()->user(); $user->last_login = $request->session()->get('last_login'); $user->save(); @@ -29,7 +30,7 @@ class LogoutController extends Controller $request->session()->regenerateToken(); return response()->json([ - 'message' => 'logged out' + 'message' => 'logged out', ]); } } diff --git a/app/Http/Controllers/V3/CMMSMachinesController.php b/app/Http/Controllers/V3/CMMSMachinesController.php index b74be799..d0819a1a 100644 --- a/app/Http/Controllers/V3/CMMSMachinesController.php +++ b/app/Http/Controllers/V3/CMMSMachinesController.php @@ -22,13 +22,13 @@ class CMMSMachinesController extends Controller $request, allowedFilters: ['*'], allowedSortings: ['*'], - allowedSelects: ['machine_code', 'id', 'plak_number', 'car_name', 'car_type'] + allowedSelects: ['machine_code', 'id', 'plak_number', 'car_name', 'car_type', 'status'], )); } public function list(): JsonResponse { - $machinesList = CMMSMachine::query()->get(['machine_code', 'id', 'plak_number', 'car_name', 'car_type']); + $machinesList = CMMSMachine::query()->get(['machine_code', 'id', 'plak_number', 'car_name', 'car_type', 'status']); return $this->successResponse($machinesList); } @@ -37,7 +37,7 @@ class CMMSMachinesController extends Controller { $matchedSearchedMachines = CMMSMachine::query() ->where('machine_code', 'LIKE', "%{$request->machine_code}%") - ->get(['machine_code', 'id', 'plak_number', 'car_name']); + ->get(['machine_code', 'id', 'plak_number', 'car_name', 'status']); return $this->successResponse($matchedSearchedMachines); } diff --git a/app/Http/Controllers/V3/DamageManagementController.php b/app/Http/Controllers/V3/DamageManagementController.php index dc075c61..44b97aad 100644 --- a/app/Http/Controllers/V3/DamageManagementController.php +++ b/app/Http/Controllers/V3/DamageManagementController.php @@ -3,7 +3,6 @@ namespace App\Http\Controllers\V3; use App\Exports\V3\Damage\DamageCartableReport; -use App\Facades\DataTable\DataTableFacade; use App\Http\Controllers\Controller; use App\Http\Requests\V3\Damage\StoreRequest; use App\Http\Requests\V3\Damage\UpdateRequest; @@ -19,22 +18,24 @@ use Symfony\Component\HttpFoundation\BinaryFileResponse; class DamageManagementController extends Controller { use ApiResponse; + /** * Display a listing of the resource. */ - public function index(Request $request ,DamageService $damageService): JsonResponse + public function index(Request $request, DamageService $damageService): JsonResponse { $data = $damageService->dataTable($request); + return response()->json($data); } public function list(): JsonResponse { $damages = Damage::query()->where('status', '=', 1)->get(); + return $this->successResponse($damages); } - /** * Store a newly created resource in storage. */ @@ -45,7 +46,7 @@ class DamageManagementController extends Controller 'unit' => $request->unit, 'base_price' => $request->base_price, 'status' => 1, - 'update_time' => now() + 'update_time' => now(), ]); return $this->successResponse(); @@ -55,7 +56,6 @@ class DamageManagementController extends Controller * Display the specified resource. */ public function show(Damage $damage): JsonResponse - { return $this->successResponse($damage); } @@ -63,14 +63,13 @@ class DamageManagementController extends Controller /** * Show the form for editing the specified resource. */ - public function update(UpdateRequest $request, Damage $damage): JsonResponse { $damage->update([ 'title' => $request->title, 'unit' => $request->unit, 'base_price' => $request->base_price, - 'update_time' => now() + 'update_time' => now(), ]); return $this->successResponse(); @@ -92,8 +91,9 @@ class DamageManagementController extends Controller */ public function excel(Request $request, DamageService $damageService): BinaryFileResponse { - $name = 'آیتم خسارات وارده بر ابنیه فنی' . verta()->now()->format('Y-m-d H-i') . '.xlsx'; + $name = 'آیتم خسارات وارده بر ابنیه فنی'.verta()->now()->format('Y-m-d H-i').'.xlsx'; $data = $damageService->datatable($request); + return Excel::download(new DamageCartableReport($data['data']), $name); } } diff --git a/app/Http/Controllers/V3/Dashboard/Accident/AccidentReceiptController.php b/app/Http/Controllers/V3/Dashboard/Accident/AccidentReceiptController.php index ce0ae4a6..54e4fa80 100644 --- a/app/Http/Controllers/V3/Dashboard/Accident/AccidentReceiptController.php +++ b/app/Http/Controllers/V3/Dashboard/Accident/AccidentReceiptController.php @@ -46,8 +46,9 @@ class AccidentReceiptController extends Controller public function excelReport(Request $request, AccidentReceiptTableService $accidentReceiptTableService): BinaryFileResponse { auth()->user()->addActivityComplete(1126); - $name = 'گزارش از خسارات وارده به ابنیه فنی و تاسیسات راه ' . verta()->now()->format('Y-m-d H-i') . '.xlsx'; + $name = 'گزارش از خسارات وارده به ابنیه فنی و تاسیسات راه '.verta()->now()->format('Y-m-d H-i').'.xlsx'; $data = $accidentReceiptTableService->dataTable($request, true); + return Excel::download(new DataTableReport($data['data']), $name); } @@ -64,7 +65,7 @@ class AccidentReceiptController extends Controller $city = City::query()->where('id', '=', $request->city_id)->first(); $accidentData = [ - 'is_foreign' => $request->is_foreign, + 'is_foreign' => $request->is_foreign, 'province_id' => $province->id, 'province_fa' => $province->name_fa, 'city_id' => $city->id, @@ -103,12 +104,12 @@ class AccidentReceiptController extends Controller $sum += $item['amount']; } - $ojrate_nasb = $sum/100*20; + $ojrate_nasb = $sum / 100 * 20; $sum += $ojrate_nasb; $accidentData['ojrate_nasb'] = $ojrate_nasb; $accidentData['sum'] = $sum; - $accidentData['driver_share_amount'] = ($sum * $request->driver_rate)/100; + $accidentData['driver_share_amount'] = ($sum * $request->driver_rate) / 100; $accident = Accident::query()->create($accidentData); $accident->damage_picture1 = FileFacade::save($request->file('damage_picture1'), "receipts_files/{$accident->id}"); @@ -137,7 +138,7 @@ class AccidentReceiptController extends Controller $city = City::query()->where('id', '=', $request->city_id)->first(); $accidentData = [ - 'is_foreign' => $request->is_foreign, + 'is_foreign' => $request->is_foreign, 'province_id' => $province->id, 'province_fa' => $province->name_fa, 'city_id' => $city->id, @@ -166,7 +167,9 @@ class AccidentReceiptController extends Controller } if ($request->has('police_file')) { - if ($accident->police_file) {FileFacade::delete($accident->police_file, true);} + if ($accident->police_file) { + FileFacade::delete($accident->police_file, true); + } $accidentData['police_file'] = FileFacade::save($request->file('police_file'), "receipts_files/{$accident->id}/"); } @@ -193,12 +196,12 @@ class AccidentReceiptController extends Controller $sum += $item['amount']; } - $ojrate_nasb = $sum/100*20; + $ojrate_nasb = $sum / 100 * 20; $sum += $ojrate_nasb; $accidentData['ojrate_nasb'] = $ojrate_nasb; $accidentData['sum'] = $sum; - $accidentData['driver_share_amount'] = ($sum * $request->driver_rate)/100; + $accidentData['driver_share_amount'] = ($sum * $request->driver_rate) / 100; $accident->update($accidentData); @@ -246,7 +249,7 @@ class AccidentReceiptController extends Controller return $this->successResponse([ $account_data, - $accident->load('damages') + $accident->load('damages'), ]); } @@ -254,7 +257,7 @@ class AccidentReceiptController extends Controller { DB::transaction(function () use ($request, $accident) { - $final_amount = $accident->driver_share_amount - ($request->deposit_insurance_amount + $request->deposit_daghi_amount); + $final_amount = $accident->driver_share_amount - ($request->deposit_insurance_amount + $request->deposit_daghi_amount); throw_if($final_amount < 0, new ProhibitedAction('مبالغ داغی و بیمه از مبلغ کل بیشتر می باشد.')); @@ -282,13 +285,13 @@ class AccidentReceiptController extends Controller public function submitInvoice(Accident $accident, PaymentService $paymentService, SubmitInvoiceRequest $request): JsonResponse { $lock = Cache::lock("accidentPayment-{$accident->id}", 10); - throw_if(!$lock->get(), new ProhibitedAction('امکان درخواست مجدد تا 10 ثانیه دیگر وجود ندارد')); + throw_if(! $lock->get(), new ProhibitedAction('امکان درخواست مجدد تا 10 ثانیه دیگر وجود ندارد')); $final_amount = $accident->final_amount; $bill_code = $paymentService->invoiceBillApi($accident->driver_national_code, $final_amount); - DB::transaction(function () use ($bill_code, $final_amount, $accident) { + DB::transaction(function () use ($bill_code, $accident) { $accident->update([ 'bill_code' => $bill_code, @@ -312,9 +315,9 @@ class AccidentReceiptController extends Controller { DB::transaction(function () use ($accident, $paymentService) { - $response = json_decode($paymentService->callPaymentStatusBillApi(explode("/", $accident->bill_code)[0])); + $response = json_decode($paymentService->callPaymentStatusBillApi(explode('/', $accident->bill_code)[0])); - throw_if(!$response->isPayed, new ProhibitedAction('پرداخت انجام نشده است')); + throw_if(! $response->isPayed, new ProhibitedAction('پرداخت انجام نشده است')); $accident->update([ 'status' => AccidentStates::PARDAKHT_FACTOR->value, @@ -327,9 +330,9 @@ class AccidentReceiptController extends Controller return $this->successResponse($accident); } - public function generatePoliceDocument(Request $request, Accident $accident): JsonResponse + public function generatePoliceDocument(Accident $accident): JsonResponse { - DB::transaction(function () use ($request, $accident) { + DB::transaction(function () use ($accident) { $accident->update([ 'status' => AccidentStates::SODOR_NAME_POLICE_RAH->value, diff --git a/app/Http/Controllers/V3/Dashboard/Accident/AccidentReceiptReportController.php b/app/Http/Controllers/V3/Dashboard/Accident/AccidentReceiptReportController.php index 1d4d8920..397f6f9c 100644 --- a/app/Http/Controllers/V3/Dashboard/Accident/AccidentReceiptReportController.php +++ b/app/Http/Controllers/V3/Dashboard/Accident/AccidentReceiptReportController.php @@ -22,6 +22,7 @@ class AccidentReceiptReportController extends Controller public function countryReport(Request $request, AccidentReceiptTableService $accidentReceiptTableService): JsonResponse { $data = $accidentReceiptTableService->countryReport($request); + return $this->successResponse([ 'activities' => $data['data'], 'provinces' => Province::all(['id', 'name_fa']), @@ -31,6 +32,7 @@ class AccidentReceiptReportController extends Controller public function provinceReport(Request $request, AccidentReceiptTableService $accidentReceiptTableService): JsonResponse { $data = $accidentReceiptTableService->provinceReport($request); + return $this->successResponse([ 'activities' => $data['data'], 'cities' => City::query()->where('province_id', '=', $request->province_id) @@ -46,7 +48,8 @@ class AccidentReceiptReportController extends Controller public function countryExcelReport(Request $request, AccidentReceiptTableService $accidentReceiptTableService): BinaryFileResponse { $data = $accidentReceiptTableService->countryReport($request); - $name = 'گزارش از خسارات وارده به ابنیه فنی و تاسیسات راه ' . verta()->now()->format('Y-m-d H-i') . '.xlsx'; + $name = 'گزارش از خسارات وارده به ابنیه فنی و تاسیسات راه '.verta()->now()->format('Y-m-d H-i').'.xlsx'; + return Excel::download(new CountryReport($data), $name); } @@ -57,7 +60,8 @@ class AccidentReceiptReportController extends Controller public function provinceExcelReport(Request $request, AccidentReceiptTableService $accidentReceiptTableService): BinaryFileResponse { $data = $accidentReceiptTableService->provinceReport($request); - $name = 'گزارش از خسارات وارده به ابنیه فنی و تاسیسات راه ' . verta()->now()->format('Y-m-d H-i') . '.xlsx'; + $name = 'گزارش از خسارات وارده به ابنیه فنی و تاسیسات راه '.verta()->now()->format('Y-m-d H-i').'.xlsx'; + return Excel::download(new ProvinceReport([ 'report' => $data, 'cities' => City::query()->where('province_id', '=', $request->province_id) diff --git a/app/Http/Controllers/V3/Dashboard/Azmayesh/AzmayeshController.php b/app/Http/Controllers/V3/Dashboard/Azmayesh/AzmayeshController.php index 72a3bd70..a5cd12e8 100644 --- a/app/Http/Controllers/V3/Dashboard/Azmayesh/AzmayeshController.php +++ b/app/Http/Controllers/V3/Dashboard/Azmayesh/AzmayeshController.php @@ -17,12 +17,13 @@ use Illuminate\Http\Request; class AzmayeshController extends Controller { use ApiResponse; + /** * Display a listing of the resource. */ public function index(Request $request): JsonResponse { - $columns = array( + $columns = [ 'id', 'request_date', 'report_date', @@ -37,8 +38,8 @@ class AzmayeshController extends Controller 'updated_at', 'created_at', 'user_name', - 'contract_subitem_id' - ); + 'contract_subitem_id', + ]; $allowedFilters = $columns; $allowedSortings = $columns; @@ -81,7 +82,7 @@ class AzmayeshController extends Controller 'province_name' => $province->name_fa, 'user_id' => $user->id, 'user_name' => $user->name, - 'contract_subitem_id' => $request->contract_subitem_id + 'contract_subitem_id' => $request->contract_subitem_id, ]); $user->addActivityComplete(1158); @@ -121,7 +122,7 @@ class AzmayeshController extends Controller 'applicant' => $request->applicant ?? '-', 'province_id' => $province->id, 'province_name' => $province->name_fa, - 'contract_subitem_id' => $request->contract_subitem_id + 'contract_subitem_id' => $request->contract_subitem_id, ]); auth()->user()->addActivityComplete(1159); @@ -140,8 +141,7 @@ class AzmayeshController extends Controller auth()->user()->addActivityComplete(1160); return $this->successResponse(); - } - catch (QueryException $exception) { + } catch (QueryException $exception) { return $this->errorResponse('امکان حذف وجود ندارد'); } } diff --git a/app/Http/Controllers/V3/Dashboard/Azmayesh/AzmayeshSampleController.php b/app/Http/Controllers/V3/Dashboard/Azmayesh/AzmayeshSampleController.php index c5ea04ec..adef5d64 100644 --- a/app/Http/Controllers/V3/Dashboard/Azmayesh/AzmayeshSampleController.php +++ b/app/Http/Controllers/V3/Dashboard/Azmayesh/AzmayeshSampleController.php @@ -15,14 +15,15 @@ use Illuminate\Http\Request; class AzmayeshSampleController extends Controller { use ApiResponse; + /** * Display a listing of the resource. */ public function index(Request $request, string $azmayesh_id): JsonResponse { - $columns = array( - 'id', 'updated_at', 'created_at' - ); + $columns = [ + 'id', 'updated_at', 'created_at', + ]; $allowedFilters = $columns; $allowedSortings = $columns; diff --git a/app/Http/Controllers/V3/Dashboard/Azmayesh/AzmayeshTypeController.php b/app/Http/Controllers/V3/Dashboard/Azmayesh/AzmayeshTypeController.php index ef7d5f79..c9a1c21c 100644 --- a/app/Http/Controllers/V3/Dashboard/Azmayesh/AzmayeshTypeController.php +++ b/app/Http/Controllers/V3/Dashboard/Azmayesh/AzmayeshTypeController.php @@ -20,9 +20,9 @@ class AzmayeshTypeController extends Controller public function index(Request $request): JsonResponse { - $columns = array( - 'id', 'name', 'updated_at', 'created_at' - ); + $columns = [ + 'id', 'name', 'updated_at', 'created_at', + ]; $allowedFilters = $columns; $allowedSortings = $columns; @@ -52,16 +52,14 @@ class AzmayeshTypeController extends Controller public function store(StoreRequest $request): JsonResponse { - DB::transaction(function () use ($request) - { + DB::transaction(function () use ($request) { $azmayeshType = AzmayeshType::query()->create([ - 'name' => $request->name + 'name' => $request->name, ]); $fieldsID = []; - foreach ($request->fields as $field) - { + foreach ($request->fields as $field) { $azmayeshField = AzmayeshField::query()->firstOrCreate($field, $field); $fieldsID[] = $azmayeshField->id; } @@ -87,16 +85,14 @@ class AzmayeshTypeController extends Controller */ public function update(UpdateRequest $request, AzmayeshType $azmayeshType): JsonResponse { - DB::transaction(function () use ($request, $azmayeshType) - { + DB::transaction(function () use ($request, $azmayeshType) { $azmayeshType->update([ - 'name' => $request->name + 'name' => $request->name, ]); $fieldsID = []; - foreach ($request->fields as $field) - { + foreach ($request->fields as $field) { $azmayeshField = AzmayeshField::query()->updateOrCreate($field, $field); $fieldsID[] = $azmayeshField->id; } @@ -120,8 +116,7 @@ class AzmayeshTypeController extends Controller auth()->user()->addActivityComplete(1164); return $this->successResponse(); - } - catch (QueryException $exception) { + } catch (QueryException $exception) { return $this->errorResponse('امکان حذف وجود ندارد. ابتدا آزمایش های مرتبط با این نوع را حذف نمایید'); } } diff --git a/app/Http/Controllers/V3/Dashboard/DailyAccidentController.php b/app/Http/Controllers/V3/Dashboard/DailyAccidentController.php new file mode 100644 index 00000000..94a1f129 --- /dev/null +++ b/app/Http/Controllers/V3/Dashboard/DailyAccidentController.php @@ -0,0 +1,457 @@ +user()->addActivityComplete(1117); + + $query = DailyAccident::query(); + + $dataTable = DataTableFacade::run( + $query, + $request, + allowedFilters: ['*'], + allowedSortings: ['*'] + ); + + return response()->json($dataTable); + } + + /** + * Store a newly created resource in storage. + * @throws Throwable + */ + public function store(StoreRequest $request, NominatimService $nominatimService) + { + $province = Province::query()->find($request->province_id); + + $data = [ + 'province_id' => $province->id, + 'province_fa' => $province->name_fa, + 'axis_name' => $request->axis_name, + 'axis_type' => $request->axis_type, + 'axis_type_fa' => AxisTypes::name($request->axis_type), + 'axis_start' => $request->axis_start, + 'axis_end' => $request->axis_end, + 'distance_axis_start' => $request->distance_axis_start, + 'local_name' => $request->local_name, + 'lat' => $request->lat, + 'lng' => $request->lng, + 'police_serial' => $request->police_serial, + 'accident_date' => $request->accident_date, + 'accident_time' => $request->accident_time, + 'day_of_the_week' => $request->day_of_the_week, + 'direction' => $request->direction, + 'direction_fa' => $request->direction == 1 ? 'رفت' : 'برگشت', + 'number_of_injured' => $request->number_of_injured, + 'number_of_died' => $request->number_of_died, + 'weather_condition' => $request->weather_condition, + 'weather_condition_fa' => AccidentWeatherConditions::name($request->weather_condition), + 'way_geometri' => $request->way_geometri, + 'way_geometri_fa' => AccidentWayGeoTypes::name($request->way_geometri), + 'collision_type' => $request->collision_type, + 'collision_type_fa' => DailyAccidentSettings::query() + ->where([ + ['type', '=', 'collision_type'], + ['key', '=', $request->collision_type] + ])->first()->value, + 'participants_heavy_vehicle' => $request->participants_heavy_vehicle, + 'participants_light_vehicle' => $request->participants_light_vehicle, + 'participants_bicycle' => $request->participants_bicycle, + 'accident_type' => $request->accident_type, + 'accident_type_fa' => DailyAccidentSettings::query() + ->where([ + ['type', '=', 'accident_type'], + ['name', '=', $request->accident_type] + ])->first()->value, + 'legal_speed' => $request->legal_speed, + 'avarage_speed' => $request->avarage_speed, + 'increase_damage_reasons_feqdan_jodakonnande_dar_miyane_rah' => $request->increase_damage_reasons_feqdan_jodakonnande_dar_miyane_rah ?? 0, + 'increase_damage_reasons_naqs_ya_adam_kefayat_hefaze_miyani' => $request->increase_damage_reasons_naqs_ya_adam_kefayat_hefaze_miyani ?? 0, + 'increase_damage_reasons_naqs_ya_adam_kefayat_narde_pol' => $request->increase_damage_reasons_naqs_ya_adam_kefayat_narde_pol ?? 0, + 'increase_damage_reasons_naqs_ya_adam_kefayat' => $request->increase_damage_reasons_naqs_ya_adam_kefayat ?? 0, + 'increase_damage_reasons_naqs_dar_naheye_enteqali' => $request->increase_damage_reasons_naqs_dar_naheye_enteqali ?? 0, + 'increase_damage_reasons_mane_solb_bedone_hefaz' => $request->increase_damage_reasons_mane_solb_bedone_hefaz ?? 0, + 'increase_damage_reasons_sar_azad_hefaz' => $request->increase_damage_reasons_sar_azad_hefaz ?? 0, + 'increase_damage_reasons_shirvani_tond_ya_partgah' => $request->increase_damage_reasons_shirvani_tond_ya_partgah ?? 0, + 'accident_reason_dor_monaseb_dar_qus' => $request->accident_reason_dor_monaseb_dar_qus ?? 0, + 'accident_reason_saraziri_tond' => $request->accident_reason_saraziri_tond ?? 0, + 'accident_reason_nabod_dar_khat_sebqat_dar_sarbalaye' => $request->accident_reason_nabod_dar_khat_sebqat_dar_sarbalaye ?? 0, + 'accident_reason_mantaqe_ba_rizesh_az_divar' => $request->accident_reason_mantaqe_ba_rizesh_az_divar ?? 0, + 'accident_reason_mantaqe_ba_afzayesh_nagahani' => $request->accident_reason_mantaqe_ba_afzayesh_nagahani ?? 0, + 'accident_reason_kahesh_na_monaseb_tedad' => $request->accident_reason_kahesh_na_monaseb_tedad ?? 0, + 'accident_reason_mantaqe_ba_obor_heyvanat_ahli' => $request->accident_reason_mantaqe_ba_obor_heyvanat_ahli ?? 0, + 'accident_reason_mantaqe_ba_tadakhol_terafiki' => $request->accident_reason_mantaqe_ba_tadakhol_terafiki ?? 0, + 'accident_reason_arze_kam_savare_ro' => $request->accident_reason_arze_kam_savare_ro ?? 0, + 'accident_reason_mantaqe_meh_gir' => $request->accident_reason_mantaqe_meh_gir ?? 0, + 'accident_reason_adam_roshanaye_zarori_dar_noqte' => $request->accident_reason_adam_roshanaye_zarori_dar_noqte ?? 0, + 'accident_reason_tabdil_na_monaseb_noe_rah' => $request->accident_reason_tabdil_na_monaseb_noe_rah ?? 0, + 'accident_reason_oftadegi_dar_labe_asphalt' => $request->accident_reason_oftadegi_dar_labe_asphalt ?? 0, + 'accident_reason_naqs_dar_ashkarsazi_navahi' => $request->accident_reason_naqs_dar_ashkarsazi_navahi ?? 0, + 'accident_reason_mahal_na_monaseb_dastrasi' => $request->accident_reason_mahal_na_monaseb_dastrasi ?? 0, + 'accident_reason_roye_na_monaseb' => $request->accident_reason_roye_na_monaseb ?? 0, + 'accident_reason_naqs_dar_ashkar_sazi_shrayet_khas' => $request->accident_reason_naqs_dar_ashkar_sazi_shrayet_khas ?? 0, + 'accident_reason_hendese_na_monaseb_vorodi_va_khoroji' => $request->accident_reason_hendese_na_monaseb_vorodi_va_khoroji ?? 0, + 'accident_reason_adam_rayat_fasele_tooli' => $request->accident_reason_adam_rayat_fasele_tooli ?? 0, + 'accident_reason_naqs_dar_alayem_ekhtari_va_entezami' => $request->accident_reason_naqs_dar_alayem_ekhtari_va_entezami ?? 0, + 'accident_reason_qus_ofoqi_dar_saraziri_tond' => $request->accident_reason_qus_ofoqi_dar_saraziri_tond ?? 0, + 'accident_reason_adam_rayat_obor' => $request->accident_reason_adam_rayat_obor ?? 0, + 'accident_reason_naqs_dar_alayem_pish_agahi' => $request->accident_reason_naqs_dar_alayem_pish_agahi ?? 0, + 'accident_reason_qarar_gire_qus_ofoqi' => $request->accident_reason_qarar_gire_qus_ofoqi ?? 0, + 'accident_reason_adam_rayat_sebghat_mojaz' => $request->accident_reason_adam_rayat_sebghat_mojaz ?? 0, + 'accident_reason_did_na_kafi' => $request->accident_reason_did_na_kafi ?? 0, + 'accident_reason_qus_tond_qaem' => $request->accident_reason_qus_tond_qaem ?? 0, + 'accident_reason_adam_rayat_sorat_mojaz' => $request->accident_reason_adam_rayat_sorat_mojaz ?? 0, + 'accident_reason_ebham_dar_masir' => $request->accident_reason_ebham_dar_masir ?? 0, + 'accident_reason_qus_tond_ofoghi' => $request->accident_reason_qus_tond_ofoghi ?? 0, + 'way_id' => $nominatimService->get_way_id_from_nominatim($request->lat, $request->lng) + ]; + + DB::transaction(function () use ($data, $request) + { + $accident = DailyAccident::query()->create($data); + + $accident->first_image = $request->has('first_image') ? FileFacade::save($request->file('first_image'), "daily_accident_files/{$accident->id}") : null; + $accident->second_image = $request->has('second_image') ? FileFacade::save($request->file('second_image'), "daily_accident_files/{$accident->id}") : null; + $accident->police_file = $request->has('police_file') ? FileFacade::save($request->file('police_file'), "daily_accident_files/{$accident->id}") : null; + $accident->save(); + + auth()->user()->addActivityComplete(1118); + }); + + return $this->successResponse(); + } + + /** + * Display the specified resource. + */ + public function show(DailyAccident $dailyAccident) + { + return $this->successResponse($dailyAccident); + } + + /** + * Update the specified resource in storage. + */ + public function update(Request $request, DailyAccident $dailyAccident) + { + // + } + + /** + * Remove the specified resource from storage. + */ + public function destroy(DailyAccident $dailyAccident) + { + auth()->user()->addActivityComplete(1120, $dailyAccident); + + FileFacade::deleteDirectory("daily_accident_files/{$dailyAccident->id}"); + + $dailyAccident->delete(); + + return $this->successResponse(); + } + + /** + * @throws Throwable + */ + public function supervise(DailyAccident $dailyAccident, SupervisorRequest $request) + { + DB::transaction(function () use ($request, $dailyAccident) { + $dailyAccident->update([ + 'state' => $request->state, + 'state_fa' => $request->state == '1' ? 'تایید شده' : 'عدم تایید', + 'message' => $request->message, + 'state_updated_at' => now(), + ]); + + auth()->user()->addActivityComplete(1121, $dailyAccident); + }); + + return $this->successResponse(); + } + + public function map(Request $request) + { + $dataTable = DataTableFacade::run( + DailyAccident::query(), + $request, + allowedFilters: ['*'], + allowedSortings: ['*'], + allowedSelects: ['lat', 'lng', 'id'] + ); + + return response()->json($dataTable); + } + + public function poster(Request $request) + { + $request->validate([ + 'province_id' => 'numeric', + 'from_date' => 'date_format:Y-m-d', + 'to_date' => 'date_format:Y-m-d', + ]); + + $province_id = $request->province_id; + $from_date = $request->from_date; + $to_date = $request->to_date; + $data = []; + + $data['payamad_tasadof'] = DailyAccident::when($province_id, function ($query, $province_id) { + $query->where('province_id', $province_id); + }) + ->when(($from_date && $to_date), function ($query) use ($from_date, $to_date) { + $query->whereBetween('accident_date', [$from_date . ' 00:00:00', $to_date . ' 23:59:59']); + }) + ->selectRaw('sum(number_of_died) as number_of_died, sum(number_of_injured) as number_of_injured, count(id) as number_of_accident') + ->get(); + + // ACCIDENT REPORT -> PIE CHART + $accident_types_with_zero_accidents = DailyAccident::selectRaw('0 as cnt, accident_type, accident_type_fa, 0 as percentage') + ->whereNotIn('accident_type_fa', function ($query) use ($province_id, $from_date, $to_date) { + $query->select('accident_type_fa')->distinct() + ->from('daily_accidents') + ->when($province_id, function ($query, $province_id) { + $query->where('province_id', $province_id); + }) + ->when(($from_date && $to_date), function ($query) use ($from_date, $to_date) { + $query->whereBetween('accident_date', [$from_date . ' 00:00:00', $to_date . ' 23:59:59']); + }); + }) + ->groupBy('accident_type_fa'); + + $data['accident_report']['pie_chart'] = DailyAccident::when($province_id, function ($query, $province_id) { + $query->where('province_id', $province_id); + }) + ->when(($from_date && $to_date), function ($query) use ($from_date, $to_date) { + $query->whereBetween('accident_date', [$from_date . ' 00:00:00', $to_date . ' 23:59:59']); + }) + ->groupBy('accident_type_fa') + ->selectRaw('count(accident_type) as cnt, accident_type, accident_type_fa, round(count(*) * 100 / sum(count(*)) over(), 1) as percentage') + ->union($accident_types_with_zero_accidents) + // ->orderBy('accident_type', 'desc') + ->get(); + + // END + + // ACCIDENT REPORT -> schematic_map AND NUMBER OF ACCIDENTS PER PROVINCE + if(!$province_id){ + + $provinces_with_zero_accidents = Province::whereNotIn('id', function ($query) use ($from_date, $to_date) { + $query->select('province_id') + ->distinct('province_id') + ->from('daily_accidents') + ->when(($from_date && $to_date), function ($query) use ($from_date, $to_date) { + $query->whereBetween('accident_date', [$from_date . ' 00:00:00', $to_date . ' 23:59:59']); + }); + })->selectRaw('null, id, name_fa'); + + $data['accident_report']['schematic_map'] = DailyAccident::when(($from_date && $to_date), function ($query) use ($from_date, $to_date) { + $query->whereBetween('accident_date', [$from_date . ' 00:00:00', $to_date . ' 23:59:59']); + }) + ->groupBy('province_id') + ->selectRaw('count(*) as cnt, province_id, province_fa') + ->union($provinces_with_zero_accidents) + ->orderBy('province_id', 'asc') + // ->orderBy('cnt', 'asc') + ->get(); + + $data['number_of_accidents_per_province'] = $data['accident_report']['schematic_map']; + } + // END + + // ACCIDENT REPORT -> bar chart + $way_geometries_with_zero_accidents = DailyAccident::selectRaw('0 as cnt, way_geometri, way_geometri_fa') + ->whereNotIn('way_geometri', function ($query) use ($province_id, $from_date, $to_date) { + $query->select('way_geometri')->distinct() + ->from('daily_accidents') + ->when($province_id, function ($query, $province_id) { + $query->where('province_id', $province_id); + }) + ->when(($from_date && $to_date), function ($query) use ($from_date, $to_date) { + $query->whereBetween('accident_date', [$from_date . ' 00:00:00', $to_date . ' 23:59:59']); + }); + }) + ->groupBy('way_geometri'); + + $data['accident_report']['bar_chart'] = DailyAccident::when($province_id, function ($query, $province_id) { + $query->where('province_id', $province_id); + }) + ->when(($from_date && $to_date), function ($query) use ($from_date, $to_date) { + $query->whereBetween('accident_date', [$from_date . ' 00:00:00', $to_date . ' 23:59:59']); + }) + ->groupBy('way_geometri') + ->selectRaw('count(*) as cnt, way_geometri, way_geometri_fa') + ->union($way_geometries_with_zero_accidents) + ->orderBy('cnt', 'desc') + ->get(); + + // END + + // share_of_accidents_by_road_type + $share_by_road_type_data = DailyAccident::when($province_id, function ($query, $province_id) { + $query->where('province_id', $province_id); + }) + ->when(($from_date && $to_date), function ($query) use ($from_date, $to_date) { + $query->whereBetween('accident_date', [$from_date . ' 00:00:00', $to_date . ' 23:59:59']); + }) + ->groupBy('axis_type', 'accident_type') + ->selectRaw('count(*) as cnt, axis_type, axis_type_fa, accident_type, accident_type_fa') + ->get()->toArray(); + + $result = [ + ['accident_type_fa' => 'خسارتی', 'data' => [['axis_type_fa' => 'آزادراه', 'cnt' => 0], ['axis_type_fa' => 'بزرگراه', 'cnt' => 0], ['axis_type_fa' => 'اصلی', 'cnt' => 0], ['axis_type_fa' => 'فرعی', 'cnt' => 0]]], + ['accident_type_fa' => 'جرحی', 'data' => [['axis_type_fa' => 'آزادراه', 'cnt' => 0], ['axis_type_fa' => 'بزرگراه', 'cnt' => 0], ['axis_type_fa' => 'اصلی', 'cnt' => 0], ['axis_type_fa' => 'فرعی', 'cnt' => 0]]], + ['accident_type_fa' => 'فوتی', 'data' => [['axis_type_fa' => 'آزادراه', 'cnt' => 0], ['axis_type_fa' => 'بزرگراه', 'cnt' => 0], ['axis_type_fa' => 'اصلی', 'cnt' => 0], ['axis_type_fa' => 'فرعی', 'cnt' => 0]]], + ]; + + foreach ($share_by_road_type_data as $item) { + $key = $item['accident_type'] - 1; + + foreach ($result[$key]['data'] as $k => $axis_data) { + if ($axis_data['axis_type_fa'] == $item['axis_type_fa']) { + $result[$key]['data'][$k]['cnt'] = $item['cnt']; + break; + } + } + } + + $data['share_of_accidents_by_road_type'] = $result; + // END + + // share_of_accidents_by_road_geometry + $share_by_road_geometry_data = DailyAccident::when($province_id, function ($query, $province_id) { + $query->where('province_id', $province_id); + }) + ->when(($from_date && $to_date), function ($query) use ($from_date, $to_date) { + $query->whereBetween('accident_date', [$from_date . ' 00:00:00', $to_date . ' 23:59:59']); + }) + ->groupBy('way_geometri', 'axis_type') + ->selectRaw('count(*) as cnt, way_geometri, way_geometri_fa, axis_type, axis_type_fa') + ->get()->toArray(); + + $result = [ + ['way_geometri_fa' => 'تقاطع - دسترسی', 'data' => [['axis_type_fa' => 'آزادراه', 'cnt' => 0], ['axis_type_fa' => 'بزرگراه', 'cnt' => 0], ['axis_type_fa' => 'اصلی', 'cnt' => 0], ['axis_type_fa' => 'فرعی', 'cnt' => 0]]], + ['way_geometri_fa' => 'قوس افقی یا قائم', 'data' => [['axis_type_fa' => 'آزادراه', 'cnt' => 0], ['axis_type_fa' => 'بزرگراه', 'cnt' => 0], ['axis_type_fa' => 'اصلی', 'cnt' => 0], ['axis_type_fa' => 'فرعی', 'cnt' => 0]]], + ['way_geometri_fa' => 'پل', 'data' => [['axis_type_fa' => 'آزادراه', 'cnt' => 0], ['axis_type_fa' => 'بزرگراه', 'cnt' => 0], ['axis_type_fa' => 'اصلی', 'cnt' => 0], ['axis_type_fa' => 'فرعی', 'cnt' => 0]]], + ['way_geometri_fa' => 'پل و قوس', 'data' => [['axis_type_fa' => 'آزادراه', 'cnt' => 0], ['axis_type_fa' => 'بزرگراه', 'cnt' => 0], ['axis_type_fa' => 'اصلی', 'cnt' => 0], ['axis_type_fa' => 'فرعی', 'cnt' => 0]]], + ['way_geometri_fa' => 'تونل', 'data' => [['axis_type_fa' => 'آزادراه', 'cnt' => 0], ['axis_type_fa' => 'بزرگراه', 'cnt' => 0], ['axis_type_fa' => 'اصلی', 'cnt' => 0], ['axis_type_fa' => 'فرعی', 'cnt' => 0]]], + ['way_geometri_fa' => 'میدان', 'data' => [['axis_type_fa' => 'آزادراه', 'cnt' => 0], ['axis_type_fa' => 'بزرگراه', 'cnt' => 0], ['axis_type_fa' => 'اصلی', 'cnt' => 0], ['axis_type_fa' => 'فرعی', 'cnt' => 0]]], + ['way_geometri_fa' => 'دوربرگردان', 'data' => [['axis_type_fa' => 'آزادراه', 'cnt' => 0], ['axis_type_fa' => 'بزرگراه', 'cnt' => 0], ['axis_type_fa' => 'اصلی', 'cnt' => 0], ['axis_type_fa' => 'فرعی', 'cnt' => 0]]], + ['way_geometri_fa' => 'بریدگی', 'data' => [['axis_type_fa' => 'آزادراه', 'cnt' => 0], ['axis_type_fa' => 'بزرگراه', 'cnt' => 0], ['axis_type_fa' => 'اصلی', 'cnt' => 0], ['axis_type_fa' => 'فرعی', 'cnt' => 0]]], + ['way_geometri_fa' => 'تقاطع و قوس', 'data' => [['axis_type_fa' => 'آزادراه', 'cnt' => 0], ['axis_type_fa' => 'بزرگراه', 'cnt' => 0], ['axis_type_fa' => 'اصلی', 'cnt' => 0], ['axis_type_fa' => 'فرعی', 'cnt' => 0]]], + ['way_geometri_fa' => 'نقطه عادی', 'data' => [['axis_type_fa' => 'آزادراه', 'cnt' => 0], ['axis_type_fa' => 'بزرگراه', 'cnt' => 0], ['axis_type_fa' => 'اصلی', 'cnt' => 0], ['axis_type_fa' => 'فرعی', 'cnt' => 0]]], + ]; + + foreach ($share_by_road_geometry_data as $item) { + $key = $item['way_geometri'] - 1; + + foreach ($result[$key]['data'] as $k => $axis_data) { + if ($axis_data['axis_type_fa'] == $item['axis_type_fa']) { + $result[$key]['data'][$k]['cnt'] = $item['cnt']; + break; + } + } + } + + $data['share_of_accidents_by_road_geometry'] = $result; + // END + + // collision type + $collision_types_with_zero_accidents = DailyAccident::selectRaw('0 as percentage, collision_type, collision_type_fa') + ->whereNotIn('collision_type', function ($query) use ($province_id, $from_date, $to_date) { + $query->select('collision_type')->distinct() + ->from('daily_accidents') + ->when($province_id, function ($query, $province_id) { + $query->where('province_id', $province_id); + }) + ->when(($from_date && $to_date), function ($query) use ($from_date, $to_date) { + $query->whereBetween('accident_date', [$from_date . ' 00:00:00', $to_date . ' 23:59:59']); + }); + + }) + ->groupBy('collision_type'); + + // dd($collision_types_with_zero_accidents->get()) ; + + $data['collision_type'] = DailyAccident::when($province_id, function ($query, $province_id) { + $query->where('province_id', $province_id); + }) + ->when(($from_date && $to_date), function ($query) use ($from_date, $to_date) { + $query->whereBetween('accident_date', [$from_date . ' 00:00:00', $to_date . ' 23:59:59']); + }) + ->whereNotNull(['collision_type', 'collision_type_fa']) + ->groupBy('collision_type') + ->selectRaw('round(count(*) * 100 / sum(count(*)) over(), 1) as percentage, collision_type, collision_type_fa') + ->union($collision_types_with_zero_accidents) + ->orderBy('percentage', 'desc') + ->get(); + // END + + + // per day + $where_province_exists = ($province_id) ? "province_id = $province_id and" : ''; + $where_date_exists = ($from_date && $to_date) ? "accident_date BETWEEN '$from_date 00:00:00' and '$to_date 23:59:59' and" : ''; + // dd($where_date_exists); + $per_day_array = DB::select("SELECT t1.*, round(sum(t1.cnt) over(PARTITION by day_part) * 100 / sum(t1.cnt) over(), 1) as day_percentage + from + (select count(*) as cnt, sum(count(*)) over() as total, round(count(*) * 100/ sum(count(*)) over(), 1) as percent, accident_type, accident_type_fa, 'day' as day_part + from daily_accidents da where $where_province_exists $where_date_exists accident_time BETWEEN '06:00:00' and '18:00:00' group by accident_type + UNION + select count(*) as cnt, sum(count(*)) over() as total, round(count(*) * 100/ sum(count(*)) over(), 1) as percent, accident_type, accident_type_fa, 'night' as day_part + from daily_accidents da where $where_province_exists $where_date_exists accident_time not BETWEEN '06:00:00' and '18:00:00' group by accident_type)t1 + order by day_part"); + + // dd($per_day_array); + + $per_day_result = [ + ['accident_type_fa' => 'خسارتی', 'night' => ['cnt' => 0, 'percent' => 0, 'total_percentage' => 0], 'day' => ['cnt' => 0, 'percent' => 0, 'total_percentage' => 0]], + ['accident_type_fa' => 'جرحی', 'night' => ['cnt' => 0, 'percent' => 0, 'total_percentage' => 0], 'day' => ['cnt' => 0, 'percent' => 0, 'total_percentage' => 0]], + ['accident_type_fa' => 'فوتی', 'night' => ['cnt' => 0, 'percent' => 0, 'total_percentage' => 0], 'day' => ['cnt' => 0, 'percent' => 0, 'total_percentage' => 0]] + ]; + + $per_day_array = json_decode(json_encode($per_day_array), true); + + foreach ($per_day_array as $item) { + $key = $item['accident_type'] - 1; + $per_day_result[$key][$item['day_part']]['cnt'] = $item['cnt']; + $per_day_result[$key][$item['day_part']]['percent'] = $item['percent']; + // $per_day_result[$key][$item['day_part']]['total_percentage'] = $item['day_percentage']; + + for ($i=0; $i < count($per_day_result); $i++) { + $per_day_result[$i][$item['day_part']]['total_percentage'] = $item['day_percentage']; + } + } + + $data['per_day'] = $per_day_result; + // END + + return view('posters.DailyAccidentPoster', compact("data")); + } +} diff --git a/app/Http/Controllers/V3/Dashboard/Harim/DetailController.php b/app/Http/Controllers/V3/Dashboard/Harim/DetailController.php new file mode 100644 index 00000000..2b63341a --- /dev/null +++ b/app/Http/Controllers/V3/Dashboard/Harim/DetailController.php @@ -0,0 +1,33 @@ +successResponse(HarimState::query()->get(['id', 'name'])); + } + + /** + * @throws Throwable + */ + public function histories(Harim $harim): JsonResponse + { + throw_if($harim->province_id != auth()->user()->province_id, new ProhibitedAction("شما دسترسی لازم جهت مشاهده ی این صفحه را ندارید")); + + return $this->successResponse($harim->histories() + ->orderBy('id', 'desc') + ->get(['id', 'expert_description', 'action_name', 'previous_state_name'])); + } +} diff --git a/app/Http/Controllers/V3/Dashboard/Harim/GeneralManagerController.php b/app/Http/Controllers/V3/Dashboard/Harim/GeneralManagerController.php index 73685ed5..fa18738d 100644 --- a/app/Http/Controllers/V3/Dashboard/Harim/GeneralManagerController.php +++ b/app/Http/Controllers/V3/Dashboard/Harim/GeneralManagerController.php @@ -8,14 +8,17 @@ use App\Events\V3\Dashboard\Harim\ConfirmGuaranteeLetterNeedEvent; use App\Events\V3\Dashboard\Harim\ConfirmNoRoadAccessNeedEvent; use App\Events\V3\Dashboard\Harim\ConfirmRoadAccessEditNeedEvent; use App\Events\V3\Dashboard\Harim\ConfirmRoadAccessNeedEvent; +use App\Events\V3\Dashboard\Harim\PaymentExecutedEvent; use App\Events\V3\Dashboard\Harim\RejectRequestEvent; use App\Facades\DataTable\DataTableFacade; use App\Http\Controllers\Controller; -use App\Http\Requests\V3\Dashboard\Harim\GeneralManager\ConfirmRoadAccessEditNeedRequest; -use App\Http\Requests\V3\Dashboard\Harim\GeneralManager\ConfirmRoadAccessNeedRequest; use App\Http\Requests\V3\Dashboard\Harim\GeneralManager\ConfirmGuaranteeLetterNeedRequest; use App\Http\Requests\V3\Dashboard\Harim\GeneralManager\ConfirmNoRoadAccessNeedRequest; +use App\Http\Requests\V3\Dashboard\Harim\GeneralManager\ConfirmPaymentRequest; +use App\Http\Requests\V3\Dashboard\Harim\GeneralManager\ConfirmRoadAccessEditNeedRequest; +use App\Http\Requests\V3\Dashboard\Harim\GeneralManager\ConfirmRoadAccessNeedRequest; use App\Http\Requests\V3\Dashboard\Harim\GeneralManager\ReferFileRequest; +use App\Http\Requests\V3\Dashboard\Harim\GeneralManager\ReferPaymentRequest; use App\Http\Requests\V3\Dashboard\Harim\GeneralManager\ReferRequest; use App\Http\Requests\V3\Dashboard\Harim\GeneralManager\RejectRequest; use App\Http\Requests\V3\Dashboard\Harim\GeneralManager\ShowRequest; @@ -23,7 +26,7 @@ use App\Http\Traits\ApiResponse; use App\Models\Harim; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; -use Illuminate\Support\Facades\DB; +use Throwable; class GeneralManagerController extends Controller { @@ -32,7 +35,15 @@ class GeneralManagerController extends Controller public function index(Request $request): JsonResponse { $query = Harim::query() - ->where('edareh_shahri_id', '=', auth()->user()->edarate_shahri_id); + ->where('province_id', '=', auth()->user()->province_id) + ->orderByRaw(" + CASE state_id + WHEN 4 THEN 1 + WHEN 7 THEN 2 + WHEN 15 THEN 3 + ELSE 4 + END + "); $data = DataTableFacade::run( $query, @@ -44,201 +55,173 @@ class GeneralManagerController extends Controller return response()->json($data); } + /** + * @throws Throwable + */ public function rejectRequest(RejectRequest $request, Harim $harim): JsonResponse { - DB::transaction(function () use ($request, $harim) - { - $action = HarimAction::CONFIRM->value; + $harim->updateStateWithHistory( + action: HarimAction::CONFIRM->value, + description: $request->expert_description, + data: [ + 'state_id' => HarimStates::EMKAN_PAZIR_NEMEBASHAD->value, + 'state_name' => HarimStates::EMKAN_PAZIR_NEMEBASHAD->label(), + ] + ); - $harim->histories()->create([ - 'expert_id' => auth()->user()->id, - 'previous_state_id' => $harim->state_id, - 'previous_state_name' => $harim->state_name, - 'expert_description' => $request->expert_description, - 'action_id' => $action, - 'action_name' => HarimAction::name($action), - ]); - - $state = HarimStates::EMKAN_PAZIR_NEMEBASHAD->value; - - $harim->update([ - 'state_id' => $state, - 'state_name' => HarimStates::name($state), - ]); - - RejectRequestEvent::dispatch($harim); - }); + RejectRequestEvent::dispatch($harim); return $this->successResponse(); } + /** + * @throws Throwable + */ public function referRequest(ReferRequest $request, Harim $harim): JsonResponse { - DB::transaction(function () use ($request, $harim) - { - $action = HarimAction::REFER->value; - - $harim->histories()->create([ - 'expert_id'=> auth()->user()->id, - 'previous-state_id' => $harim->state_id, - 'previous_state_name' => $harim->state_name, - 'export_description' => $request->export_description, - 'action_id' => $action, - 'action_name' => HarimAction::name($action), - ]); - - $state = HarimStates::BARESI_TAVASOT_MOAVEN->value; - - $harim->update([ - 'state_id' => $state, - 'state_name' => HarimStates::name($state), - ]); - }); + $harim->updateStateWithHistory( + action: HarimAction::REFER->value, + description: $request->expert_description, + data: [ + 'state_id' => HarimStates::BARESI_TAVASOT_MOAVEN->value, + 'state_name' => HarimStates::BARESI_TAVASOT_MOAVEN->label(), + ] + ); return $this->successResponse(); } + /** + * @throws Throwable + */ public function referFile(ReferFileRequest $request, Harim $harim): JsonResponse { - DB::transaction(function () use ($request, $harim) - { - $action = HarimAction::REFER->value; - - $harim->histories()->create([ - 'expert_id'=> auth()->user()->id, - 'previous-state_id' => $harim->state_id, - 'previous_state_name' => $harim->state_name, - 'export_description' => $request->export_description, - 'action_id' => $action, - 'action_name' => HarimAction::name($action), - ]); - - $state = HarimStates::BARESI_FILE_APLODE_SHODE_TAVASOTE_MOAVEN->value; - - $harim->update([ - 'state_id' => $state, - 'state_name' => HarimStates::name($state), - ]); - }); + $harim->updateStateWithHistory( + action: HarimAction::REFER->value, + description: $request->expert_description, + data: [ + 'state_id' => HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MOAVEN->value, + 'state_name' => HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MOAVEN->label(), + ] + ); return $this->successResponse(); } + /** + * @throws Throwable + */ public function confirmRoadAccessNeed(ConfirmRoadAccessNeedRequest $request, Harim $harim): JsonResponse { - DB::transaction(function () use ($request, $harim) - { - $action = HarimAction::CONFIRM->value; + $harim->updateStateWithHistory( + action: HarimAction::CONFIRM->value, + description: $request->expert_description, + data: [ + 'state_id' => HarimStates::ERSAL_BE_PANJAREH_VAHED_NIAZ_BE_RAH_DASTRASI->value, + 'state_name' => HarimStates::ERSAL_BE_PANJAREH_VAHED_NIAZ_BE_RAH_DASTRASI->label(), + ] + ); - $harim->histories()->create([ - 'expert_id' => auth()->user()->id, - 'previous_state_id' => $harim->state_id, - 'previous_state_name' => $harim->state_name, - 'expert_description' => $request->expert_description, - 'action_id' => $action, - 'action_name' => HarimAction::name($action), - ]); - - $state = HarimStates::ERSAL_BE_PANJAREH_VAHED_NIAZ_BE_RAH_DASTRASI->value; - - $harim->update([ - 'state_id' => $state, - 'state_name' => HarimStates::name($state), - ]); - - ConfirmRoadAccessNeedEvent::dispatch($harim); - }); + ConfirmRoadAccessNeedEvent::dispatch($harim); return $this->successResponse(); } + /** + * @throws Throwable + */ public function confirmNoRoadAccessNeed(ConfirmNoRoadAccessNeedRequest $request, Harim $harim): JsonResponse { - DB::transaction(function () use ($request, $harim) - { - $action = HarimAction::CONFIRM->value; + $harim->updateStateWithHistory( + action: HarimAction::CONFIRM->value, + description: $request->expert_description, + data: [ + 'state_id' => HarimStates::ERSAL_BE_PANJAREH_VAHED_BEDONEH_NIAZ_BE_RAH_DASTRASI->value, + 'state_name' => HarimStates::ERSAL_BE_PANJAREH_VAHED_BEDONEH_NIAZ_BE_RAH_DASTRASI->label(), + ] + ); - $harim->histories()->create([ - 'expert_id' => auth()->user()->id, - 'previous_state_id' => $harim->state_id, - 'previous_state_name' => $harim->state_name, - 'expert_description' => $request->expert_description, - 'action_id' => $action, - 'action_name' => HarimAction::name($action), - ]); - - $state = HarimStates::ERSAL_BE_PANJAREH_VAHED_BEDONEH_NIAZ_BE_RAH_DASTRASI->value; - - $harim->update([ - 'state_id' => $state, - 'state_name' => HarimStates::name($state), - ]); - - ConfirmNoRoadAccessNeedEvent::dispatch($harim); - - }); + ConfirmNoRoadAccessNeedEvent::dispatch($harim); return $this->successResponse(); } + /** + * @throws Throwable + */ public function confirmRoadAccessEditNeed(ConfirmRoadAccessEditNeedRequest $request, Harim $harim): JsonResponse { - DB::transaction(function () use ($request, $harim) - { - $action = HarimAction::CONFIRM->value; + $harim->updateStateWithHistory( + action: HarimAction::CONFIRM->value, + description: $request->expert_description, + data: [ + 'state_id' => HarimStates::UPDATE_RAHE_DASTRASI_BARGOZARE_SHODE->value, + 'state_name' => HarimStates::UPDATE_RAHE_DASTRASI_BARGOZARE_SHODE->label(), + ] + ); - $harim->histories()->create([ - 'expert_id' => auth()->user()->id, - 'previous_state_id' => $harim->state_id, - 'previous_state_name' => $harim->state_name, - 'expert_description' => $request->expert_description, - 'action_id' => $action, - 'action_name' => HarimAction::name($action), - ]); - - $state = HarimStates::UPDATE_FILE_BARGOZARE_SHODE->value; - - $harim->update([ - 'state_id' => $state, - 'state_name' => HarimStates::name($state), - ]); - - ConfirmRoadAccessEditNeedEvent::dispatch($harim); - }); + ConfirmRoadAccessEditNeedEvent::dispatch($harim); return $this->successResponse(); } + /** + * @throws Throwable + */ public function confirmGuaranteeLetterNeed(ConfirmGuaranteeLetterNeedRequest $request, Harim $harim): JsonResponse { - DB::transaction(function () use ($request, $harim) - { - $action = HarimAction::CONFIRM->value; + $harim->updateStateWithHistory( + action: HarimAction::CONFIRM->value, + description: $request->expert_description, + data: [ + 'state_id' => HarimStates::DARYAFTE_ARSE_VA_AYAN_NAHAI->value, + 'state_name' => HarimStates::DARYAFTE_ARSE_VA_AYAN_NAHAI->label(), + ] + ); - $harim->histories()->create([ - 'expert_id' => auth()->user()->id, - 'previous_state_id' => $harim->state_id, - 'previous_state_name' => $harim->state_name, - 'expert_description' => $request->expert_description, - 'action_id' => $action, - 'action_name' => HarimAction::name($action), - ]); - - $state = HarimStates::ERSAL_ZEMANAT_NAME_TAVASOTE_KARBAR->value; - - $harim->update([ - 'state_id' => $state, - 'state_name' => HarimStates::name($state), - ]); - - ConfirmGuaranteeLetterNeedEvent::dispatch($harim); - }); + ConfirmGuaranteeLetterNeedEvent::dispatch($harim); return $this->successResponse(); } public function show(ShowRequest $request, Harim $harim): JsonResponse { - return $this->successResponse($harim->load('histories')); + return $this->successResponse($harim); + } + + /** + * @throws Throwable + */ + public function referPayment(ReferPaymentRequest $request, Harim $harim): JsonResponse + { + $harim->updateStateWithHistory( + action: HarimAction::REFER->value, + description: $request->expert_description, + data: [ + 'state_id' => HarimStates::BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_MOAVEN->value, + 'state_name' => HarimStates::BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_MOAVEN->label(), + ] + ); + + return $this->successResponse(); + } + + /** + * @throws Throwable + */ + public function confirmPayment(ConfirmPaymentRequest $request, Harim $harim): JsonResponse + { + $harim->updateStateWithHistory( + action: HarimAction::CONFIRM->value, + description: $request->expert_description, + data: [ + 'state_id' => HarimStates::ETMAM_FARAYAND->value, + 'state_name' => HarimStates::ETMAM_FARAYAND->label(), + ] + ); + + PaymentExecutedEvent::dispatch(); + + return $this->successResponse(); } } diff --git a/app/Http/Controllers/V3/Dashboard/Harim/HarimOfficeController.php b/app/Http/Controllers/V3/Dashboard/Harim/HarimOfficeController.php index 242aa8d7..1978b02c 100644 --- a/app/Http/Controllers/V3/Dashboard/Harim/HarimOfficeController.php +++ b/app/Http/Controllers/V3/Dashboard/Harim/HarimOfficeController.php @@ -6,27 +6,37 @@ use App\Enums\HarimAction; use App\Enums\HarimStates; use App\Facades\DataTable\DataTableFacade; use App\Http\Controllers\Controller; -use App\Http\Requests\V3\Dashboard\Harim\HarimOffice\FileRejectedRequest; +use App\Http\Requests\V3\Dashboard\Harim\HarimOffice\ComputingPaymentRequest; use App\Http\Requests\V3\Dashboard\Harim\HarimOffice\FileAcceptedRequest; +use App\Http\Requests\V3\Dashboard\Harim\HarimOffice\FileRejectedRequest; +use App\Http\Requests\V3\Dashboard\Harim\HarimOffice\NeedRoadAccessRequest; +use App\Http\Requests\V3\Dashboard\Harim\HarimOffice\ReferRequest; use App\Http\Requests\V3\Dashboard\Harim\HarimOffice\RejectRequest; use App\Http\Requests\V3\Dashboard\Harim\HarimOffice\ShowRequest; -use App\Http\Requests\V3\Dashboard\Harim\HarimOffice\NeedRoadAccessRequest; use App\Http\Requests\V3\Dashboard\Harim\HarimOffice\WithoutRoadAccessRequest; use App\Http\Traits\ApiResponse; use App\Models\Harim; use App\Models\Province; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; -use Illuminate\Support\Facades\DB; +use Throwable; class HarimOfficeController extends Controller { - use ApiResponse ; + use ApiResponse; public function index(Request $request): JsonResponse { $query = Harim::query() - ->where('edareh_shahri_id', '=', auth()->user()->edarate_shahri_id); + ->where('province_id', '=', auth()->user()->province_id) + ->orderByRaw(" + CASE state_id + WHEN 2 THEN 1 + WHEN 5 THEN 2 + WHEN 13 THEN 3 + ELSE 4 + END + "); $data = DataTableFacade::run( $query, @@ -38,137 +48,120 @@ class HarimOfficeController extends Controller return response()->json($data); } - + /** + * @throws Throwable + */ public function rejectRequest(RejectRequest $request, Harim $harim): JsonResponse { - DB::transaction(function () use ($request, $harim) { - $action = HarimAction::NO->value; - $harim->histories()->create([ - 'expert_id' => auth()->user()->id, - 'previous_state_id' => $harim->state_id, - 'previous_state_name' => $harim->state_name, - 'expert_description' => $request->expert_description, - 'action_id' => $action, - 'action_name' => HarimAction::name($action), - ]); - - $state = HarimStates::BARESI_TAVASOT_MOAVEN->value; - - $harim->update([ - 'state_id' => $state, - 'state_name' => HarimStates::name($state), + $harim->updateStateWithHistory( + action: HarimAction::NO->value, + description: $request->expert_description, + data: [ + 'state_id' => HarimStates::BARESI_TAVASOT_MOAVEN->value, + 'state_name' => HarimStates::BARESI_TAVASOT_MOAVEN->label(), 'is_possible' => false, - ]); - }); + ] + ); return $this->successResponse(); } + /** + * @throws Throwable + */ + public function referRequest(ReferRequest $request, Harim $harim): JsonResponse + { + $harim->updateStateWithHistory( + action: HarimAction::REFER->value, + description: $request->expert_description, + data: [ + 'state_id' => HarimStates::BARESI_EDARE_SHAHRESTAN->value, + 'state_name' => HarimStates::BARESI_EDARE_SHAHRESTAN->label(), + ] + ); + return $this->successResponse(); + } + + /** + * @throws Throwable + */ public function needRoadAccess(NeedRoadAccessRequest $request, Harim $harim): JsonResponse { - DB::transaction(function () use ($request,$harim) { - $action = HarimAction::YES->value; - $harim->histories()->create([ - 'expert_id' => auth()->user()->id, - 'previous_state_id' => $harim->state_id, - 'previous_state_name' => $harim->state_name, - 'expert_description' => $request->expert_description, - 'action_id' => $action, - 'action_name' => HarimAction::name($action), - ]); - - $state = HarimStates::BARESI_TAVASOT_MOAVEN->value; - - $harim ->update([ - 'state_id' => $state, - 'state_name' => HarimStates::name($state), + $harim->updateStateWithHistory( + action: HarimAction::YES->value, + description: $request->expert_description, + data: [ + 'state_id' => HarimStates::BARESI_TAVASOT_MOAVEN->value, + 'state_name' => HarimStates::BARESI_TAVASOT_MOAVEN->label(), 'is_possible' => true, 'need_access_road' => true, - 'need_payment' => $request->need_payment - ]); - }); + 'need_payment' => $request->need_payment, + ] + ); return $this->successResponse(); } + /** + * @throws Throwable + */ public function withoutRoadAccess(WithoutRoadAccessRequest $request, Harim $harim): JsonResponse { - DB::transaction(function () use ($request,$harim) { - $action = HarimAction::YES->value; - $harim->histories()->create([ - 'expert_id' => auth()->user()->id, - 'previous_state_id' => $harim->state_id, - 'previous_state_name' => $harim->state_name, - 'expert_description' => $request->expert_description, - 'action_id' => $action, - 'action_name' => HarimAction::name($action), - ]); - - $state = HarimStates::BARESI_TAVASOT_MOAVEN->value; - - $harim ->update([ - 'state_id' => $state, - 'state_name' => HarimStates::name($state), + $harim->updateStateWithHistory( + action: HarimAction::YES->value, + description: $request->expert_description, + data: [ + 'state_id' => HarimStates::BARESI_TAVASOT_MOAVEN->value, + 'state_name' => HarimStates::BARESI_TAVASOT_MOAVEN->label(), 'is_possible' => true, 'need_access_road' => false, - 'need_payment' => $request->need_payment - ]); - }); + 'need_payment' => $request->need_payment, + ] + ); return $this->successResponse(); } + + /** + * @throws Throwable + */ public function fileAccepted(FileAcceptedRequest $request, Harim $harim): JsonResponse { - DB::transaction(function () use ($request,$harim) { - $action = HarimAction::YES->value; - $harim->histories()->create([ - 'expert_id' => auth()->user()->id, - 'previous_state_id' => $harim->state_id, - 'previous_state_name' => $harim->state_name, - 'expert_description' => $request->expert_description, - 'action_id' => $action, - 'action_name' => HarimAction::name($action), - ]); - - $state = HarimStates::BARESI_FILE_APLODE_SHODE_TAVASOTE_MOAVEN->value; - - $harim ->update([ - 'state_id' => $state, - 'state_name' => HarimStates::name($state), + $harim->updateStateWithHistory( + action: HarimAction::YES->value, + description: $request->expert_description, + data: [ + 'state_id' => HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MOAVEN->value, + 'state_name' => HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MOAVEN->label(), 'access_road_allowed' => true, - ]); - }); + ] + ); return $this->successResponse(); } + + /** + * @throws Throwable + */ public function fileRejected(FileRejectedRequest $request, Harim $harim): JsonResponse { - DB::transaction(function () use ($request,$harim) { - $action = HarimAction::NO->value; - $harim->histories()->create([ - 'expert_id' => auth()->user()->id, - 'previous_state_id' => $harim->state_id, - 'previous_state_name' => $harim->state_name, - 'expert_description' => $request->expert_description, - 'action_id' => $action, - 'action_name' => HarimAction::name($action), - ]); - - $state = HarimStates::BARESI_FILE_APLODE_SHODE_TAVASOTE_MOAVEN->value; - - $harim ->update([ - 'state_id' => $state, - 'state_name' => HarimStates::name($state), + $harim->updateStateWithHistory( + action: HarimAction::YES->value, + description: $request->expert_description, + data: [ + 'state_id' => HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MOAVEN->value, + 'state_name' => HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MOAVEN->label(), 'access_road_allowed' => false, - ]); - }); + ] + ); return $this->successResponse(); } + public function show(ShowRequest $request, Harim $harim): JsonResponse { - return $this->successResponse($harim->load('histories')); + return $this->successResponse($harim); } public function referToCity(Request $request, Harim $harim) @@ -181,4 +174,27 @@ class HarimOfficeController extends Controller 'province_name' => $province->name_fa, ]); } + + /** + * @throws Throwable + */ + public function computingPayment(ComputingPaymentRequest $request, Harim $harim): JsonResponse + { + $harim->updateStateWithHistory( + action: HarimAction::CONFIRM->value, + description: $request->expert_description, + data: [ + 'state_id' => HarimStates::BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_MOAVEN->value, + 'state_name' => HarimStates::BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_MOAVEN->label(), + 'traffic' => $request->traffic, + 'position' => $request->position, + 'final_area_space' => $request->final_area_space, + 'road_type' => $request->road_type, + 'final_plan_space' => $request->final_plan_space, + 'payment_amount' => $request->payment_amount, + ] + ); + + return $this->successResponse(); + } } diff --git a/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php b/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php index 4c91eda7..dcf81299 100644 --- a/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php +++ b/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php @@ -11,109 +11,125 @@ use App\Http\Requests\V3\Dashboard\Harim\PanjareVahed\ReceiveNewRequest; use App\Http\Traits\ApiResponse; use App\Models\City; use App\Models\Harim; -use Illuminate\Database\Eloquent\ModelNotFoundException; +use Illuminate\Http\JsonResponse; use Illuminate\Support\Facades\DB; class PanjareVahedController extends Controller { use ApiResponse; - public function receiveNewRequest(ReceiveNewRequest $request) + public function receiveNewRequest(ReceiveNewRequest $request): JsonResponse { - $wkt = 'POLYGON((' . implode(',', array_map(fn($c) => "{$c[0]} {$c[1]}", $request->primary_area['coordinates'])) . '))'; - $result = DB::selectOne("SELECT ST_AsText(ST_PointOnSurface(ST_GeomFromText(?, 4326))) AS point", [$wkt]); + $wkt = 'POLYGON(('.implode(',', array_map(fn ($c) => "{$c[0]} {$c[1]}", $request->primary_area['coordinates'])).'))'; + $result = DB::selectOne('SELECT ST_AsText(ST_PointOnSurface(ST_GeomFromText(?, 4326))) AS point', [$wkt]); preg_match('/POINT\(([^ ]+) ([^ ]+)\)/', $result->point, $matches); - try { - $city = City::query() - ->whereRaw("ST_Contains( - geometry, - ST_GeomFromText('POINT($matches[1] $matches[2])', 4326))" - ) - ->firstOrFail(['id', 'name_fa', 'province_id']); - } - catch (ModelNotFoundException $exception){ - $city = City::query() - ->orderByRaw("ST_Distance( - geometry, - ST_GeomFromText('POINT($matches[1] $matches[2])', 4326)) ASC" - ) - ->first(['id', 'name_fa', 'province_id']); - } + $city = City::findCityWithLatLng(lat:$matches[2], lng: $matches[1]); - $state = HarimStates::BARESI_EDARE_SHAHRESTAN->value; + $harim = Harim::query()->firstOrCreate(['panjare_vahed_id' => $request->request_id], + [ + 'state_id' => HarimStates::BARESI_EDARE_SHAHRESTAN->value, + 'state_name' => HarimStates::BARESI_EDARE_SHAHRESTAN->label(), + 'panjare_vahed_id' => $request->request_id, + 'national_id' => $request->national_id, + 'phone_number' => $request->phone_number, + 'request_date' => $request->request_date, + 'province_id' => $city->province_id, + 'province_name' => $city->province()->first()->name_fa, + 'city_id' => $city->id, + 'city_name' => $city->name_fa, + 'edareh_shahri_id' => $city->edarateShahri()->first()->id, + 'requested_organization' => $request->requested_organization, + 'plan_group' => $request->plan_group, + 'plan_title' => $request->plan_title, + 'worksheet_id' => $request->worksheet, + 'response_options' => json_encode($request->response_options), + 'isic' => $request->isic, + 'primary_area' => json_encode($request->primary_area), + 'data' => $request->data, + ] + ); - Harim::query()->create([ - 'state_id' => $state, - 'state_name' => HarimStates::name($state), - 'panjare_vahed_id' => $request->request_id, - 'national_id' => $request->national_id, - 'phone_number' => $request->phone_number, - 'request_date' => $request->request_date, - 'province_id' => $city->province_id, - 'province_name' => $city->province()->first()->name_fa, - 'city_id' => $city->id, - 'city_name' => $city->name_fa, - 'edareh_shahri_id' => $city->edarateShahri()->first()->id, - 'requested_organization' => $request->requested_organization, - 'plan_group' => $request->plan_group, - 'plan_title' => $request->plan_title, - 'worksheet_id' => $request->worksheet, - 'response_options' => json_encode($request->response_options), - 'isic' => $request->isic, - 'primary_area' => json_encode($request->primary_area), + $harim->panjarehVahedHistories()->create([ + 'harim_id' => $harim->id, + 'data' => $request->data, ]); - return $this->successResponse([ + return response()->json([ + 'id' => $harim->id, 'city' => $city->edarateShahri()->first()->name_fa, 'province' => $city->province()->first()->name_fa, + 'statusCode' => 200, + 'message' => 'successful', ]); } - public function getAccessRoad(GetAccessRoadRequest $request) + public function getAccessRoad(GetAccessRoadRequest $request): JsonResponse { - $state = HarimStates::BARESI_FILE_APLODE_SHODE_TAVASOTE_DAFTAR_HARIM->value; + $harim = Harim::query()->firstWhere('panjare_vahed_id', '=', $request->request_id); - Harim::query() - ->firstWhere('panjare_vahed_id', '=', $request->request_id) - ->update([ - 'state_id' => $state, - 'state_name' => HarimStates::name($state), + $harim->panjarehVahedHistories()->create([ + 'harim_id' => $harim->id, + 'data' => $harim->data, + ]); + + $harim->update([ + 'state_id' => HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_DAFTAR_HARIM->value, + 'state_name' => HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_DAFTAR_HARIM->label(), 'access_road' => json_encode($request->access_road), + 'data' => $request->data, ]); - return $this->successResponse(); + return response()->json([ + 'id' => $harim->id, + 'statusCode' => 200, + 'message' => 'successful', + ]); } - - public function getRejectRequest(GetRejectRequest $request) + public function getRejectRequest(GetRejectRequest $request): JsonResponse { - $state = HarimStates::MOKHALEFAT_BA_DASTGAH->value; + $harim = Harim::query()->firstWhere('panjare_vahed_id', '=', $request->request_id); - Harim::query() - ->firstWhere('panjare_vahed_id', '=', $request->request_id) - ->update([ - 'state_id' => $state, - 'state_name' => HarimStates::name($state), - ]); + $harim->panjarehVahedHistories()->create([ + 'harim_id' => $harim->id, + 'data' => $harim->data, + ]); - return $this->successResponse(); + $harim->update([ + 'state_id' => HarimStates::MOKHALEFAT_BA_DASTGAH->value, + 'state_name' => HarimStates::MOKHALEFAT_BA_DASTGAH->label(), + 'data' => $request->data, + ]); + + return response()->json([ + 'id' => $harim->id, + 'statusCode' => 200, + 'message' => 'successful', + ]); } - - public function getFinalPolygons(GetFinalPolygonsRequest $request) + public function getFinalPolygons(GetFinalPolygonsRequest $request): JsonResponse { - $state = HarimStates::TAEDE_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_DAFTAR_HARIM->value; + $harim = Harim::query()->firstWhere('panjare_vahed_id', '=', $request->request_id); - Harim::query() - ->firstWhere('panjare_vahed_id', '=', $request->request_id) - ->update([ - 'state_id' => $state, - 'state_name' => HarimStates::name($state), - 'final_area' => json_encode($request->final_area), - 'final_plan' => json_encode($request->final_plan), - ]); + $harim->panjarehVahedHistories()->create([ + 'harim_id' => $harim->id, + 'data' => $harim->data, + ]); - return $this->successResponse(); + $harim->update([ + 'state_id' => HarimStates::BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_DAFTAR_HARIM->value, + 'state_name' => HarimStates::BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_DAFTAR_HARIM->label(), + 'final_area' => json_encode($request->final_area), + 'final_plan' => json_encode($request->final_plan), + 'data' => $request->data, + ]); + + return response()->json([ + 'id' => $harim->id, + 'statusCode' => 200, + 'message' => 'successful', + ]); } } diff --git a/app/Http/Controllers/V3/Dashboard/Harim/ProvinceOfficeController.php b/app/Http/Controllers/V3/Dashboard/Harim/ProvinceOfficeController.php index f4e38618..ac05c5c9 100644 --- a/app/Http/Controllers/V3/Dashboard/Harim/ProvinceOfficeController.php +++ b/app/Http/Controllers/V3/Dashboard/Harim/ProvinceOfficeController.php @@ -12,7 +12,7 @@ use App\Http\Traits\ApiResponse; use App\Models\Harim; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; -use Illuminate\Support\Facades\DB; +use Throwable; class ProvinceOfficeController extends Controller { @@ -22,7 +22,13 @@ class ProvinceOfficeController extends Controller { $user = auth()->user(); $query = Harim::query() - ->where('edareh_shahri_id', '=', $user->edarate_shahri_id); + ->where('edareh_shahri_id', '=', $user->edarate_shahri_id) + ->orderByRaw(" + CASE state_id + WHEN 1 THEN 1 + ELSE 2 + END + "); $data = DataTableFacade::run( $query, @@ -30,31 +36,25 @@ class ProvinceOfficeController extends Controller allowedFilters: ['*'], allowedSortings: ['*'], ); - return response()->json($data); + return response()->json($data); } + + /** + * @throws Throwable + */ public function feedback(FeedBackRequest $request, Harim $harim): JsonResponse { - DB::transaction(function () use ($request,$harim) { - $action = HarimAction::FEEDBACK->value; - - $harim->histories()->create([ - 'expert_id' => auth()->user()->id, - 'previous_state_id' => $harim->state_id, - 'previous_state_name' => $harim->state_name, - 'expert_description' => $request->expert_description, - 'action_id' => $action, - 'action_name' => HarimAction::name($action), - ]); - - $state = HarimStates::BARESI_TAVASOT_DAFTAR_HARIM->value; - - $harim ->update([ - 'state_id' => $state, - 'state_name' => HarimStates::name($state), + $harim->updateStateWithHistory( + action: HarimAction::FEEDBACK->value, + description: $request->expert_description, + data: [ + 'state_id' => HarimStates::BARESI_TAVASOT_DAFTAR_HARIM->value, + 'state_name' => HarimStates::BARESI_TAVASOT_DAFTAR_HARIM->label(), 'forbidden_area' => $request->input('forbidden_area'), - ]); - }); + ] + ); + return $this->successResponse(); } diff --git a/app/Http/Controllers/V3/Dashboard/Harim/TechnicalDeputyController.php b/app/Http/Controllers/V3/Dashboard/Harim/TechnicalDeputyController.php index b9004306..87fee162 100644 --- a/app/Http/Controllers/V3/Dashboard/Harim/TechnicalDeputyController.php +++ b/app/Http/Controllers/V3/Dashboard/Harim/TechnicalDeputyController.php @@ -6,8 +6,10 @@ use App\Enums\HarimAction; use App\Enums\HarimStates; use App\Facades\DataTable\DataTableFacade; use App\Http\Controllers\Controller; +use App\Http\Requests\V3\Dashboard\Harim\Deputy\ConfirmPaymentRequest; use App\Http\Requests\V3\Dashboard\Harim\Deputy\ConfirmRequest; use App\Http\Requests\V3\Dashboard\Harim\Deputy\ConfirmRoadAccessRequest; +use App\Http\Requests\V3\Dashboard\Harim\Deputy\ReferPaymentRequest; use App\Http\Requests\V3\Dashboard\Harim\Deputy\ReferRequest; use App\Http\Requests\V3\Dashboard\Harim\Deputy\ReferRoadAccessRequest; use App\Http\Requests\V3\Dashboard\Harim\Deputy\ShowRequest; @@ -15,122 +17,139 @@ use App\Http\Traits\ApiResponse; use App\Models\Harim; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; -use Illuminate\Support\Facades\DB; +use Throwable; class TechnicalDeputyController extends Controller { use ApiResponse; + public function index(Request $request): JsonResponse { $query = Harim::query() - ->where('edareh_shahri_id', '=', auth()->user()->edarate_shahri_id); + ->where('province_id', '=', auth()->user()->province_id) + ->orderByRaw(" + CASE state_id + WHEN 3 THEN 1 + WHEN 6 THEN 2 + WHEN 14 THEN 3 + ELSE 4 + END + "); $data = DataTableFacade::run( - $query, - $request, - allowedFilters: ['*'], - allowedSortings: ['*'], + $query, + $request, + allowedFilters: ['*'], + allowedSortings: ['*'], ); return response()->json($data); } + + /** + * @throws Throwable + */ public function confirmRequest(ConfirmRequest $request, Harim $harim): JsonResponse { - DB::transaction(function () use ($request,$harim) { - $action = HarimAction::CONFIRM->value; - - $harim->histories()->create([ - 'expert_id' => auth()->user()->id, - 'previous_state_id' => $harim->state_id, - 'previous_state_name' => $harim->state_name, - 'expert_description' => $request->expert_description, - 'action_id' => $action, - 'action_name' => HarimAction::name($action), - ]); - - $state = HarimStates::BARESI_TAVASOT_MODIR_KOL->value; - - $harim ->update([ - 'state_id' => $state, - 'state_name' => HarimStates::name($state), - ]); - }); + $harim->updateStateWithHistory( + action: HarimAction::CONFIRM->value, + description: $request->expert_description, + data: [ + 'state_id' => HarimStates::BARESI_TAVASOT_MODIR_KOL->value, + 'state_name' => HarimStates::BARESI_TAVASOT_MODIR_KOL->label(), + ] + ); return $this->successResponse(); } + + /** + * @throws Throwable + */ public function referRequest(ReferRequest $request, Harim $harim): JsonResponse { - DB::transaction(function () use ($request,$harim) { - $action = HarimAction::REFER->value; - - $harim->histories()->create([ - 'expert_id' => auth()->user()->id, - 'previous_state_id' => $harim->state_id, - 'previous_state_name' => $harim->state_name, - 'expert_description' => $request->expert_description, - 'action_id' => $action, - 'action_name' => HarimAction::name($action), - ]); - - $state = HarimStates::BARESI_TAVASOT_DAFTAR_HARIM->value; - - $harim->update([ - 'state_id' => $state, - 'state_name' => HarimStates::name($state), - ]); - }); + $harim->updateStateWithHistory( + action: HarimAction::REFER->value, + description: $request->expert_description, + data: [ + 'state_id' => HarimStates::BARESI_TAVASOT_DAFTAR_HARIM->value, + 'state_name' => HarimStates::BARESI_TAVASOT_DAFTAR_HARIM->label(), + ] + ); return $this->successResponse(); } + + /** + * @throws Throwable + */ public function confirmRoadAccess(ConfirmRoadAccessRequest $request, Harim $harim): JsonResponse { - DB::transaction(function () use ($request, $harim) { - $action = HarimAction::CONFIRM->value; - $harim->histories()->create([ - 'expert_id' => auth()->user()->id, - 'previous_state_id' => $harim->state_id, - 'previous_state_name' => $harim->state_name, - 'expert_description' => $request->expert_description, - 'action_id' => $action, - 'action_name' => HarimAction::name($action), - ]); - - $state = HarimStates::BARESI_FILE_APLODE_SHODE_TAVASOTE_MODIR_KOL->value; - - $harim->update([ - 'state_id' => $state, - 'state_name' => HarimStates::name($state), - ]); - }); + $harim->updateStateWithHistory( + action: HarimAction::CONFIRM->value, + description: $request->expert_description, + data: [ + 'state_id' => HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MODIR_KOL->value, + 'state_name' => HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MODIR_KOL->label(), + ] + ); return $this->successResponse(); } + /** + * @throws Throwable + */ public function referRoadAccess(ReferRoadAccessRequest $request, Harim $harim): JsonResponse { - DB::transaction(function () use ($request, $harim) { - $action = HarimAction::REFER->value; - $harim->histories()->create([ - 'expert_id' => auth()->user()->id, - 'previous_state_id' => $harim->state_id, - 'previous_state_name' => $harim->state_name, - 'expert_description' => $request->expert_description, - 'action_id' => $action, - 'action_name' => HarimAction::name($action), - ]); - - $state = HarimStates::BARESI_FILE_APLODE_SHODE_TAVASOTE_DAFTAR_HARIM->value; - - $harim->update([ - 'state_id' => $state, - 'state_name' => HarimStates::name($state), - ]); - }); + $harim->updateStateWithHistory( + action: HarimAction::REFER->value, + description: $request->expert_description, + data: [ + 'state_id' => HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_DAFTAR_HARIM->value, + 'state_name' => HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_DAFTAR_HARIM->label(), + ] + ); return $this->successResponse(); } + public function show(ShowRequest $request, Harim $harim): JsonResponse { - return $this->successResponse($harim->load('histories')); + return $this->successResponse($harim); + } + + /** + * @throws Throwable + */ + public function referPayment(ReferPaymentRequest $request, Harim $harim): JsonResponse + { + $harim->updateStateWithHistory( + action: HarimAction::REFER->value, + description: $request->expert_description, + data: [ + 'state_id' => HarimStates::BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_DAFTAR_HARIM->value, + 'state_name' => HarimStates::BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_DAFTAR_HARIM->label(), + ] + ); + + return $this->successResponse(); + } + + /** + * @throws Throwable + */ + public function confirmPayment(ConfirmPaymentRequest $request, Harim $harim): JsonResponse + { + $harim->updateStateWithHistory( + action: HarimAction::CONFIRM->value, + description: $request->expert_description, + data: [ + 'state_id' => HarimStates::BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_MODIR_KOL->value, + 'state_name' => HarimStates::BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_MODIR_KOL->label(), + ] + ); + + return $this->successResponse(); } } diff --git a/app/Http/Controllers/V3/Dashboard/Mission/ControlUnitController.php b/app/Http/Controllers/V3/Dashboard/Mission/ControlUnitController.php index d9ca292f..93f29906 100644 --- a/app/Http/Controllers/V3/Dashboard/Mission/ControlUnitController.php +++ b/app/Http/Controllers/V3/Dashboard/Mission/ControlUnitController.php @@ -14,18 +14,23 @@ use App\Services\Cartables\Mission\ControlUnitService; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; +use Throwable; class ControlUnitController extends Controller { use ApiResponse; + public function index(Request $request, ControlUnitService $controlUnitService): JsonResponse { return response()->json($controlUnitService->datatable($request)); } + /** + * @throws Throwable + */ public function start(StartRequest $request, Mission $mission): JsonResponse { - DB::transaction(function () use ($request, $mission) { + DB::transaction(function () use ($mission, $request) { $mission->histories()->create([ 'user_id' => auth()->user()->id, 'previous_state_id' => $mission->state_id, @@ -36,16 +41,20 @@ class ControlUnitController extends Controller $mission->update([ 'state_id' => $state, 'state_name' => MissionStates::name($state), - 'start_time' => now() + 'start_time' => now(), + 'km' => $request->km, ]); }); return $this->successResponse(); } + /** + * @throws Throwable + */ public function finish(FinishRequest $request, Mission $mission): JsonResponse { - DB::transaction(function () use ($request, $mission) { + DB::transaction(function () use ($mission) { $mission->histories()->create([ 'user_id' => auth()->user()->id, 'previous_state_id' => $mission->state_id, @@ -63,7 +72,7 @@ class ControlUnitController extends Controller }); if ($mission->category_id == 2) { - $rpc = new OperatorController(); + $rpc = new OperatorController; $rpc->store($mission); } diff --git a/app/Http/Controllers/V3/Dashboard/Mission/DetailController.php b/app/Http/Controllers/V3/Dashboard/Mission/DetailController.php index 2c5a5946..c253fe46 100644 --- a/app/Http/Controllers/V3/Dashboard/Mission/DetailController.php +++ b/app/Http/Controllers/V3/Dashboard/Mission/DetailController.php @@ -6,7 +6,6 @@ use App\Http\Controllers\Controller; use App\Http\Traits\ApiResponse; use App\Models\Mission; use Illuminate\Http\JsonResponse; -use Illuminate\Http\Request; class DetailController extends Controller { @@ -14,7 +13,7 @@ class DetailController extends Controller public function machines(Mission $mission): JsonResponse { - return $this->successResponse($mission->machines()->get(['cmms_machines.id', 'cmms_machines.machine_code', 'cmms_machines.car_name', 'cmms_machines.plak_number'])); + return $this->successResponse($mission->machine()->get(['id', 'machine_code', 'car_name'])); } public function rahdaran(Mission $mission): JsonResponse @@ -28,7 +27,7 @@ class DetailController extends Controller 'code' => $rahdar->code, 'is_driver' => (bool) $rahdar->pivot->is_driver, ]; - }); + }); return $this->successResponse($rahdaran); } diff --git a/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php b/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php index f8d632cb..adf24fe7 100644 --- a/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php +++ b/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php @@ -8,11 +8,12 @@ use App\Enums\MissionTypes; use App\Enums\MissionZones; use App\Http\Controllers\Controller; use App\Http\Controllers\V3\Dashboard\RoadPatrol\OperatorController; -use App\Http\Requests\V3\Mission\RequestPortal\NoProcessRequest; use App\Http\Requests\V3\Mission\RequestPortal\ContinueMissionRequest; +use App\Http\Requests\V3\Mission\RequestPortal\NoProcessRequest; use App\Http\Requests\V3\Mission\RequestPortal\StoreRequest; use App\Http\Requests\V3\Mission\RequestPortal\UpdateRequest; use App\Http\Traits\ApiResponse; +use App\Models\CMMSMachine; use App\Models\Mission; use App\Models\RoadObserved; use App\Services\Cartables\Mission\RequestPortalService; @@ -20,6 +21,7 @@ use Carbon\Carbon; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; +use Throwable; class RequestPortalController extends Controller { @@ -30,6 +32,9 @@ class RequestPortalController extends Controller return response()->json($requestPortalService->datatable($request)); } + /** + * @throws Throwable + */ public function store(StoreRequest $request): JsonResponse { DB::transaction(function () use ($request) { @@ -65,13 +70,6 @@ class RequestPortalController extends Controller ]); $mission->rahdaran()->sync($request->rahdaran); - - if ($category == 3){ - RoadObserved::query() - ->find($request->road_observed_id) - ->missions() - ->attach($mission->id); - } }); return $this->successResponse(); @@ -82,11 +80,14 @@ class RequestPortalController extends Controller return $this->successResponse($mission); } - public function continueMission(ContinueMissionRequest $request , Mission $mission): JsonResponse + /** + * @throws Throwable + */ + public function continueMission(ContinueMissionRequest $request, Mission $mission): JsonResponse { DB::transaction(function () use ($request, $mission) { $user = auth()->user(); - + $mission->update([ 'finish_time' => now(), 'state_id' => MissionStates::END_MISSION->value, @@ -95,6 +96,7 @@ class RequestPortalController extends Controller $state = MissionStates::START_MISSION->value; $category = $request->category_id; + $machine = CMMSMachine::query()->find($request->machine_id); $newMission = Mission::query()->create([ 'user_id' => $user->id, @@ -118,24 +120,21 @@ class RequestPortalController extends Controller 'category_id' => $category, 'category_name' => MissionCategory::name($category), 'explanation' => $request->explanation, - 'start_time' => now() + 'start_time' => now(), + 'machine_id' => $machine->id, + 'machine_code' => $machine->machine_code, ]); - $newMission->rahdaran()->sync($request->rahdaran); - $newMission->machines()->attach($request->machines); - $newMission->rahdaran()->attach($request->driver, ['is_driver' => true]); - - if ($category == 3){ - RoadObserved::query() - ->find($request->road_observed_id) - ->missions() - ->attach( $newMission->id); - } + $newMission->rahdaran()->sync($request->rahdaran); + $newMission->rahdaran()->attach($request->driver, ['is_driver' => true]); }); return $this->successResponse(); } + /** + * @throws Throwable + */ public function update(UpdateRequest $request, Mission $mission): JsonResponse { DB::transaction(function () use ($mission, $request) { @@ -159,33 +158,35 @@ class RequestPortalController extends Controller ]); $mission->rahdaran()->sync($request->rahdaran); - if ($request->category_id == 3){ - RoadObserved::query() - ->find($request->road_observed_id) - ->missions() - ->sync($mission->id); - } }); return $this->successResponse(); } + + /** + * @throws Throwable + */ public function destroy(Mission $mission): JsonResponse { DB::transaction(function () use ($mission) { $mission->rahdaran()->detach(); $mission->delete(); }); + return $this->successResponse(); } + + /** + * @throws Throwable + */ public function noProcess(NoProcessRequest $request): JsonResponse { DB::transaction(function () use ($request) { - $start = Carbon::parse($request->start_date); $end = Carbon::parse($request->end_date); $type = $start->diffInMinutes($end) > 480 ? MissionTypes::NO_PROCESS_ROZANE->value : MissionTypes::NO_PROCESS_SAATY->value; $user = auth()->user(); - $zone= $request->zone; + $zone = $request->zone; $state = MissionStates::END_MISSION->value; $mission = Mission::query()->create([ @@ -218,7 +219,7 @@ class RequestPortalController extends Controller $mission->rahdaran()->attach($request->driver, ['is_driver' => true]); if ($mission->category_id == 2) { - $rpc = new OperatorController(); + $rpc = new OperatorController; $rpc->store($mission); } }); diff --git a/app/Http/Controllers/V3/Dashboard/Mission/TransportationUnitController.php b/app/Http/Controllers/V3/Dashboard/Mission/TransportationUnitController.php index 79f9b66c..bbffd853 100644 --- a/app/Http/Controllers/V3/Dashboard/Mission/TransportationUnitController.php +++ b/app/Http/Controllers/V3/Dashboard/Mission/TransportationUnitController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers\V3\Dashboard\Mission; +use App\Enums\CmmsMachineStatus; use App\Enums\MissionStates; use App\Http\Controllers\Controller; use App\Http\Requests\V3\Mission\TransportaionUnit\AllocateRequest; @@ -13,6 +14,7 @@ use App\Services\Cartables\Mission\TransportationUnitService; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; +use Throwable; class TransportationUnitController extends Controller { @@ -23,37 +25,47 @@ class TransportationUnitController extends Controller return response()->json($transportationUnitService->dataTable($request)); } + /** + * @throws Throwable + */ public function allocate(AllocateRequest $request, Mission $mission): JsonResponse { DB::transaction(function () use ($request, $mission) { - $mission->machines()->attach($request->machines); - $mission->rahdaran()->attach($request->driver, ['is_driver'=>true]); + $mission->rahdaran()->attach($request->driver, ['is_driver' => true]); $mission->histories()->create([ 'user_id' => auth()->user()->id, 'previous_state_id' => $mission->state_id, - 'previous_state_name' => $mission->state_name + 'previous_state_name' => $mission->state_name, ]); $state = MissionStates::PENDING_CONFIRMATION->value; + $machine = CMMSMachine::query()->find($request->machine_id); + $mission->update([ 'state_id' => $state, 'state_name' => MissionStates::name($state), - 'km' => $request->km + 'machine_id' => $machine->id, + 'machine_code' => $machine->machine_code, ]); }); return $this->successResponse(); } + /** + * @throws Throwable + */ public function deallocate(DeallocateRequest $request, Mission $mission): JsonResponse { DB::transaction(function () use ($request, $mission) { + $mission->rahdaran()->wherePivot('is_driver', '=', true)->detach(); + $mission->histories()->create([ 'user_id' => auth()->user()->id, 'previous_state_id' => $mission->state_id, 'previous_state_name' => $mission->state_name, - 'user_description' => $request->description + 'user_description' => $request->description, ]); $state = MissionStates::REJECT_BY_TRANSPORTATION->value; @@ -61,7 +73,9 @@ class TransportationUnitController extends Controller $mission->update([ 'state_id' => $state, 'state_name' => MissionStates::name($state), - 'description' => $request->description + 'description' => $request->description, + 'machine_id' => null, + 'machine_code' => null, ]); }); @@ -73,6 +87,7 @@ class TransportationUnitController extends Controller return $this->successResponse( CMMSMachine::query() ->where('car_type', '=', $mission->car_type) +// ->where('status', '<>', CmmsMachineStatus::DAR_MAMORIAT->value) ->get(['machine_code', 'id', 'plak_number', 'car_name']) ); } diff --git a/app/Http/Controllers/V3/Dashboard/Mission/ViolationManagementController.php b/app/Http/Controllers/V3/Dashboard/Mission/ViolationManagementController.php new file mode 100644 index 00000000..4e6e95ad --- /dev/null +++ b/app/Http/Controllers/V3/Dashboard/Mission/ViolationManagementController.php @@ -0,0 +1,79 @@ +dataTable($request); + + return response()->json($data); + } + + public function noProcess(NoProcessRequest $request): JsonResponse + { + DB::transaction(function () use ($request) { + + $start = Carbon::parse($request->start_date); + $end = Carbon::parse($request->end_date); + $type = $start->diffInMinutes($end) > 480 ? MissionTypes::NO_PROCESS_ROZANE->value : MissionTypes::NO_PROCESS_SAATY->value; + $user = auth()->user(); + $zone = $request->zone; + $state = MissionStates::END_MISSION->value; + + $mission = Mission::query()->create([ + 'user_id' => $user->id, + 'username' => $user->username, + 'province_id' => $user->province_id, + 'province_name' => $user->province_fa, + 'edare_shahri_id' => $user->edarate_shahri_id ?? null, + 'edare_shahri_name' => $user->edarate_shahri_name ?? null, + 'zone' => $zone, + 'zone_fa' => MissionZones::name($zone), + 'type' => $type, + 'type_fa' => MissionTypes::name($type), + 'start_date' => $request->start_date, + 'end_date' => $request->end_date, + 'end_point' => $request->end_point, + 'area' => json_encode($request->area), + 'category_id' => $request->category_id, + 'category_name' => MissionCategory::name($request->category_id), + 'start_time' => $request->start_date, + 'finish_time' => $request->end_date, + 'state_id' => $state, + 'state_name' => MissionStates::name($state), + 'explanation' => $request->explanation, + 'request_date' => now(), + ]); + + $mission->rahdaran()->sync($request->rahdaran); + $mission->machines()->attach($request->machines); + $mission->rahdaran()->attach($request->driver, ['is_driver' => true]); + + if ($mission->category_id == 2) { + $rpc = new OperatorController; + $rpc->store($mission); + } + }); + + return $this->successResponse(); + } +} diff --git a/app/Http/Controllers/V3/Dashboard/ObservedItemController.php b/app/Http/Controllers/V3/Dashboard/ObservedItemController.php index b261a049..a1a391f5 100644 --- a/app/Http/Controllers/V3/Dashboard/ObservedItemController.php +++ b/app/Http/Controllers/V3/Dashboard/ObservedItemController.php @@ -16,6 +16,7 @@ use Illuminate\Validation\ValidationException; class ObservedItemController extends Controller { use ApiResponse; + public function show(ObservedItem $observedItem): JsonResponse { return $this->successResponse($observedItem); @@ -23,9 +24,9 @@ class ObservedItemController extends Controller public function filter(Request $request): JsonResponse { - $columns = array( + $columns = [ 'id', 'item_id', 'road_patrol_id', 'roadPatrol.start_time', 'roadPatrol.end_time', - ); + ]; $allowedFilters = $columns; $allowedSortings = $columns; @@ -76,7 +77,7 @@ class ObservedItemController extends Controller $item_end_coordinates = null; if ($info_item->needs_end_point) { - if (!isset($item['end_point'])) { + if (! isset($item['end_point'])) { throw ValidationException::withMessages([ "observed_items.$index.end_point" => __('validation.required', ['attribute' => 'end_point']), ]); diff --git a/app/Http/Controllers/V3/Dashboard/OtpManagementController.php b/app/Http/Controllers/V3/Dashboard/OtpManagementController.php index 307dc05d..6ceb64ec 100644 --- a/app/Http/Controllers/V3/Dashboard/OtpManagementController.php +++ b/app/Http/Controllers/V3/Dashboard/OtpManagementController.php @@ -7,7 +7,6 @@ use App\Http\Controllers\Controller; use App\Http\Requests\V3\Otp\GetOtpTokenRequest; use App\Http\Traits\ApiResponse; use Illuminate\Http\JsonResponse; -use Illuminate\Http\Request; class OtpManagementController extends Controller { diff --git a/app/Http/Controllers/V3/Dashboard/RoadItem/DetailController.php b/app/Http/Controllers/V3/Dashboard/RoadItem/DetailController.php index dc6d3efd..9dd1ed13 100644 --- a/app/Http/Controllers/V3/Dashboard/RoadItem/DetailController.php +++ b/app/Http/Controllers/V3/Dashboard/RoadItem/DetailController.php @@ -6,7 +6,6 @@ use App\Http\Controllers\Controller; use App\Http\Traits\ApiResponse; use App\Models\RoadItemsProject; use Illuminate\Http\JsonResponse; -use Illuminate\Http\Request; class DetailController extends Controller { diff --git a/app/Http/Controllers/V3/Dashboard/RoadItem/OperatorController.php b/app/Http/Controllers/V3/Dashboard/RoadItem/OperatorController.php index b62da19b..3f407048 100644 --- a/app/Http/Controllers/V3/Dashboard/RoadItem/OperatorController.php +++ b/app/Http/Controllers/V3/Dashboard/RoadItem/OperatorController.php @@ -11,12 +11,10 @@ use App\Http\Requests\V3\RoadItem\Operator\UpdateRequest; use App\Http\Traits\ApiResponse; use App\Models\EdarateShahri; use App\Models\InfoItem; -use App\Models\Mission; use App\Models\ObservedItem; use App\Models\RoadItemsProject; use App\Services\Cartables\RoadItem\OperatorService; use App\Services\NominatimService; -use Carbon\Carbon; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; @@ -29,24 +27,28 @@ use Throwable; class OperatorController extends Controller { use ApiResponse; + /** * Display a listing of the resource. */ public function index(Request $request, OperatorService $operatorService): JsonResponse { $data = $operatorService->dataTable($request); + return response()->json($data); } public function excel(Request $request, OperatorService $operatorService): BinaryFileResponse { - $name = 'گزارش از کارتابل عملیات فعالیت روزانه ' . verta()->now()->format('Y-m-d H:i') . '.xlsx'; + $name = 'گزارش از کارتابل عملیات فعالیت روزانه '.verta()->now()->format('Y-m-d H:i').'.xlsx'; $data = $operatorService->dataTable($request, true); + return Excel::download(new OperatorCartableReport($data['data']), $name); } /** * Store a newly created resource in storage. + * * @throws Throwable */ public function store(StoreRequest $request, NominatimService $nominatimService): JsonResponse @@ -55,13 +57,13 @@ class OperatorController extends Controller ->where('sub_item', $request->sub_item_id) ->firstOrFail(); - if ($info_item->needs_end_point && !$request->end_point) { + if ($info_item->needs_end_point && ! $request->end_point) { throw ValidationException::withMessages([ 'end_point' => __('validation.required', ['attribute' => 'end_point']), ]); } - if ((!$request->before_image || !$request->after_image) && $info_item->needs_image) { + if ((! $request->before_image || ! $request->after_image) && $info_item->needs_image) { throw ValidationException::withMessages([ 'before_image' => __('validation.required', ['attribute' => 'before_image']), 'after_image' => __('validation.required', ['attribute' => 'after_image']), @@ -72,8 +74,7 @@ class OperatorController extends Controller $end_coordinates = $info_item->needs_end_point ? explode(',', $request->end_point) : null; DB::transaction(function () use ($request, $nominatimService, - $start_coordinates, $end_coordinates, $info_item) - { + $start_coordinates, $end_coordinates, $info_item) { $user = auth()->user(); $road_item = RoadItemsProject::query()->create([ 'user_id' => $user->id, @@ -103,7 +104,7 @@ class OperatorController extends Controller 'edarat_name' => $user->edarate_shahri_name, 'activity_date' => $request->activity_date, 'activity_time' => $request->activity_time, - 'activity_date_time' => $request->activity_date." ".$request->activity_time, + 'activity_date_time' => $request->activity_date.' '.$request->activity_time, 'is_new' => 1, 'mission_id' => $request->mission_id, ]); @@ -111,13 +112,13 @@ class OperatorController extends Controller if ($request->has('after_image')) { $road_item->files()->create([ 'path' => FileFacade::save($request->file('after_image'), - "/road_items_projects_new/{$road_item->id}/after") + "/road_items_projects_new/{$road_item->id}/after"), ]); } if ($request->has('before_image')) { $road_item->files()->create([ 'path' => FileFacade::save($request->file('before_image'), - "/road_items_projects_new/{$road_item->id}/before") + "/road_items_projects_new/{$road_item->id}/before"), ]); } @@ -152,7 +153,7 @@ class OperatorController extends Controller $end_coordinates = null; if ($info_item->needs_end_point) { - if (!$request->end_point) { + if (! $request->end_point) { throw ValidationException::withMessages([ 'end_point' => __('validation.required', ['attribute' => 'end_point']), ]); @@ -166,14 +167,14 @@ class OperatorController extends Controller FileFacade::delete($roadItemsProject->files[0]->path, true); $roadItemsProject->files[0]->update([ 'path' => FileFacade::save($request->file('after_image'), - "/road_items_projects_new/{$roadItemsProject->id}/after") + "/road_items_projects_new/{$roadItemsProject->id}/after"), ]); } if ($request->has('before_image')) { FileFacade::delete($roadItemsProject->files[1]->path, true); $roadItemsProject->files[1]->update([ 'path' => FileFacade::save($request->file('before_image'), - "/road_items_projects_new/{$roadItemsProject->id}/before") + "/road_items_projects_new/{$roadItemsProject->id}/before"), ]); } } @@ -193,7 +194,6 @@ class OperatorController extends Controller $roadItemsProject->cmmsMachines()->sync($request->machines_id); $roadItemsProject->missions()->sync($request->mission_id); - auth()->user()->addActivityComplete(1155); }); diff --git a/app/Http/Controllers/V3/Dashboard/RoadItem/ReportController.php b/app/Http/Controllers/V3/Dashboard/RoadItem/ReportController.php index 448ec873..3c1a12ad 100644 --- a/app/Http/Controllers/V3/Dashboard/RoadItem/ReportController.php +++ b/app/Http/Controllers/V3/Dashboard/RoadItem/ReportController.php @@ -94,8 +94,9 @@ class ReportController extends Controller public function countryActivityExcelPerItem(Request $request, ReportService $reportService): BinaryFileResponse { auth()->user()->addActivityComplete(1034); - $name = 'گزارش کشوری از فعالیت روزانه و جاری - جدول 1 ' . verta()->now()->format('Y-m-d H-i') . '.xlsx'; + $name = 'گزارش کشوری از فعالیت روزانه و جاری - جدول 1 '.verta()->now()->format('Y-m-d H-i').'.xlsx'; $activities = $reportService->countryActivityPerItem($request); + return Excel::download(new CountryActivityPerItemReport([ 'activities' => $activities, 'provinces' => Province::all(['id', 'name_fa']), @@ -106,8 +107,9 @@ class ReportController extends Controller public function provinceActivityExcelPerItem(Request $request, ReportService $reportService): BinaryFileResponse { auth()->user()->addActivityComplete(1034); - $name = 'گزارش استانی از فعالیت روزانه و جاری - جدول 1 ' . verta()->now()->format('Y-m-d H-i') . '.xlsx'; + $name = 'گزارش استانی از فعالیت روزانه و جاری - جدول 1 '.verta()->now()->format('Y-m-d H-i').'.xlsx'; $activities = $reportService->provinceActivityPerItem($request); + return Excel::download(new ProvinceActivityPerItemReport([ 'activities' => $activities, 'edarateShahri' => EdarateShahri::query()->where('province_id', '=', $request->province_id)->get(['id', 'name_fa']), @@ -118,7 +120,7 @@ class ReportController extends Controller public function countryActivityExcelPerSubItem(Request $request, ReportService $reportService): BinaryFileResponse { auth()->user()->addActivityComplete(1034); - $name = "گزارش کشوری از فعالیت روزانه و جاری - جدول 2 " . verta()->now()->format('Y-m-d H-i') . '.xlsx'; + $name = 'گزارش کشوری از فعالیت روزانه و جاری - جدول 2 '.verta()->now()->format('Y-m-d H-i').'.xlsx'; $activities = $reportService->countryActivityPerSubItem($request); $subItems = InfoItem::query() ->where('item', $request->item) @@ -127,7 +129,7 @@ class ReportController extends Controller return Excel::download(new CountryActivityPerSubItemReport([ 'activities' => $activities, 'provinces' => Province::all(['id', 'name_fa']), - 'subItems' => $subItems + 'subItems' => $subItems, ]), $name); } @@ -135,7 +137,7 @@ class ReportController extends Controller { auth()->user()->addActivityComplete(1034); $activities = $reportService->provinceActivityPerSubItem($request); - $name = "گزارش استانی از فعالیت روزانه و جاری - جدول 2 " . verta()->now()->format('Y-m-d H-i') . '.xlsx'; + $name = 'گزارش استانی از فعالیت روزانه و جاری - جدول 2 '.verta()->now()->format('Y-m-d H-i').'.xlsx'; $subItems = InfoItem::query() ->where('item', $request->item) ->get(['id', 'item', 'item_str', 'sub_item_str', 'sub_item_unit', 'sub_item']); @@ -154,16 +156,16 @@ class ReportController extends Controller $subId = $request->sub_id; $item = $request->item; $status = $request->status; - $dateFrom = $request->date_from ? $request->date_from . ' 00:00:00' : now()->startOfDay()->toDateTimeString(); - $dateTo = $request->date_to ? $request->date_to . ' 23:59:59' : now()->addDay()->startOfDay()->toDateTimeString(); + $dateFrom = $request->date_from ? $request->date_from.' 00:00:00' : now()->startOfDay()->toDateTimeString(); + $dateTo = $request->date_to ? $request->date_to.' 23:59:59' : now()->addDay()->startOfDay()->toDateTimeString(); $data = RoadItemsProject::query() ->where('is_new', '=', 1) - ->when($provinceId, fn($query, $provinceId) => $query->where('road_items_projects.province_id', '=', $provinceId)) - ->when($cityId, fn($query, $cityId) => $query->where('road_items_projects.city_id', '=', $cityId)) - ->when($subId, fn($query, $subId) => $query->where('sub_items', 'like', '%' . $subId . '%')) - ->when($item, fn($query, $item) => $query->where('item', '=', $item)) - ->when(!is_null($status), fn($query, $status) => $query->where('status', '=', $status)) + ->when($provinceId, fn ($query, $provinceId) => $query->where('road_items_projects.province_id', '=', $provinceId)) + ->when($cityId, fn ($query, $cityId) => $query->where('road_items_projects.city_id', '=', $cityId)) + ->when($subId, fn ($query, $subId) => $query->where('sub_items', 'like', '%'.$subId.'%')) + ->when($item, fn ($query, $item) => $query->where('item', '=', $item)) + ->when(! is_null($status), fn ($query, $status) => $query->where('status', '=', $status)) ->leftJoin('users', 'users.id', '=', 'road_items_projects.user_id') ->whereBetween('road_items_projects.activity_date', [$dateFrom, $dateTo]) ->select('road_items_projects.id as i', 'start_lat as l', 'start_lng as g', 'status') diff --git a/app/Http/Controllers/V3/Dashboard/RoadItem/SupervisorController.php b/app/Http/Controllers/V3/Dashboard/RoadItem/SupervisorController.php index 42cdb28c..5272a05b 100644 --- a/app/Http/Controllers/V3/Dashboard/RoadItem/SupervisorController.php +++ b/app/Http/Controllers/V3/Dashboard/RoadItem/SupervisorController.php @@ -7,11 +7,9 @@ use App\Exports\V3\RoadItemsProjects\SupervisorCartableReport; use App\Http\Controllers\Controller; use App\Http\Requests\V3\RoadItem\Supervisor\ConfirmRequest; use App\Http\Requests\V3\RoadItem\Supervisor\RejectRequest; -use App\Http\Requests\V3\RoadItem\VerifyBySupervisorRequest; use App\Http\Traits\ApiResponse; use App\Models\RoadItemsProject; use App\Services\Cartables\RoadItem\SupervisorService; -use App\Services\Cartables\RoadItemTableService; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; @@ -47,8 +45,9 @@ class SupervisorController extends Controller */ public function excel(Request $request, SupervisorService $supervisorService): BinaryFileResponse { - $name = 'گزارش از کارتابل ارزیابی فعالیت روزانه ' . verta()->now()->format('Y-m-d H:i') . '.xlsx'; + $name = 'گزارش از کارتابل ارزیابی فعالیت روزانه '.verta()->now()->format('Y-m-d H:i').'.xlsx'; $data = $supervisorService->dataTable($request, true); + return Excel::download(new SupervisorCartableReport($data['data']), $name); } @@ -107,7 +106,7 @@ class SupervisorController extends Controller 'supervisor_id' => null, 'supervisor_description' => null, 'supervising_time' => null, - 'supervisor_name' => null, + 'supervisor_name' => null, ]); auth()->user()->addActivityComplete(1150); }); diff --git a/app/Http/Controllers/V3/Dashboard/RoadMaintenanceStationController.php b/app/Http/Controllers/V3/Dashboard/RoadMaintenanceStationController.php index 91f6d0dc..721fec88 100644 --- a/app/Http/Controllers/V3/Dashboard/RoadMaintenanceStationController.php +++ b/app/Http/Controllers/V3/Dashboard/RoadMaintenanceStationController.php @@ -13,9 +13,8 @@ use App\Models\City; use App\Models\Province; use App\Models\RahdariPoint; use App\Models\RahdariPointHistory; -use Illuminate\Http\Request; use Illuminate\Http\JsonResponse; - +use Illuminate\Http\Request; class RoadMaintenanceStationController extends Controller { @@ -27,7 +26,7 @@ class RoadMaintenanceStationController extends Controller $user->addActivityComplete(1019); $query = RahdariPoint::query() - ->when($user->hasPermissionTo('show-tollhouse-province') && !$user->hasPermissionTo('show-tollhouse'), + ->when($user->hasPermissionTo('show-tollhouse-province') && ! $user->hasPermissionTo('show-tollhouse'), fn ($query) => $query->where('province_id', $user->province_id) ); @@ -56,7 +55,7 @@ class RoadMaintenanceStationController extends Controller 'name' => $request->name, 'status' => $request->status, 'type' => $request->type, - 'type_fa' =>RoadMaintenanceStationTypes::name($request->type), + 'type_fa' => RoadMaintenanceStationTypes::name($request->type), 'team_num' => $request->team_num, 'staff_num' => $request->staff_num, 'phone' => $request->phone, @@ -85,7 +84,7 @@ class RoadMaintenanceStationController extends Controller foreach ($uploadPaths as $field => $path) { if ($request->hasFile($field)) { $station->files()->create([ - 'path' => FileFacade::save($request->$field, $path) + 'path' => FileFacade::save($request->$field, $path), ]); } } @@ -112,17 +111,17 @@ class RoadMaintenanceStationController extends Controller RahdariPointHistory::query()->create([ 'user_id' => $request->user()->id, - 'point_id' => $rahdariPoint->id, - 'previous_province_id' => $province->id, - 'previous_province_name' => $province->name_fa, - 'previous_city_id' => $city->id, - 'previous_city_name' => $city->name_fa, - 'previous_name' => $rahdariPoint->name, - 'previous_status' => $rahdariPoint->status, - 'previous_type' => $rahdariPoint->type, + 'point_id' => $rahdariPoint->id, + 'previous_province_id' => $rahdariPoint->province_id, + 'previous_province_name' => $rahdariPoint->province_name, + 'previous_city_id' => $rahdariPoint->city_id, + 'previous_city_name' => $rahdariPoint->city_name, + 'previous_name' => $rahdariPoint->name, + 'previous_status' => $rahdariPoint->status, + 'previous_type' => $rahdariPoint->type, 'previous_team_num' => $rahdariPoint->team_num, 'previous_staff_num' => $rahdariPoint->staff_num, - 'previous_phone' => $rahdariPoint->phone, + 'previous_phone' => $rahdariPoint->phone, 'previous_responsible_name' => $rahdariPoint->responsible_name, 'previous_responsible_mobile' => $rahdariPoint->responsible_mobile, 'previous_successor_name' => $rahdariPoint->successor_name, @@ -130,21 +129,21 @@ class RoadMaintenanceStationController extends Controller 'previous_machines_light' => $rahdariPoint->machines_light, 'previous_machines_sheavy' => $rahdariPoint->machines_sheavy, 'previous_machines_heavy' => $rahdariPoint->machines_heavy, - 'previous_lat' => $rahdariPoint->lat, - 'previous_lng' => $rahdariPoint->lng, + 'previous_lat' => $rahdariPoint->lat, + 'previous_lng' => $rahdariPoint->lng, 'new_files' => json_encode($rahdariPoint->files), 'area' => json_encode($rahdariPoint->area), ]); - $rahdariPoint->update([ + $rahdariPoint->update([ 'province_id' => $province->id, 'province_name' => $province->name_fa, 'city_id' => $city->id, 'city_name' => $city->name_fa, 'name' => $request->input('name'), 'status' => $request->input('status'), - 'type' => $request->input('type',), - 'type_fa' => RoadMaintenanceStationTypes::name($request->type) ?? $rahdariPoint->type_fa, + 'type' => $request->input('type'), + 'type_fa' => RoadMaintenanceStationTypes::name($request->type) ?? $rahdariPoint->type_fa, 'team_num' => $request->input('team_num'), 'staff_num' => $request->input('staff_num'), 'phone' => $request->input('phone'), @@ -224,4 +223,9 @@ class RoadMaintenanceStationController extends Controller allowedSelects: ['id', 'lat', 'lng', 'status', 'type'], )); } + + public function giveListToFms(): JsonResponse + { + return $this->successResponse(RahdariPoint::all(['id', 'name', 'lat', 'lng', 'area'])); + } } diff --git a/app/Http/Controllers/V3/Dashboard/RoadObservation/OperatorController.php b/app/Http/Controllers/V3/Dashboard/RoadObservation/OperatorController.php index f4f2807f..6f67641d 100644 --- a/app/Http/Controllers/V3/Dashboard/RoadObservation/OperatorController.php +++ b/app/Http/Controllers/V3/Dashboard/RoadObservation/OperatorController.php @@ -36,8 +36,9 @@ class OperatorController public function cartableReport(Request $request, OperatorService $operatorService): BinaryFileResponse { - $name = 'گزارش از کارتابل عملیات واکنش سریع ' . verta()->now()->format('Y-m-d H:i') . '.xlsx'; + $name = 'گزارش از کارتابل عملیات واکنش سریع '.verta()->now()->format('Y-m-d H:i').'.xlsx'; $data = $operatorService->cartableIndex($request); + return Excel::download(new OperatorCartableReport($data['data']), $name); } @@ -54,8 +55,9 @@ class OperatorController */ public function complaintsReport(Request $request, OperatorService $operatorService): BinaryFileResponse { - $name = 'گزارش از رسیدگی به شکایات واکنش سریع ' . verta()->now()->format('Y-m-d H:i') . '.xlsx'; + $name = 'گزارش از رسیدگی به شکایات واکنش سریع '.verta()->now()->format('Y-m-d H:i').'.xlsx'; $data = $operatorService->complaintsIndex($request); + return Excel::download(new ComplaintsReport($data['data']), $name); } @@ -79,7 +81,7 @@ class OperatorController 'previous_rms_start_latlng' => $roadObserved->rms_start_latlng, 'previous_rms_end_latlng' => $roadObserved->rms_end_latlng, 'previous_rms_description' => $roadObserved->rms_description, - 'new_files' => json_encode([]) + 'new_files' => json_encode([]), ]; $files_path = []; @@ -132,7 +134,7 @@ class OperatorController 'previous_rms_start_latlng' => $roadObserved->rms_start_latlng, 'previous_rms_end_latlng' => $roadObserved->rms_end_latlng, 'previous_rms_description' => $roadObserved->rms_description, - 'new_files' => json_encode([]) + 'new_files' => json_encode([]), ]; if ($request->rms_status == 1) { @@ -195,7 +197,7 @@ class OperatorController 'from_edareh' => $roadObserved->edarate_shahri_id, 'to_edareh' => $request->edarate_shahri_id, 'from_province' => $roadObserved->province_id, - 'to_province' => $province->id + 'to_province' => $province->id, ]); $roadObserved->update([ @@ -218,7 +220,7 @@ class OperatorController ->orderBy('created_at', 'desc') ->get([ 'created_at', 'description', 'from_edareh', 'to_edareh', - 'from_province', 'to_province', 'user_id' + 'from_province', 'to_province', 'user_id', ]); foreach ($data as $key => $value) { @@ -227,8 +229,9 @@ class OperatorController $data[$key]->from_province = Province::query()->find($value->from_province)->name_fa ?? null; $data[$key]->to_province = Province::query()->find($value->to_province)->name_fa ?? null; $user = User::query()->find($value->user_id); - $data[$key]->user = $user->first_name . ' ' . $user->last_name; + $data[$key]->user = $user->first_name.' '.$user->last_name; } + return $this->successResponse($data); } -} \ No newline at end of file +} diff --git a/app/Http/Controllers/V3/Dashboard/RoadObservation/ReportController.php b/app/Http/Controllers/V3/Dashboard/RoadObservation/ReportController.php index 4b00f238..3b37d5af 100644 --- a/app/Http/Controllers/V3/Dashboard/RoadObservation/ReportController.php +++ b/app/Http/Controllers/V3/Dashboard/RoadObservation/ReportController.php @@ -8,7 +8,6 @@ use App\Exports\V3\RoadObservation\ProvinceCartableReport; use App\Facades\DataTable\DataTableFacade; use App\Http\Traits\ApiResponse; use App\Models\EdarateShahri; -use App\Models\Province; use App\Models\RoadObserved; use App\Services\Cartables\RoadObservation\ReportService; use App\Services\Cartables\SafetyAndPrivacy\OperatorService; @@ -24,13 +23,15 @@ class ReportController public function index(Request $request, ReportService $reportService): JsonResponse { $data = $reportService->index($request); + return response()->json($data['data']); } public function excel(Request $request, ReportService $reportService): BinaryFileResponse { - $name = 'گزارش رسیدگی به شکایات واکنش سریع ' . verta()->now()->format('Y-m-d H:i') . '.xlsx'; + $name = 'گزارش رسیدگی به شکایات واکنش سریع '.verta()->now()->format('Y-m-d H:i').'.xlsx'; $data = $reportService->index($request); + return Excel::download(new ReportComplaintsExport($data), $name); } @@ -48,6 +49,7 @@ class ReportController public function countryActivity(Request $request, ReportService $reportService): JsonResponse { $data = $reportService->countryActivity($request); + return $this->successResponse($data); } @@ -59,22 +61,26 @@ class ReportController return $this->successResponse([ 'activities' => $data, - 'edarateShahri' => EdarateShahri::where('province_id', $request->province_id)->get(['id', 'name_fa']), + 'edarateShahri' => EdarateShahri::query()->where('province_id', $request->province_id)->get(['id', 'name_fa']), ]); } - public function countryActivityExcel(Request $request, OperatorService $operatorService): BinaryFileResponse + + public function countryActivityExcel(Request $request, ReportService $reportService): BinaryFileResponse { - $data = $operatorService->countryActivity($request); - $name = 'گزارش رسیدگی به شکایات واکنش سریع' . verta()->now()->format('Y-m-d H-i') . '.xlsx'; + $data = $reportService->countryActivity($request); + $name = 'گزارش رسیدگی به شکایات واکنش سریع'.verta()->now()->format('Y-m-d H-i').'.xlsx'; + return Excel::download(new CountryCartableReport($data), $name); } - public function provinceActivityExcel(Request $request, OperatorService $operatorService): BinaryFileResponse + public function provinceActivityExcel(Request $request, ReportService $reportService): BinaryFileResponse { - $data = $operatorService->provinceActivity( + $data = $reportService->provinceActivity( province_id: $request->input('province_id') ); - $name = 'گزارش رسیدگی به شکایات واکنش سریع' . verta()->now()->format('Y-m-d H-i') . '.xlsx'; - return Excel::download(new ProvinceCartableReport($data, $request), $name); + + $name = 'گزارش رسیدگی به شکایات واکنش سریع'.verta()->now()->format('Y-m-d H-i').'.xlsx'; + + return Excel::download(new ProvinceCartableReport($data), $name); } } diff --git a/app/Http/Controllers/V3/Dashboard/RoadObservation/SupervisorController.php b/app/Http/Controllers/V3/Dashboard/RoadObservation/SupervisorController.php index 02e48f63..52e473c3 100644 --- a/app/Http/Controllers/V3/Dashboard/RoadObservation/SupervisorController.php +++ b/app/Http/Controllers/V3/Dashboard/RoadObservation/SupervisorController.php @@ -10,7 +10,6 @@ use App\Http\Traits\ApiResponse; use App\Models\RoadObservationHistory; use App\Models\RoadObserved; use App\Services\Cartables\RoadObservation\SupervisorService; -use App\Services\Cartables\RoadObservationTableService; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; @@ -48,7 +47,7 @@ class SupervisorController public function report(Request $request, SupervisorService $supervisorService): BinaryFileResponse { - $name = 'گزارش از کارتابل ارزیابی واکنش سریع '. verta()->now()->format('Y-m-d H:i') . '.xlsx'; + $name = 'گزارش از کارتابل ارزیابی واکنش سریع '.verta()->now()->format('Y-m-d H:i').'.xlsx'; $data = $supervisorService->index($request); return Excel::download(new SupervisorCartableReport($data['data']), $name); @@ -89,4 +88,4 @@ class SupervisorController return $this->successResponse(); } -} \ No newline at end of file +} diff --git a/app/Http/Controllers/V3/Dashboard/RoadPatrol/DetailController.php b/app/Http/Controllers/V3/Dashboard/RoadPatrol/DetailController.php index e3b6ac5a..42d7c505 100644 --- a/app/Http/Controllers/V3/Dashboard/RoadPatrol/DetailController.php +++ b/app/Http/Controllers/V3/Dashboard/RoadPatrol/DetailController.php @@ -9,12 +9,11 @@ use App\Models\RoadPatrol; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; - class DetailController extends Controller { use ApiResponse; - public function map(Request $request): JsonResponse + public function map(Request $request): JsonResponse { $province = $request->province_id; $edare_shahri = $request->edare_shahri_id; @@ -25,12 +24,12 @@ class DetailController extends Controller $date_from = $request->from_date.' 00:00:00'; $date_to = $request->date_to.' 23:59:59'; } else { - $date_from = Date('Y-m-d'); + $date_from = date('Y-m-d'); $date_to = new \DateTime('tomorrow'); $date_to = $date_to->format('Y-m-d'); } - $projects = RoadObserved::query()->select(['id', 'lng', 'lat','status']) + $projects = RoadObserved::query()->select(['id', 'lng', 'lat', 'status']) ->whereBetween('created_at', [$date_from, $date_to]) ->when($province, function ($query) use ($province) { return $query->where('province_id', '=', $province); @@ -49,6 +48,7 @@ class DetailController extends Controller return $query->where('status', '=', $status); }) ->get(); + return $this->successResponse($projects); } diff --git a/app/Http/Controllers/V3/Dashboard/RoadPatrol/OperatorController.php b/app/Http/Controllers/V3/Dashboard/RoadPatrol/OperatorController.php index 230bb22a..07913960 100644 --- a/app/Http/Controllers/V3/Dashboard/RoadPatrol/OperatorController.php +++ b/app/Http/Controllers/V3/Dashboard/RoadPatrol/OperatorController.php @@ -2,9 +2,7 @@ namespace App\Http\Controllers\V3\Dashboard\RoadPatrol; - use App\Exports\V3\RoadPatrols\OperatorCartableReport; -use App\Facades\Sms\Sms; use App\Http\Controllers\Controller; use App\Http\Requests\V3\RoadPatrol\DeleteRequest; use App\Http\Traits\ApiResponse; @@ -18,7 +16,6 @@ use Illuminate\Support\Facades\Storage; use Maatwebsite\Excel\Facades\Excel; use Symfony\Component\HttpFoundation\BinaryFileResponse; - class OperatorController extends Controller { use ApiResponse; @@ -26,12 +23,15 @@ class OperatorController extends Controller public function index(Request $request, OperatorService $operatorService): JsonResponse { $data = $operatorService->dataTable($request); + return response()->json($data); } + public function excel(Request $request, OperatorService $operatorService): BinaryFileResponse { - $name = 'گزارش از کارتابل عملیات گشت راهداری ' . verta()->now()->format('Y-m-d H:i') . '.xlsx'; + $name = 'گزارش از کارتابل عملیات گشت راهداری '.verta()->now()->format('Y-m-d H:i').'.xlsx'; $data = $operatorService->dataTable($request, true); + return Excel::download(new OperatorCartableReport($data['data']), $name); } @@ -42,15 +42,15 @@ class OperatorController extends Controller $road_patrol = RoadPatrol::query()->create([ 'operator_id' => $user->id, - 'status' => 0, - 'status_fa' => 'در حال بررسی', + 'status' => 0, + 'status_fa' => 'در حال بررسی', 'province_id' => $mission->province_id, 'province_fa' => $mission->province_name, - 'edare_id' => $mission->edare_shahri_id, - 'edare_name' => $mission->edare_shahri_name, - 'start_time' => $mission->start_time, - 'end_time' => $mission->finish_time, - 'mission_id' => $mission->id, + 'edare_id' => $mission->edare_shahri_id, + 'edare_name' => $mission->edare_shahri_name, + 'start_time' => $mission->start_time, + 'end_time' => $mission->finish_time, + 'mission_id' => $mission->id, ]); auth()->user()->addActivityComplete(1147); @@ -74,8 +74,8 @@ class OperatorController extends Controller $road_item = $observed_item->roadItemProject; if ($road_item->files()->exists()) { - Storage::delete('public/' . $road_item->files[0]->path); - Storage::delete('public/' . $road_item->files[1]->path); + Storage::delete('public/'.$road_item->files[0]->path); + Storage::delete('public/'.$road_item->files[1]->path); $road_item->files()->delete(); } diff --git a/app/Http/Controllers/V3/Dashboard/RoadPatrol/ReportController.php b/app/Http/Controllers/V3/Dashboard/RoadPatrol/ReportController.php index a4fd027f..e2b85254 100644 --- a/app/Http/Controllers/V3/Dashboard/RoadPatrol/ReportController.php +++ b/app/Http/Controllers/V3/Dashboard/RoadPatrol/ReportController.php @@ -18,16 +18,17 @@ use Symfony\Component\HttpFoundation\BinaryFileResponse; class ReportController extends Controller { use ApiResponse; + public function activitiesOnMap(Request $request): JsonResponse { - $date_from = $request->from_date ? $request->from_date .' 00:00:00' : now()->startOfDay()->toDateTimeString(); + $date_from = $request->from_date ? $request->from_date.' 00:00:00' : now()->startOfDay()->toDateTimeString(); $date_to = $request->date_to ? $request->date_to.' 23:59:59' : now()->addDay()->startOfDay()->toDateTimeString(); $provinceId = $request->province_id; $edareId = $request->edare_id; $data = RoadPatrol::query() - ->when($provinceId, fn($query, $provinceId) => $query->where('province_id', '=', $provinceId)) - ->when($edareId, fn($query, $edareId) => $query->where('edare_id', '=', $edareId)) + ->when($provinceId, fn ($query, $provinceId) => $query->where('province_id', '=', $provinceId)) + ->when($edareId, fn ($query, $edareId) => $query->where('edare_id', '=', $edareId)) ->whereBetween('created_at', [$date_from, $date_to]) ->select('id', 'start_lat', 'start_lon') ->get(); @@ -51,11 +52,11 @@ class ReportController extends Controller 'officer_name' => $roadPatrol->officer_name, 'officer_plaque' => $roadPatrol->officer_plaque, 'officer_phone_number' => $roadPatrol->officer_phone_number, - 'created_at' => $roadPatrol->created_at + 'created_at' => $roadPatrol->created_at, ]; - $observed_items = array(); - if($roadPatrol->observedItems) { + $observed_items = []; + if ($roadPatrol->observedItems) { foreach ($roadPatrol->observedItems as $index => $observed_item) { $observed_items[] = [ 'item' => $observed_item->item_name, @@ -68,8 +69,10 @@ class ReportController extends Controller } $data['observed_items'] = $observed_items; + return $this->successResponse($data); } + public function countryPatrolActivity(Request $request, ReportService $reportService): JsonResponse { $activities = $reportService->countryActivity($request); @@ -78,13 +81,13 @@ class ReportController extends Controller return $this->successResponse([ 'activities' => $activities['data'], - 'provinces' => $provinces + 'provinces' => $provinces, ]); } public function provincePatrolActivity(Request $request, ReportService $reportService): JsonResponse { - $request->validate(["province_id" => "required",]); + $request->validate(['province_id' => 'required']); $activities = $reportService->provinceActivity($request); @@ -101,7 +104,7 @@ class ReportController extends Controller $activities = $reportService->countryActivity($request); $provinces = Province::all(['id', 'name_fa']); - $name = 'گزارش از گشت راهداری و ترابری ' . verta()->now()->format('Y-m-d H-i') . '.xlsx'; + $name = 'گزارش از گشت راهداری و ترابری '.verta()->now()->format('Y-m-d H-i').'.xlsx'; return Excel::download(new CountryActivity([ 'activities' => $activities, @@ -114,7 +117,7 @@ class ReportController extends Controller $activities = $reportService->provinceActivity($request); $edarateShahri = EdarateShahri::query()->where('province_id', '=', $request->province_id)->get(['id', 'name_fa']); - $name = 'گزارش از گشت راهداری و ترابری ' . verta()->now()->format('Y-m-d H-i') . '.xlsx'; + $name = 'گزارش از گشت راهداری و ترابری '.verta()->now()->format('Y-m-d H-i').'.xlsx'; return Excel::download(new ProvinceActivity([ 'activities' => $activities, diff --git a/app/Http/Controllers/V3/Dashboard/RoadPatrol/SupervisorController.php b/app/Http/Controllers/V3/Dashboard/RoadPatrol/SupervisorController.php index 6b5a9a91..b48cca4b 100644 --- a/app/Http/Controllers/V3/Dashboard/RoadPatrol/SupervisorController.php +++ b/app/Http/Controllers/V3/Dashboard/RoadPatrol/SupervisorController.php @@ -40,8 +40,9 @@ class SupervisorController extends Controller */ public function excel(Request $request, SupervisorService $supervisorService): BinaryFileResponse { - $name = 'گزارش از کارتابل ارزیابی گشت راهداری ' . verta()->now()->format('Y-m-d H:i') . '.xlsx'; + $name = 'گزارش از کارتابل ارزیابی گشت راهداری '.verta()->now()->format('Y-m-d H:i').'.xlsx'; $data = $supervisorService->dataTable($request, true); + return Excel::download(new SupervisorCartableReport($data['data']), $name); } } diff --git a/app/Http/Controllers/V3/Dashboard/RoleManagementController.php b/app/Http/Controllers/V3/Dashboard/RoleManagementController.php new file mode 100644 index 00000000..224852bf --- /dev/null +++ b/app/Http/Controllers/V3/Dashboard/RoleManagementController.php @@ -0,0 +1,88 @@ +json($data); + } + + /** + * @throws Throwable + */ + public function store(StoreRequest $request): JsonResponse + { + auth()->user()->addActivityComplete(1043); + + $role = DB::transaction(function () use ($request) { + $role = Role::create([ + 'name' => $request->name, + 'name_fa' => $request->name_fa, + 'description' => $request->description, + 'guard_name' => 'web', + ]); + + $role->givePermissionTo($request->permissions); + }); + + return $this->successResponse($role); + } + + /** + * @throws Throwable + */ + public function update(UpdateRequest $request, Role $role): JsonResponse + { + auth()->user()->addActivityComplete(1044); + + DB::transaction(function () use ($request, $role) { + $role->update([ + 'name' => $request->name, + 'name_fa' => $request->name_fa, + 'description' => $request->description, + 'guard_name' => 'web', + ]); + + $role->syncPermissions($request->permissions); + }); + + return $this->successResponse(); + } + + public function show(Role $role): JsonResponse + { + return $this->successResponse($role); + } + + public function destroy(Role $role): JsonResponse + { + auth()->user()->addActivityComplete(1045); + + $role->delete(); + + return $this->successResponse(); + } +} diff --git a/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/OperatorController.php b/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/OperatorController.php index cf03a4ae..e3cc6934 100644 --- a/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/OperatorController.php +++ b/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/OperatorController.php @@ -44,8 +44,9 @@ class OperatorController extends Controller */ public function excelReport(Request $request, OperatorService $operatorService): BinaryFileResponse { - $name = 'گزارش از نگهداری حریم راه ' . verta()->now()->format('Y-m-d H-i') . '.xlsx'; + $name = 'گزارش از نگهداری حریم راه '.verta()->now()->format('Y-m-d H-i').'.xlsx'; $data = $operatorService->datatable($request); + return Excel::download(new OperatorCartableReport($data['data']), $name); } @@ -59,8 +60,7 @@ class OperatorController extends Controller ->where('item', 17) ->firstOrFail(); - DB::transaction(function () use ($request, $coordinates, $item, $nominatimService, $user) - { + DB::transaction(function () use ($request, $coordinates, $item, $nominatimService, $user) { $step = SafetyAndPrivacySteps::SHENASAEI->value; $safety_and_privacy = SafetyAndPrivacy::query()->create([ 'lat' => $coordinates[0], @@ -73,7 +73,7 @@ class OperatorController extends Controller 'info_fa' => $item->sub_item_str, 'city_id' => $user->city_id, 'city_fa' => $user->city_fa, - 'activity_date_time' => $request->activity_date." ".$request->activity_time, + 'activity_date_time' => $request->activity_date.' '.$request->activity_time, 'edare_shahri_id' => $user->edarate_shahri_id, 'edare_shahri_name' => $user->edarate_shahri_name, 'way_id' => $nominatimService->get_way_id_from_nominatim($coordinates[0], $coordinates[1]), @@ -145,13 +145,13 @@ class OperatorController extends Controller 'step_fa' => SafetyAndPrivacySteps::name($step), 'status' => $status_id, 'status_fa' => SafetyAndPrivacyStatus::name($status_id), - 'action_picture' => FileFacade::save($request->action_picture, "safety_and_privacy/{$safetyAndPrivacy->id}/action_picture"), - 'finish_picture' => FileFacade::save($request->finish_picture, "safety_and_privacy/{$safetyAndPrivacy->id}/finish_picture"), + 'action_picture' => FileFacade::save($request->action_picture, "safety_and_privacy/{$safetyAndPrivacy->id}/action_picture"), + 'finish_picture' => FileFacade::save($request->finish_picture, "safety_and_privacy/{$safetyAndPrivacy->id}/finish_picture"), 'evidence_picture' => FileFacade::save($request->evidence_picture, "safety_and_privacy/{$safetyAndPrivacy->id}/evidence_picture"), 'action_picture_document_upload_date' => now(), 'action_date' => $request->action_date, 'is_finished' => true, - 'final_description' => 'پیام سیستمی : این عملیات پس از طی تمامی گام ها خاتمه یافت' + 'final_description' => 'پیام سیستمی : این عملیات پس از طی تمامی گام ها خاتمه یافت', ]); $user->addActivityComplete(1136); @@ -183,8 +183,7 @@ class OperatorController extends Controller { FileFacade::deleteDirectory("safety_and_privacy/{$safetyAndPrivacy->id}"); - DB::transaction(function () use ($safetyAndPrivacy) - { + DB::transaction(function () use ($safetyAndPrivacy) { auth()->user()->addActivityComplete(1155); $safetyAndPrivacy->delete(); }); diff --git a/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/OperatorReport/AccessRoadActivityController.php b/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/OperatorReport/AccessRoadActivityController.php index 7283dcf2..30db7766 100644 --- a/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/OperatorReport/AccessRoadActivityController.php +++ b/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/OperatorReport/AccessRoadActivityController.php @@ -41,10 +41,12 @@ class AccessRoadActivityController extends Controller 'edarateShahri' => EdarateShahri::where('province_id', $request->province_id)->get(['id', 'name_fa']), ]); } + public function countryExcelActivity(Request $request, OperatorService $operatorService): BinaryFileResponse { $data = $operatorService->countryActivity(90, $request); - $name = 'گزارش نگهداری حریم راه برای راه دسترسی غیر مجاز ' . verta()->now()->format('Y-m-d H-i') . '.xlsx'; + $name = 'گزارش نگهداری حریم راه برای راه دسترسی غیر مجاز '.verta()->now()->format('Y-m-d H-i').'.xlsx'; + return Excel::download(new ExcelReport($data), $name); } @@ -54,8 +56,8 @@ class AccessRoadActivityController extends Controller $request, 90, ); - $name = 'گزارش نگهداری حریم راه برای راه دسترسی غیر مجاز ' . verta()->now()->format('Y-m-d H-i') . '.xlsx'; + $name = 'گزارش نگهداری حریم راه برای راه دسترسی غیر مجاز '.verta()->now()->format('Y-m-d H-i').'.xlsx'; + return Excel::download(new AccessRoadReport($data, $request), $name); } - } diff --git a/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/OperatorReport/ConstructionActivityController.php b/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/OperatorReport/ConstructionActivityController.php index 0db03253..1698d694 100644 --- a/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/OperatorReport/ConstructionActivityController.php +++ b/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/OperatorReport/ConstructionActivityController.php @@ -18,6 +18,7 @@ use Symfony\Component\HttpFoundation\BinaryFileResponse; class ConstructionActivityController extends Controller { use ApiResponse; + public function countryActivity(Request $request, OperatorService $operatorService): JsonResponse { $data = $operatorService->countryActivity(89, $request); @@ -27,7 +28,8 @@ class ConstructionActivityController extends Controller 'provinces' => Province::all(['id', 'name_fa']), ]); } - public function provinceActivity(Request $request, OperatorService $operatorService,): JsonResponse + + public function provinceActivity(Request $request, OperatorService $operatorService): JsonResponse { $data = $operatorService->provinceActivity( $request, @@ -47,7 +49,7 @@ class ConstructionActivityController extends Controller public function countryExcelActivity(Request $request, OperatorService $operatorService): BinaryFileResponse { $data = $operatorService->countryActivity(89, $request); - $name = ' گزارش نگهداری حریم راه برای ساخت و ساز غیر مجاز' . verta()->now()->format('Y-m-d H-i') . '.xlsx'; + $name = ' گزارش نگهداری حریم راه برای ساخت و ساز غیر مجاز'.verta()->now()->format('Y-m-d H-i').'.xlsx'; return Excel::download(new ExcelReport($data), $name); } @@ -62,7 +64,7 @@ class ConstructionActivityController extends Controller $request, 89, ); - $name = ' گزارش نگهداری حریم راه برای ساخت و ساز غیر مجاز' . verta()->now()->format('Y-m-d H-i') . '.xlsx'; + $name = ' گزارش نگهداری حریم راه برای ساخت و ساز غیر مجاز'.verta()->now()->format('Y-m-d H-i').'.xlsx'; return Excel::download(new ConstructionReport($data, $request), $name); } diff --git a/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/OperatorReport/UtilityPassingActivityController.php b/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/OperatorReport/UtilityPassingActivityController.php index 3e92c834..e54efdbf 100644 --- a/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/OperatorReport/UtilityPassingActivityController.php +++ b/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/OperatorReport/UtilityPassingActivityController.php @@ -27,6 +27,7 @@ class UtilityPassingActivityController extends Controller 'provinces' => Province::all(['id', 'name_fa']), ]); } + public function provinceActivity(Request $request, OperatorService $operatorService): JsonResponse { $data = $operatorService->provinceActivity( @@ -39,11 +40,13 @@ class UtilityPassingActivityController extends Controller 'edarateShahri' => EdarateShahri::where('province_id', $request->province_id)->get(['id', 'name_fa']), ]); } + public function countryExcelActivity(Request $request, OperatorService $operatorService): BinaryFileResponse { $data = $operatorService->countryActivity(91, $request); - $name = 'گزارش نگهداری حریم راه برای عبور تاسیسات زیربنایی غیر مجاز ' . verta()->now()->format('Y-m-d H-i') . '.xlsx'; + $name = 'گزارش نگهداری حریم راه برای عبور تاسیسات زیربنایی غیر مجاز '.verta()->now()->format('Y-m-d H-i').'.xlsx'; + return Excel::download(new ExcelReport($data), $name); } @@ -53,7 +56,7 @@ class UtilityPassingActivityController extends Controller $request, 91, ); - $name = 'گزارش نگهداری حریم راه برای عبور تاسیسات زیربنایی غیر مجاز ' . verta()->now()->format('Y-m-d H-i') . '.xlsx'; + $name = 'گزارش نگهداری حریم راه برای عبور تاسیسات زیربنایی غیر مجاز '.verta()->now()->format('Y-m-d H-i').'.xlsx'; return Excel::download(new UtilityPassingReport($data, $request), $name); } diff --git a/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/SupervisorController.php b/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/SupervisorController.php index 0cd984c5..e11c6ad9 100644 --- a/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/SupervisorController.php +++ b/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/SupervisorController.php @@ -9,7 +9,6 @@ use App\Http\Requests\V3\SafetyAndPrivacy\RejectRequest; use App\Http\Traits\ApiResponse; use App\Models\SafetyAndPrivacy; use App\Services\Cartables\SafetyAndPrivacy\SupervisorService; -use App\Services\Cartables\SafetyAndPrivacyTableService; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Maatwebsite\Excel\Facades\Excel; @@ -33,8 +32,9 @@ class SupervisorController extends Controller */ public function excelReport(Request $request, SupervisorService $supervisorService): BinaryFileResponse { - $name = 'گزارش از نگهداری حریم راه ' . verta()->now()->format('Y-m-d H-i') . '.xlsx'; + $name = 'گزارش از نگهداری حریم راه '.verta()->now()->format('Y-m-d H-i').'.xlsx'; $data = $supervisorService->dataTable($request); + return Excel::download(new SupervisorCartableReport($data['data']), $name); } diff --git a/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/SupervisorReportController.php b/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/SupervisorReportController.php index 601a0384..4e48dea3 100644 --- a/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/SupervisorReportController.php +++ b/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/SupervisorReportController.php @@ -2,21 +2,8 @@ namespace App\Http\Controllers\V3\Dashboard\SafetyAndPrivacy; -use App\Enums\SafetyAndPrivacyStatus; -use App\Exports\V3\SafetyAndPrivacy\CountryActivityReport; -use App\Exports\V3\SafetyAndPrivacy\ProvinceActivityReport; -use App\Exports\V3\SafetyAndPrivacy\SupervisorCartableReport; use App\Http\Controllers\Controller; -use App\Http\Requests\V3\SafetyAndPrivacy\RejectRequest; use App\Http\Traits\ApiResponse; -use App\Models\EdarateShahri; -use App\Models\Province; -use App\Models\SafetyAndPrivacy; -use App\Services\Cartables\SafetyAndPrivacyTableService; -use Illuminate\Http\JsonResponse; -use Illuminate\Http\Request; -use Maatwebsite\Excel\Facades\Excel; -use Symfony\Component\HttpFoundation\BinaryFileResponse; class SupervisorReportController extends Controller { diff --git a/app/Http/Controllers/V3/Dashboard/UserManagementController.php b/app/Http/Controllers/V3/Dashboard/UserManagementController.php index d56b0753..cb5abc76 100644 --- a/app/Http/Controllers/V3/Dashboard/UserManagementController.php +++ b/app/Http/Controllers/V3/Dashboard/UserManagementController.php @@ -2,414 +2,267 @@ namespace App\Http\Controllers\V3\Dashboard; +use App\Facades\File\FileFacade; use App\Http\Controllers\Controller; -use App\Http\Requests\V3\Dashboard\UserManagement\PermissionUpdateRequest; -use App\Http\Requests\V3\Dashboard\UserManagement\StoreRequest; +use App\Http\Requests\V3\Dashboard\UserManagement\ChangeConfirmEnabelRequest; +use App\Http\Requests\V3\Dashboard\UserManagement\ChangeConfirmStatusRequest; +use App\Http\Requests\V3\Dashboard\UserManagement\ChangePasswordRequest; +use App\Http\Requests\V3\Dashboard\UserManagement\FullStoreRequest; +use App\Http\Requests\V3\Dashboard\UserManagement\GivePermissionRequest; +use App\Http\Requests\V3\Dashboard\UserManagement\GiveRoleRequest; +use App\Http\Requests\V3\Dashboard\UserManagement\LimitStoreRequest; use App\Http\Requests\V3\Dashboard\UserManagement\UpdateRequest; use App\Http\Traits\ApiResponse; use App\Models\City; use App\Models\EdarateOstani; use App\Models\EdarateShahri; -use App\Models\Permission; use App\Models\Province; use App\Models\Role; use App\Models\User; +use App\Services\Cartables\UserManagement\UserManagementService; use Carbon\Carbon; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; -use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Hash; -use Illuminate\Support\Facades\Storage; +use Throwable; class UserManagementController extends Controller { use ApiResponse; -// public function index() -// { -// if (Auth::user()->can('full-user-managment') || Auth::user()->can('limited-user-management')) { -// return view('version2.dashboard_pages.user_management.list'); -// } -// -// abort(403); -// } - public function indexUser(Request $request) + + public function index(Request $request, UserManagementService $userManagementService): JsonResponse { - if (auth()->user()) { - auth()->user()->addActivityComplete(1038); - } + auth()->user()->addActivityComplete(1038); - $province = $request->province ?? null; - $city = $request->city ?? null; - $province_office = $request->province_office ?? null; + $data = $userManagementService->datatable($request); - if (Auth::user()->checkUserHasPermission('full-user-management')) { - $users = User::when($province, function ($query, $province) { - return $query->where('province_id', $province); - }) - ->when($city, function ($query, $city) { - return $query->where('city_id', $city); - }) - ->when($province_office, function ($query, $province_office) { - if ($province_office == -1) { - return $query->where('edarate_ostani_id', null)->whereNotNull('edarate_shahri_id'); - } else { - return $query->where('edarate_ostani_id', $province_office); - } - }) - ->with(['roles' => function ($query) { - $query->where('for_report', 1); - }]) - ->get(); - } elseif (Auth::user()->checkUserHasPermission('limited-user-management')) { - $users = User::when($province, function ($query, $province) { - return $query->where('province_id', $province); - }) - ->where('province_id', Auth::user()->province_id) - ->when($city, function ($query, $city) { - return $query->where('city_id', $city); - }) - ->when($province_office, function ($query, $province_office) { - if ($province_office == -1) { - return $query->where('edarate_ostani_id', null)->whereNotNull('edarate_shahri_id'); - } else { - return $query->where('edarate_ostani_id', $province_office); - } - }) - ->with(['roles' => function ($query) { - $query->where('for_report', 1); - }]) - ->get(); - } else { - return response()->json([ - 'message' => 'Forbidden' - ], 403); - } - - return response()->json([ - 'status' => '200', - 'message' => 'success', - 'data' => $users, - ], 200); + return response()->json($data); } - public function store(StoreRequest $request): jsonResponse + public function limitStore(LimitStoreRequest $request): jsonResponse { + auth()->user()->addActivityComplete(1039); + User::query()->create([ 'username' => $request->username, 'national_code' => $request->national_code, 'password' => Hash::make($request->password), 'province_id' => $request->province_id, - 'edarate_ostani_id' => $request->edarate_ostani_id, + 'province_fa' => ($request->province_id == 0) ? 'ستاد' : Province::query()->find($request->province_id)->name_fa, 'city_id' => $request->city_id, - 'edarate_shahri_id' => $request->edarate_shahri_id, - ]); - - $user = new User(); - $user->username = $request->username; - - $user->province_id = $request->province_id == 0 ? null : $request->province_id; - $user->province_fa = ($request->province_id == 0) ? 'ستاد' : Province::find($request->province_id)->name_fa; - - $user->city_id = $request->city_id == 0 ? null : $request->city_id; - $user->city_fa = ($request->city_id == 0) ? null : City::find($request->city_id)->name_fa ; - - if ($request->edarate_ostani_id != 'null') { - $temp = EdarateOstani::find($request->edarate_ostani_id)->name_fa; - $user->edarate_ostani_id = $request->edarate_ostani_id; - $user->edarate_ostani_name = $temp; - if ($request->province_id == 0) { - $user->name = $temp .' '. $user->province_fa; - } else { - $user->name = $temp .' استان '. $user->province_fa; - } - } else { - $temp = EdarateShahri::find($request->edarate_shahri_id)->name_fa; - $user->edarate_shahri_id = $request->edarate_shahri_id; - $user->edarate_shahri_name = $temp; - - if ($request->province_id == 0) { - $user->name = $temp .' '. $user->province_fa; - } else { - $user->name = $temp .' استان '. $user->province_fa; - } - } - - $user->password = Hash::make($request->password); - $user->national_code = $request->national_code; - $user->save(); - - if (auth()->user()) { - auth()->user()->addActivityComplete(1039, $user); - } - - return response()->json([ - 'message' => 'success', - 'data' => $user - ], 200); - } - - public function editRole(Request $request, $id) - { - $request->validate([ - 'role_name' => 'required|string', - 'permissions' => 'required' - ], [ - 'permissions.required' => 'انتخاب دسترسی‌ها الزامی است.', - 'role_name.required' => 'نام نقش الزامی است.' - ]); - - if (auth()->user()) { - auth()->user()->addActivityComplete(1044); - } - $role = Role::find($id); - - - $updateRole = $role->update([ - 'name_fa' => $request->role_name, - 'description' => $request->description - ]); - - $permissions = $request->permissions; - // $permissions = explode(",", $request->permissions); - - $role->syncPermissions($permissions); - - return response()->json([ - 'message' => 'success', - 'data' => $role - ]); - } - - - public function createRole(Request $request) - { - $request->validate([ - 'role_name' => 'required|string', - 'permissions' => 'required' - ], [ - 'permissions.required' => 'انتخاب دسترسی‌ها الزامی است.', - 'role_name.required' => 'نام نقش الزامی است.' - ]); - - if (auth()->user()) { - auth()->user()->addActivityComplete(1043); - } - - $role = Role::create([ - 'name' => time(), - 'name_fa' => $request->role_name, - 'description' => $request->description - ]); - - $permissions = $request->permissions; - - // $permissions = explode(",", $request->permissions); - $role->givePermissionTo($permissions); - - return response()->json([ - 'message' => 'success', - 'data' => $role - ]); - } - - public function show(User $user) - { - $user = User::where('id', $user->id)->with(['roles', 'permissions'])->get(); - return response()->json([ - 'status' => '200', - 'message' => 'success', - 'data' => $user - ], 200); - } - - public function update(UpdateRequest $request, User $user): JsonResponse - { - $user->update([ - 'username' => $request->username, - 'national_code' => $request->national_code, - 'password' => Hash::make($request->password), - 'province_id' => $request->province_id, + 'city_fa' => ($request->city_id == 0) ? null : City::query()->find($request->city_id)->name_fa, 'edarate_ostani_id' => $request->edarate_ostani_id, - 'city_id' => $request->city_id, + 'edarate_ostani_name' => $request->edarate_ostani_id == null ? + null : + EdarateOstani::query()->find($request->edarate_ostani_id)->name_fa, 'edarate_shahri_id' => $request->edarate_shahri_id, + 'edarate_shahri_name' => $request->edarate_shahri_id == null ? + null : + EdarateShahri::query()->find($request->edarate_shahri_id)->name_fa, ]); - $user->province_id = $request->province_id == 0 ? null : $request->province_id; - $user->province_fa = ($request->province_id == 0) ? 'ستاد' : Province::find($request->province_id)->name_fa; + return $this->successResponse(); + } - $user->city_id = $request->city_id == 0 ? null : $request->city_id; - $user->city_fa = ($request->city_id == 0) ? null : City::find($request->city_id)->name_fa ; + /** + * @throws Throwable + */ + public function fullStore(FullStoreRequest $request): jsonResponse + { + DB::transaction(function () use ($request) { + auth()->user()->addActivityComplete(1039); - if ($request->edarate_ostani_id != "null") { - $temp = EdarateOstani::find($request->edarate_ostani_id)->name_fa; - $user->edarate_ostani_id = $request->edarate_ostani_id; - $user->edarate_ostani_name = $temp; - - $user->edarate_shahri_id = null; - $user->edarate_shahri_name = null; - - if ($request->province_id == 0) { - $user->name = $temp .' '. $user->province_fa; - } else { - $user->name = $temp .' استان '. $user->province_fa; - } - } else { - $temp = EdarateShahri::find($request->edarate_shahri_id)->name_fa; - $user->edarate_shahri_id = $request->edarate_shahri_id; - $user->edarate_shahri_name = $temp; - $user->edarate_ostani_id = null; - $user->edarate_ostani_name = null; - if ($request->province_id == 0) { - $user->name = $temp .' '. $user->province_fa; - } else { - $user->name = $temp .' استان '. $user->province_fa; - } - } - - $user->first_name = $request->first_name; - $user->last_name = $request->last_name; - $user->position = $request->position; - $user->mobile = $request->mobile; - $user->degree = $request->degree; - $user->major = $request->major; - $user->national_code = $request->national_code; - - if (!is_null($request->password)) { - $request->validate([ - 'password' => ['string'] + $user = User::query()->create([ + 'username' => $request->username, + 'national_code' => $request->national_code, + 'password' => Hash::make($request->password), + 'province_id' => $request->province_id, + 'province_fa' => ($request->province_id == 0) ? 'ستاد' : Province::query()->find($request->province_id)->name_fa, + 'city_id' => $request->city_id, + 'city_fa' => ($request->city_id == 0) ? null : City::query()->find($request->city_id)->name_fa, + 'edarate_ostani_id' => $request->edarate_ostani_id, + 'edarate_ostani_name' => $request->edarate_ostani_id == null ? + null : + EdarateOstani::query()->find($request->edarate_ostani_id)->name_fa, + 'edarate_shahri_id' => $request->edarate_shahri_id, + 'edarate_shahri_name' => $request->edarate_shahri_id == null ? + null : + EdarateShahri::query()->find($request->edarate_shahri_id)->name_fa, + 'first_name' => $request->first_name, + 'last_name' => $request->last_name, + 'position' => $request->position, + 'mobile' => $request->mobile, + 'degree' => $request->degree, + 'major' => $request->major, ]); - $user->password = Hash::make($request->password); - } - if (! $request->permissions == null) { - $user->syncPermissions(explode(",", $request->permissions)); - } - - $roles = $request->only('roles'); - if (! $roles == null) { - $user->syncRoles($roles); - } - - $user->save(); - - if (auth()->user()) { - auth()->user()->addActivityComplete(1040, $user); - } - - return response()->json([ - 'message' => 'success', - 'data' => $user - ]); - } - - public function activityReport() - { - return view('version2.dashboard_pages.user_management.activity_report'); - } - - public function userActivityLogs() - { - return response()->json([ - 'status' => 'succeed', - 'message' => '', - 'data' => auth()->user()->activityLogs, - ], 200); - } - - public function changeConfirmedStatus(Request $request) - { - $request->validate([ - 'user_ids' => 'required|regex:/^(\d+)(,\d+)*$/', - 'confirm' => 'required|in:0,1' - ]); - - $user_ids = explode(",", $request->user_ids); - - User::whereIn('id', $user_ids)->update([ - 'confirmed' => $request->confirm - ]); - return response()->json([ - 'status' => 'succeed', - ]); - } - - public function changePassword(User $user, Request $request) - { - $validData = $request->validate([ - 'password' => 'required|string|min:8|confirmed', - ]); - $user->password = Hash::make($request->password); - $user->save(); - return response()->json(['message' => "password changed successfully!!!!"], 200); - } - - public function givePermissionsTo(Request $request) - { - $request->validate([ - 'user_ids' => 'required|regex:/^(\d+)(,\d+)*$/', - 'permission_ids' => 'required', - ]); - - $user_ids = explode(",", $request->user_ids); - $permission_ids = $request->permission_ids; - - User::whereIn('id', $user_ids)->get()->each(function ($user) use ($permission_ids) { - $user->syncPermissions($permission_ids); + $user->avatar = $request->has('avatar') ? + FileFacade::save($request->avatar, "user/{$user->id}") : + null; }); - return response()->json([ - 'status' => 'succeed', - 'message' => 'permissions assigned to users succussfully.' + return $this->successResponse(); + } + + public function show(User $user): JsonResponse + { + return $this->successResponse($user); + } + + public function userPermissions(User $user): JsonResponse + { + $role = $user->roles()->pluck('name')->first(); + $permissions = $user->getAllPermissions()->pluck('name'); + + return $this->successResponse([ + 'role' => $role, + 'permissions' => $permissions, ]); } - public function destroy(Request $request) + /** + * @throws Throwable + */ + public function update(UpdateRequest $request, User $user): JsonResponse { - $request->validate([ - 'user_ids' => 'required|regex:/^(\d+)(,\d+)*$/', - ]); + DB::transaction(function () use ($request, $user) { + auth()->user()->addActivityComplete(1040); - $user_ids = explode(',', $request->user_ids); + $data = [ + 'username' => $request->username, + 'national_code' => $request->national_code, + 'province_id' => $request->province_id, + 'province_fa' => ($request->province_id == 0) ? 'ستاد' : Province::query()->find($request->province_id)->name_fa, + 'city_id' => $request->city_id, + 'city_fa' => ($request->city_id == 0) ? null : City::query()->find($request->city_id)->name_fa, + 'edarate_ostani_id' => $request->edarate_ostani_id, + 'edarate_ostani_name' => $request->edarate_ostani_id == null ? + null : + EdarateOstani::query()->find($request->edarate_ostani_id)->name_fa, + 'edarate_shahri_id' => $request->edarate_shahri_id, + 'edarate_shahri_name' => $request->edarate_shahri_id == null ? + null : + EdarateShahri::query()->find($request->edarate_shahri_id)->name_fa, + 'first_name' => $request->first_name, + 'last_name' => $request->last_name, + 'position' => $request->position, + 'mobile' => $request->mobile, + 'degree' => $request->degree, + 'major' => $request->major, + ]; - foreach ($user_ids as $id) { - $user = User::find($id); + if ($request->has('avatar')) { + if ($user->avatar) { + FileFacade::delete($user->avatar, true); + } + $data['avatar'] = FileFacade::save($request->file('avatar'), "avatars/{$user->id}/"); + } + $user->update($data); + }); + + return $this->successResponse(); + } + + /** + * @throws Throwable + */ + public function destroy(User $user): JsonResponse + { + DB::transaction(function () use ($user) { if ($user->avatar) { - if (Storage::disk('public')->exists(str_replace('storage/', '', $user->avatar))) { - Storage::disk('public')->delete(str_replace('storage/', '', $user->avatar)); - } - } - - if ($user->photo) { - if (Storage::disk('public')->exists(str_replace('storage/', '', $user->photo))) { - Storage::disk('public')->delete(str_replace('storage/', '', $user->photo)); - } + FileFacade::delete($user->avatar, true); } + $user->roles()->detach(); + $user->permissions()->detach(); $user->delete(); - } + }); - return response()->json([ - 'status' => 200, - 'message' => 'The users deleted succussfully.' - ]); + return $this->successResponse(); } - public function getUserPermissions() + public function changePassword(User $user, ChangePasswordRequest $request): JsonResponse { - $userPermissions = Auth::user()->getUserPermissions(); - - return response()->json([ - 'message' => 'success', - 'data' => $userPermissions + $user->update([ + 'password' => Hash::make($request->new_password), ]); + + return $this->successResponse(); } + public function givePermissionsTo(GivePermissionRequest $request, User $user): JsonResponse + { + $user->syncPermissions($request->permissions); + + return $this->successResponse(); + } + + public function giveRoleToUser(GiveRoleRequest $request, User $user): JsonResponse + { + $user->syncRoles($request->role); + + return $this->successResponse(); + } + + public function changeConfirmedStatus(ChangeConfirmStatusRequest $request, User $user): JsonResponse + { + $user->update([ + 'confirmed' => $request->confirm, + ]); + + return $this->successResponse(); + } + + public function changeUserEnabeld(ChangeConfirmEnabelRequest $request, User $user): JsonResponse + { + $user->update([ + 'enabled' => $request->enabled, + ]); + + return $this->successResponse(); + } + + // public function userActivityLogs() + // { + // return response()->json([ + // 'status' => 'succeed', + // 'message' => '', + // 'data' => auth()->user()->activityLogs, + // ], 200); + // } + + // public function userPermission($id) + // { + // $user = User::find($id); + // + // return response()->json([ + // 'message' => 'success', + // 'data' => $user->permissions, + // ]); + // } + + // public function assignPermission(Request $request, User $user) + // { + // if (auth()->user()) { + // auth()->user()->addActivityComplete(1042); + // } + // $permissions = explode(',', $request->permissions); + // if (! $permissions == null) { + // $user->syncPermissions($permissions); + // } + // + // return response()->json([ + // 'message' => 'status', + // 'data' => User::where('id', $user->id)->with(['permissions'])->get(), + // ]); + // } + public function getUserSummaryReport(Request $request, User $user) { - $request->fromDate = $request->fromDate ? $request->fromDate . " 00:00:00" : Carbon::now()->subDays(30)->format('Y-m-d 00:00:00'); - $request->toDate = $request->toDate ? $request->toDate . " 23:59:59" : Carbon::now()->format('Y-m-d 23:59:59'); + $request->fromDate = $request->fromDate ? $request->fromDate.' 00:00:00' : Carbon::now()->subDays(30)->format('Y-m-d 00:00:00'); + $request->toDate = $request->toDate ? $request->toDate.' 23:59:59' : Carbon::now()->format('Y-m-d 23:59:59'); $data = []; $ids_list = ''; @@ -426,7 +279,7 @@ class UserManagementController extends Controller HOUR (created_at) AS hh, user_id FROM user_activity_logs - WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$user->id.") + WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$user->id.') ) user_activity_distinct GROUP BY yy, mm, @@ -434,7 +287,7 @@ class UserManagementController extends Controller hh, user_id ) user_activity_by_hour_and_ - GROUP BY user_id) AS calculated_table;"; + GROUP BY user_id) AS calculated_table;'; $temp_sql_for_activity_list = " SELECT *, @@ -444,29 +297,28 @@ class UserManagementController extends Controller description, log_unique_code FROM user_activity_logs - WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$user->id.") + WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$user->id.') ) user_activity_distinct GROUP BY log_unique_code - ORDER BY cnt desc"; + ORDER BY cnt desc'; $number_of_active_days = " SELECT COUNT(*) AS cnt FROM ( SELECT mm,dd FROM user_activity_logs - WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$user->id.") + WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$user->id.') GROUP BY mm,dd ) active_days - ORDER BY cnt desc"; - + ORDER BY cnt desc'; $number_of_activities = " SELECT COUNT(*) AS cnt FROM user_activity_logs - WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$user->id.") - ORDER BY cnt desc"; + WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$user->id.') + ORDER BY cnt desc'; $number_of_active_days = (DB::select($number_of_active_days)[0]->cnt ? DB::select($number_of_active_days)[0]->cnt : -1); $activity_time = DB::select($temp_sql_for_activity_time)[0]->activity; @@ -475,20 +327,21 @@ class UserManagementController extends Controller 'number_of_active_days' => $number_of_active_days, 'activity_time' => $user->id ? $activity_time : null, - 'average_activity_time' => round(($user->id ? $activity_time : 0) / $number_of_active_days, 2) , - 'number_of_activities' => $number_of_activities , - 'average_activity_number' => round(($user->id ? $number_of_activities : 0) / $number_of_active_days, 2) , + 'average_activity_time' => round(($user->id ? $activity_time : 0) / $number_of_active_days, 2), + 'number_of_activities' => $number_of_activities, + 'average_activity_number' => round(($user->id ? $number_of_activities : 0) / $number_of_active_days, 2), 'activity_list' => $user->id ? DB::select($temp_sql_for_activity_list) : null, 'last_login' => $user->last_login, ]; + return $data; } public function printGroup(User $user, Request $request) { - $request->fromDate = $request->fromDate ? $request->fromDate . " 00:00:00" : Carbon::now()->format('Y-m-d 00:00:00') ; - $request->toDate = $request->toDate ? $request->toDate . " 23:59:59" : Carbon::now()->format('Y-m-d 23:59:59'); + $request->fromDate = $request->fromDate ? $request->fromDate.' 00:00:00' : Carbon::now()->format('Y-m-d 00:00:00'); + $request->toDate = $request->toDate ? $request->toDate.' 23:59:59' : Carbon::now()->format('Y-m-d 23:59:59'); $data = []; @@ -496,21 +349,20 @@ class UserManagementController extends Controller // $users = $role->users()->select("*")->get()->toArray(); // foreach ($user as $index => $item) { $user_activity_quantity_temp[$user->id] = [ - "majmoe" => 0, - "name" => $user->first_name ? $user->first_name." ".$user->last_name." (".$user->username.")" : $user->name." (".$user->username.")", + 'majmoe' => 0, + 'name' => $user->first_name ? $user->first_name.' '.$user->last_name.' ('.$user->username.')' : $user->name.' ('.$user->username.')', ]; $user_activity_time_temp[$user->id] = [ - "majmoe" => 0, - "name" => $user->first_name ? $user->first_name." ".$user->last_name." (".$user->username.")" : $user->name."(".$user->username.")", + 'majmoe' => 0, + 'name' => $user->first_name ? $user->first_name.' '.$user->last_name.' ('.$user->username.')' : $user->name.'('.$user->username.')', ]; $user_activity_top_5_temp[$user->id] = [ - "activity_list" => [], - "name" => $user->first_name ? $user->first_name." ".$user->last_name." (".$user->username.")" : $user->name."(".$user->username.")", + 'activity_list' => [], + 'name' => $user->first_name ? $user->first_name.' '.$user->last_name.' ('.$user->username.')' : $user->name.'('.$user->username.')', ]; - // if (!$index) { $ids_list = $user->id; // } else { @@ -525,7 +377,7 @@ class UserManagementController extends Controller COUNT(*) AS quantity FROM user_activity_logs - WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$ids_list.") + WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$ids_list.') GROUP BY yy, mm, @@ -533,18 +385,18 @@ class UserManagementController extends Controller hh, user_id ) user_activity_by_hour_and_ - GROUP BY user_id) AS calculated_table;"; + GROUP BY user_id) AS calculated_table;'; $quantitative_activity_chart_sql = " SELECT created_at, COUNT(*) AS quantity FROM user_activity_logs - WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$ids_list.") + WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$ids_list.') GROUP BY yy, mm, - dd ;"; + dd ;'; $hourly_activity_chart_sql = " SELECT @@ -556,7 +408,7 @@ class UserManagementController extends Controller hh, COUNT(*) AS quantity FROM user_activity_logs - WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$ids_list.") + WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$ids_list.') GROUP BY yy, mm, dd, @@ -566,14 +418,13 @@ class UserManagementController extends Controller GROUP BY yy, mm, - dd;"; + dd;'; $total_activity_quantity_sql = " SELECT COUNT(*) AS total_activity_quantity FROM user_activity_logs - WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$ids_list.") - "; - + WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$ids_list.') + '; $top_10_activity_list_sql = " SELECT *, @@ -583,13 +434,12 @@ class UserManagementController extends Controller description, log_unique_code FROM user_activity_logs - WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$ids_list.") + WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$ids_list.') ) user_activity_distinct GROUP BY log_unique_code ORDER BY quantity desc - LIMIT 10"; - + LIMIT 10'; $user_activity_quantity_sql = " SELECT *, @@ -602,10 +452,10 @@ class UserManagementController extends Controller user_name, username FROM user_activity_logs - WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$ids_list.") + WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$ids_list.') ) user_activity_distinct GROUP BY user_id - ORDER BY quantity desc"; + ORDER BY quantity desc'; $active_user_count_sql = " SELECT COUNT(*) AS active_user_count @@ -613,9 +463,9 @@ class UserManagementController extends Controller SELECT user_id FROM user_activity_logs - WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$ids_list.") + WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$ids_list.') GROUP BY user_id - ) grpuped_by_user_id"; + ) grpuped_by_user_id'; $user_activity_time_sql = " select @@ -630,7 +480,7 @@ class UserManagementController extends Controller user_id, COUNT(*) AS quantity FROM user_activity_logs - WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$ids_list.") + WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$ids_list.') GROUP BY yy, mm, dd, @@ -638,19 +488,19 @@ class UserManagementController extends Controller user_id ) user_activity_by_hour_and_ GROUP BY user_id - ORDER BY majmoe desc;"; + ORDER BY majmoe desc;'; foreach (DB::select($user_activity_quantity_sql) as $key => $value) { $user_activity_quantity_temp[$value->user_id] = [ - "majmoe" => $value->quantity ?? 0, - "name" => $value->user_first_name ? $value->user_first_name." ".$value->user_last_name." (".$value->username.")" : $value->user_name." (".$value->username.")", + 'majmoe' => $value->quantity ?? 0, + 'name' => $value->user_first_name ? $value->user_first_name.' '.$value->user_last_name.' ('.$value->username.')' : $value->user_name.' ('.$value->username.')', ]; } foreach (DB::select($user_activity_time_sql) as $key => $value) { $user_activity_time_temp[$value->user_id] = [ - "majmoe" => $value->majmoe ?? 0, - "name" => $value->user_first_name ? $value->user_first_name." ".$value->user_last_name." (".$value->username.")" : $value->user_name." (".$value->username.")", + 'majmoe' => $value->majmoe ?? 0, + 'name' => $value->user_first_name ? $value->user_first_name.' '.$value->user_last_name.' ('.$value->username.')' : $value->user_name.' ('.$value->username.')', ]; } @@ -672,9 +522,9 @@ class UserManagementController extends Controller $sum += (int) $item->quantity; } $user_activity_top_5_temp[$key] = [ - "sum" => $sum, - "name" => $value['name'], - "activity_list" => $activity_list, + 'sum' => $sum, + 'name' => $value['name'], + 'activity_list' => $activity_list, ]; } arsort($user_activity_top_5_temp); @@ -690,82 +540,148 @@ class UserManagementController extends Controller 'total_activity_time' => $ids_list ? DB::select($total_activity_time_sql)[0]->activity : null, 'top_10_activity_list' => $ids_list ? DB::select($top_10_activity_list_sql) : null, 'user_activity_quantity' => $ids_list ? $user_activity_quantity_temp : null, - 'group_name' => $user->first_name." ".$user->last_name, - 'average' => round(($ids_list ? DB::select($total_activity_time_sql)[0]->activity : 0) / 1, 2) , + 'group_name' => $user->first_name.' '.$user->last_name, + 'average' => round(($ids_list ? DB::select($total_activity_time_sql)[0]->activity : 0) / 1, 2), 'user_activity_top_5_temp' => $user_activity_top_5_temp, 'total_user_count' => 1, 'active_user_count' => $ids_list ? DB::select($active_user_count_sql)[0]->active_user_count : null, - 'group_id' => $user->id + 'group_id' => $user->id, ]; return View('word.user-activity-individual', compact('data')); } - public function userPermission($id) - { - $user = User::find($id); - return response()->json([ - 'message' => 'success', - 'data' => $user->permissions, - ]); - } - public function assignPermission(Request $request, User $user) + public function indexShow(Request $request) { - if (auth()->user()) { - auth()->user()->addActivityComplete(1042); - } - $permissions = explode(",", $request->permissions); - if (! $permissions == null) { - $user->syncPermissions($permissions); + $request->fromDate = $request->fromDate ? $request->fromDate.' 00:00:00' : Carbon::now()->format('Y-m-d 00:00:00'); + $request->toDate = $request->toDate ? $request->toDate.' 23:59:59' : Carbon::now()->format('Y-m-d 23:59:59'); + + $roles_must_show_report = Role::where('for_report', 1)->get(); + + $data = []; + + $users_activity = []; + + foreach ($roles_must_show_report as $key => $value) { + $ids_list = ''; + $users = $value->users()->select('id')->get()->toArray(); + foreach ($users as $index => $item) { + if (! $index) { + $ids_list = $item['id']; + } else { + $ids_list .= ','.$item['id']; + } + } + $temp_sql = " + SELECT sum(majmoe) AS activity FROM (SELECT *, + COUNT(quantity) AS majmoe + FROM ( + SELECT *, + COUNT(*) AS quantity + FROM user_activity_logs + WHERE (created_at between '{$request->fromDate}' and '{$request->toDate}') and user_id IN(".$ids_list.') + GROUP BY yy, + mm, + dd, + hh, + user_id + ) user_activity_by_hour_and_ + GROUP BY user_id) AS calculated_table;'; + + $activity = DB::select($temp_sql)[0]->activity; + $users_activity[] = [ + 'activity_time' => $ids_list ? $activity : null, + 'average' => round(($ids_list ? $activity : 0) / count($users), 2), + 'group_name' => $value->name_fa, + 'user_count' => count($users), + 'is_static' => 0, + 'group_id' => $value->id, + ]; } - return response()->json([ - 'message' => 'status', - 'data' => User::where('id', $user->id)->with(['permissions'])->get() - ]); - } - - public function showAllRoles(Request $request) - { - $roles = Role::where('for_report', 0)->get(); - - return response()->json([ - 'message' => 'success', - 'data' => $roles - ]); - } - - public function deleteRole(Request $request, $id) - { - if (auth()->user()) { - auth()->user()->addActivityComplete(1045); + $country_group_ids_list = ''; + $country_group_user_quantity = 0; + foreach (Role::whereIn('id', $this->country_group_ids_list_array)->get() as $key => $value) { + $users = $value->users()->select('id')->get(); + $country_group_user_quantity += count($users); + foreach ($users as $index => $item) { + if (! $key) { + $country_group_ids_list = $item->id; + } else { + $country_group_ids_list .= ','.$item->id; + } + } } - $role = Role::find($id)->delete(); + + $country_temp_sql = " + SELECT sum(majmoe) AS activity FROM (SELECT *, + COUNT(quantity) AS majmoe + FROM ( + SELECT *, + COUNT(*) AS quantity + FROM user_activity_logs + WHERE (created_at between '{$request->fromDate}' and '{$request->toDate}') and user_id IN(".$country_group_ids_list.') + GROUP BY yy, + mm, + dd, + hh, + user_id + ) user_activity_by_hour_and_ + GROUP BY user_id) AS calculated_table;'; + + $users_activity[] = [ + 'activity_time' => $country_group_ids_list ? DB::select($country_temp_sql)[0]->activity : null, + 'average' => round(($country_group_ids_list ? DB::select($country_temp_sql)[0]->activity : 0) / $country_group_user_quantity, 2), + 'group_name' => 'کشوری', + 'user_count' => $country_group_user_quantity, + 'is_static' => 1, + 'group_id' => 3, + ]; + + $organization_group_ids_list = ''; + $organization_group_user_quantity = 0; + foreach (Role::whereIn('id', $this->organization_group_ids_list_array)->get() as $key => $value) { + $users = $value->users()->select('id')->get(); + $organization_group_user_quantity += count($users); + foreach ($users as $index => $item) { + if (! $key) { + $organization_group_ids_list = $item->id; + } else { + $organization_group_ids_list .= ','.$item->id; + } + } + } + + $organization_temp_sql = " + SELECT sum(majmoe) AS activity FROM (SELECT *, + COUNT(quantity) AS majmoe + FROM ( + SELECT *, + COUNT(*) AS quantity + FROM user_activity_logs + WHERE (created_at between '{$request->fromDate}' and '{$request->toDate}') and user_id IN(".$organization_group_ids_list.') + + GROUP BY yy, + mm, + dd, + hh, + user_id + ) user_activity_by_hour_and_ + GROUP BY user_id) AS calculated_table;'; + + $users_activity[] = [ + 'activity_time' => $organization_group_ids_list ? DB::select($organization_temp_sql)[0]->activity : null, + 'average' => round(($organization_group_ids_list ? DB::select($organization_temp_sql)[0]->activity : 0) / $organization_group_user_quantity, 2), + 'group_name' => 'سازمانی', + 'user_count' => $organization_group_user_quantity, + 'is_static' => 2, + 'group_id' => 3, + ]; return response()->json([ - 'message' => 'success', - 'data' => 1 - ]); - } - - public function changeUserEnabeld(User $user) - { - if (Auth::user()->checkUserHasPermission('full-user-management')) { - $user->enabled = !$user->enabled; - $user->save(); - return response()->json([ - 'message' => 'success' - ], 200); - } elseif (Auth::user()->checkUserHasPermission('limited-user-management') && Auth::user()->province_id == $user->province_id) { - $user->enabled = !$user->enabled; - $user->save(); - return response()->json([ - 'message' => 'success' - ], 200); - } else { - return response()->json([ - 'message' => 'Forbidden' - ], 403); - } + 'status' => 'succeed', + 'message' => '', + 'data' => $users_activity, + ], 200); } } diff --git a/app/Http/Controllers/V3/FMSVehicleManagementController.php b/app/Http/Controllers/V3/FMSVehicleManagementController.php index 898ede9d..3008353a 100644 --- a/app/Http/Controllers/V3/FMSVehicleManagementController.php +++ b/app/Http/Controllers/V3/FMSVehicleManagementController.php @@ -19,12 +19,13 @@ class FMSVehicleManagementController extends Controller public function getActivity(Request $request, GetVehicleActivityService $getVehicleActivityService): JsonResponse { $getVehicleActivityService->setInputParameters([ - "machineCode" => $request->machineCode, - "startDT" => $request->startDT, - "endDT" => $request->endDT, + 'machineCode' => $request->machineCode, + 'startDT' => $request->startDT, + 'endDT' => $request->endDT, ]); $data = $getVehicleActivityService->run(); + return $this->successResponse($data); } } diff --git a/app/Http/Controllers/V3/Harim/DivarkeshiController.php b/app/Http/Controllers/V3/Harim/DivarkeshiController.php index 2e67a8ad..937799fd 100644 --- a/app/Http/Controllers/V3/Harim/DivarkeshiController.php +++ b/app/Http/Controllers/V3/Harim/DivarkeshiController.php @@ -2,14 +2,13 @@ namespace App\Http\Controllers\V3\Harim; +use App\Facades\DataTable\DataTableFacade; use App\Http\Controllers\Controller; -use Illuminate\Http\Request; -use App\Models\Harim\Divarkeshi; use App\Http\Requests\V3\Harim\Divarkeshi\StoreRequest; use App\Http\Traits\ApiResponse; +use App\Models\Harim\Divarkeshi; use Illuminate\Http\JsonResponse; -use App\Facades\DataTable\DataTableFacade; - +use Illuminate\Http\Request; class DivarkeshiController extends Controller { @@ -17,7 +16,7 @@ class DivarkeshiController extends Controller public function index(Request $request): JsonResponse { - $columns = array( + $columns = [ 'dabirkhaneh_number', 'nameh_date', 'nameh_date_fa', @@ -72,7 +71,7 @@ class DivarkeshiController extends Controller 'shomare_daftarkhaneh', 'description', 'ronevesht', - ); + ]; $allowedFilters = $columns; $allowedSortings = $columns; @@ -160,5 +159,4 @@ class DivarkeshiController extends Controller { return $this->successResponse($divarkeshi); } - } diff --git a/app/Http/Controllers/V3/LogListManagementController.php b/app/Http/Controllers/V3/LogListManagementController.php index c351fca6..15105588 100644 --- a/app/Http/Controllers/V3/LogListManagementController.php +++ b/app/Http/Controllers/V3/LogListManagementController.php @@ -8,8 +8,8 @@ use App\Http\Requests\V3\LogList\StoreRequest; use App\Http\Requests\V3\LogList\UpdateRequest; use App\Http\Traits\ApiResponse; use App\Models\LogList; -use Illuminate\Http\Request; use Illuminate\Http\JsonResponse; +use Illuminate\Http\Request; class LogListManagementController extends Controller { @@ -52,12 +52,14 @@ class LogListManagementController extends Controller 'log_unique_code' => $request->log_unique_code, 'action_type' => $request->action_type, ]); + return $this->successResponse(); } public function destroy(LogList $logList): JsonResponse { $logList->delete(); + return $this->successResponse(); } } diff --git a/app/Http/Controllers/V3/NotificationController.php b/app/Http/Controllers/V3/NotificationController.php index b05f9f72..cf00a3d9 100644 --- a/app/Http/Controllers/V3/NotificationController.php +++ b/app/Http/Controllers/V3/NotificationController.php @@ -11,7 +11,6 @@ use App\Models\Mission; use App\Models\RoadItemsProject; use App\Models\RoadObserved; use App\Models\SafetyAndPrivacy; -use App\Models\User; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Throwable; @@ -22,6 +21,7 @@ class NotificationController extends Controller /** * Handle the incoming request. + * * @throws Throwable */ public function __invoke(Request $request): JsonResponse @@ -41,7 +41,7 @@ class NotificationController extends Controller { $user = auth()->user(); $road_items = [ - 'total' => 0 + 'total' => 0, ]; if ($user->hasPermissionTo('create-road-item')) { @@ -60,9 +60,8 @@ class NotificationController extends Controller ->count(); $road_items['total'] += $road_items['supervise_cnt']; - } - elseif ($user->hasPermissionTo('supervise-road-item-province')) { - throw_if(is_null($user->province_id) || !$user->province_id, new ProhibitedAction('استانی برای شما در سامانه ثبت نشده است!')); + } elseif ($user->hasPermissionTo('supervise-road-item-province')) { + throw_if(is_null($user->province_id) || ! $user->province_id, new ProhibitedAction('استانی برای شما در سامانه ثبت نشده است!')); $road_items['supervise_cnt'] = RoadItemsProject::query() ->where('is_new', '=', 1) @@ -71,20 +70,20 @@ class NotificationController extends Controller ->count(); $road_items['total'] += $road_items['supervise_cnt']; - } - elseif ($user->hasPermissionTo('supervise-road-item-by-edareostani')) { - throw_if(is_null($user->edarate_ostani_id) || !$user->edarate_ostani_id, new ProhibitedAction('اداره ای برای شما در سامانه ثبت نشده است!')); + } elseif ($user->hasPermissionTo('supervise-road-item-by-edareostani')) { + throw_if(is_null($user->edarate_ostani_id) || ! $user->edarate_ostani_id, new ProhibitedAction('اداره ای برای شما در سامانه ثبت نشده است!')); $confirmableItems = EdarateOstani::query()->where('id', '=', $user->edarate_ostani_id)->value('items_for_confirm'); $road_items['supervise_cnt'] = RoadItemsProject::query() ->where('is_new', '=', 1) ->where('province_id', '=', $user->province_id) - ->whereIn('item', explode(",", $confirmableItems)) + ->whereIn('item', explode(',', $confirmableItems)) ->where('status', '=', 0) ->count(); $road_items['total'] += $road_items['supervise_cnt']; } + return $road_items; } @@ -94,15 +93,14 @@ class NotificationController extends Controller private function safetyAndPrivacyNotifications(): JsonResponse|array { $user = auth()->user(); - $safety_and_privacy = array(); + $safety_and_privacy = []; if ($user->hasPermissionTo('show-safety-and-privacy-operator-cartable')) { $safety_and_privacy['supervise_cnt'] = SafetyAndPrivacy::query() ->where('is_finished', '=', 1) ->where('status', '=', 0) ->count(); - } - elseif ($user->hasPermissionTo('show-safety-and-privacy-operator-cartable-province')) { + } elseif ($user->hasPermissionTo('show-safety-and-privacy-operator-cartable-province')) { throw_if(is_null($user->province_id), new ProhibitedAction('استانی برای شما در سامانه ثبت نشده است!')); $safety_and_privacy['supervise_cnt'] = SafetyAndPrivacy::query() @@ -110,8 +108,7 @@ class NotificationController extends Controller ->where('is_finished', '=', 1) ->where('status', '=', 0) ->count(); - } - elseif ($user->hasPermissionTo('show-safety-and-privacy-operator-cartable-edarate-shahri')) { + } elseif ($user->hasPermissionTo('show-safety-and-privacy-operator-cartable-edarate-shahri')) { throw_if(is_null($user->edarate_shahri_id), new ProhibitedAction('اداره ای برای شما در سامانه ثبت نشده است!')); $activity = SafetyAndPrivacy::query() @@ -142,45 +139,43 @@ class NotificationController extends Controller 'total' => 0, 'operation_cnt' => 0, 'complaint_cnt' => 0, - 'supervise_cnt' => 0 + 'supervise_cnt' => 0, ]; if ($user->hasPermissionTo('show-fast-react')) { $road_observations['supervise_cnt'] = RoadObserved::query()->where([ ['rms_status', '<>', 0], - ['status', '=', 0] + ['status', '=', 0], ])->count(); $road_observations['complaint_cnt'] = RoadObserved::query()->where('rms_status', '=', 0) ->whereNotNull('edarate_shahri_id') ->count(); - } - elseif ($user->hasPermissionTo('show-fast-react-province')) { + } elseif ($user->hasPermissionTo('show-fast-react-province')) { throw_if(is_null($user->province_id), new ProhibitedAction('استانی برای شما در سامانه ثبت نشده است!')); $road_observations['supervise_cnt'] = RoadObserved::query()->where([ ['rms_status', '<>', 0], ['status', '=', 0], - ['province_id', '=', $user->province_id] + ['province_id', '=', $user->province_id], ])->count(); $road_observations['complaint_cnt'] = RoadObserved::query()->where([ ['rms_status', '=', 0], - ['province_id', '=', $user->province_id] + ['province_id', '=', $user->province_id], ])->count(); - } - elseif ($user->hasPermissionTo('show-fast-react-edarate-shahri')) { + } elseif ($user->hasPermissionTo('show-fast-react-edarate-shahri')) { throw_if(is_null($user->edarate_shahri_id), new ProhibitedAction('اداره ای برای شما در سامانه ثبت نشده است!')); $road_observations['operation_cnt'] = RoadObserved::query()->where([ ['rms_status', '<>', 0], ['status', '=', 2], - ['edarate_shahri_id', '=', $user->edarate_shahri_id] + ['edarate_shahri_id', '=', $user->edarate_shahri_id], ])->count(); $road_observations['complaint_cnt'] = RoadObserved::query()->where([ ['rms_status', '=', 0], - ['edarate_shahri_id', '=', $user->edarate_shahri_id] + ['edarate_shahri_id', '=', $user->edarate_shahri_id], ])->count(); } @@ -196,7 +191,7 @@ class NotificationController extends Controller 'request_portal' => Mission::query() ->where([ ['state_id', '=', MissionStates::REJECT_BY_TRANSPORTATION->value], - ['user_id', '=', $user->id] + ['user_id', '=', $user->id], ])->count(), 'transportation' => 0, 'control' => 0, @@ -205,13 +200,13 @@ class NotificationController extends Controller if ($user->hasPermissionTo('manage-transportation-unit')) { $missions['transportation'] = Mission::query()->where([ ['state_id', '=', MissionStates::REQUEST_CREATED->value], - ['edare_shahri_id', '=', $user->edarate_shahri_id] + ['edare_shahri_id', '=', $user->edarate_shahri_id], ])->count(); } if ($user->hasPermissionTo('manage-control-unit')) { $missions['control'] = Mission::query()->where([ ['state_id', '=', MissionStates::PENDING_CONFIRMATION->value], - ['edare_shahri_id', '=', $user->edarate_shahri_id] + ['edare_shahri_id', '=', $user->edarate_shahri_id], ])->count(); } diff --git a/app/Http/Controllers/V3/PermissionManagementController.php b/app/Http/Controllers/V3/PermissionManagementController.php index 8ac3eec6..abb67130 100644 --- a/app/Http/Controllers/V3/PermissionManagementController.php +++ b/app/Http/Controllers/V3/PermissionManagementController.php @@ -14,6 +14,7 @@ use Illuminate\Http\Request; class PermissionManagementController extends Controller { use ApiResponse; + /** * Display a listing of the resource. */ @@ -78,6 +79,7 @@ class PermissionManagementController extends Controller public function destroy(Permission $permission): JsonResponse { $permission->delete(); + return $this->successResponse(); } } diff --git a/app/Http/Controllers/V3/ProfileController.php b/app/Http/Controllers/V3/ProfileController.php index b4b0fa70..ab0eed0f 100644 --- a/app/Http/Controllers/V3/ProfileController.php +++ b/app/Http/Controllers/V3/ProfileController.php @@ -2,21 +2,20 @@ namespace App\Http\Controllers\V3; -use App\Facades\File\FileFacade; use App\Http\Controllers\Controller; use App\Http\Requests\V3\Profile\ChangePasswordRequest; use App\Http\Requests\V3\Profile\EditRequest; use App\Http\Traits\ApiResponse; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; -use Illuminate\Support\Facades\File; use Illuminate\Support\Facades\Auth; +use Illuminate\Support\Facades\File; use Illuminate\Support\Facades\Hash; -use Illuminate\Support\Facades\Storage; class ProfileController extends Controller { use ApiResponse; + public function info(): JsonResponse { $user = Auth::user(); @@ -32,7 +31,7 @@ class ProfileController extends Controller 'degree' => $user->degree, 'mobile' => $user->mobile, 'province_id' => $user->province_id, - 'avatar' => $user->avatarUrl() + 'avatar' => $user->avatarUrl(), ]); } @@ -40,16 +39,15 @@ class ProfileController extends Controller { $user = Auth::user(); - if ($request->has('avatar')) - { + if ($request->has('avatar')) { if ($user->avatar) { File::delete($user->avatar); } - $destinationPath = 'avatar/' . $user->username; - $filename = time() .".". $request->file('avatar')->getClientOriginalExtension(); + $destinationPath = 'avatar/'.$user->username; + $filename = time().'.'.$request->file('avatar')->getClientOriginalExtension(); $request->file('avatar')->storeAs($destinationPath, $filename, 'public'); - $avatar = 'storage/'.$destinationPath ."/". $filename; + $avatar = 'storage/'.$destinationPath.'/'.$filename; } $user->update([ @@ -58,7 +56,7 @@ class ProfileController extends Controller 'major' => $request->major, 'degree' => $request->degree, 'mobile' => $request->mobile, - 'avatar' => $avatar ?? $user->avatar + 'avatar' => $avatar ?? $user->avatar, ]); return $this->successResponse(); @@ -68,13 +66,12 @@ class ProfileController extends Controller { $user = Auth::user(); - if (! Hash::check($request->current_password, $user->password)) - { + if (! Hash::check($request->current_password, $user->password)) { return $this->errorResponse(__('messages.incorrect_current_password')); } $user->update([ - 'password' => Hash::make($request->new_password) + 'password' => Hash::make($request->new_password), ]); return $this->successResponse(); @@ -84,6 +81,7 @@ class ProfileController extends Controller public function addActivity(Request $request): JsonResponse { auth()->user()->addActivityComplete($request->activityCode); + return $this->successResponse(); } } diff --git a/app/Http/Controllers/V3/RahdaranController.php b/app/Http/Controllers/V3/RahdaranController.php index 412b7ac3..52b74127 100644 --- a/app/Http/Controllers/V3/RahdaranController.php +++ b/app/Http/Controllers/V3/RahdaranController.php @@ -67,9 +67,9 @@ class RahdaranController extends Controller $edareh = EdarateShahri::query()->find($request->input('edareh_shahri_id')); $rahdaran->update([ - 'name' =>$request->name, - 'code' =>$request->code, - 'mobile' =>$request->mobile, + 'name' => $request->name, + 'code' => $request->code, + 'mobile' => $request->mobile, 'province_id' => $province->id, 'province_name' => $province->name_fa, 'edareh_shahri_id' => $request->edareh_shahri_id, @@ -84,9 +84,9 @@ class RahdaranController extends Controller { try { $rahdaran->delete(); + return $this->successResponse(); - } - catch (QueryException $exception) { + } catch (QueryException $exception) { return $this->errorResponse('امکان حذف وجود ندارد'); } } diff --git a/app/Http/Controllers/V3/WebServices/RoadItemController.php b/app/Http/Controllers/V3/WebServices/RoadItemController.php index e395f4dd..b05ef8fe 100644 --- a/app/Http/Controllers/V3/WebServices/RoadItemController.php +++ b/app/Http/Controllers/V3/WebServices/RoadItemController.php @@ -11,6 +11,7 @@ use Illuminate\Http\JsonResponse; class RoadItemController extends Controller { use ApiResponse; + public function index(IndexRequest $request): JsonResponse { $fromDate = $request->from_date; diff --git a/app/Http/Controllers/V3/WebServices/RoadMaintenanceStationController.php b/app/Http/Controllers/V3/WebServices/RoadMaintenanceStationController.php index a16294c8..543203fc 100644 --- a/app/Http/Controllers/V3/WebServices/RoadMaintenanceStationController.php +++ b/app/Http/Controllers/V3/WebServices/RoadMaintenanceStationController.php @@ -7,7 +7,6 @@ use App\Http\Requests\V3\WebServices\RoadMaintenanceStation\IndexRequest; use App\Http\Traits\ApiResponse; use App\Models\RahdariPoint; use Illuminate\Http\JsonResponse; -use Illuminate\Http\Request; class RoadMaintenanceStationController extends Controller { @@ -22,11 +21,11 @@ class RoadMaintenanceStationController extends Controller $data = RahdariPoint::query() ->when($status, fn ($query, $status) => $query->where('status', $status)) ->when($type, fn ($query, $type) => $query->where('type', $type)) - ->when($province, fn($query, $province) => $query->where('province_id', $province)) + ->when($province, fn ($query, $province) => $query->where('province_id', $province)) ->get([ - 'id', 'province_name', 'city_name', 'name', 'status', 'type_fa', 'phone', - 'code', 'lat', 'lng', - ]); + 'id', 'province_name', 'city_name', 'name', 'status', 'type_fa', 'phone', + 'code', 'lat', 'lng', + ]); return $this->successResponse($data); } diff --git a/app/Http/Requests/V3/AccidentReceipt/ChangeStatusRequest.php b/app/Http/Requests/V3/AccidentReceipt/ChangeStatusRequest.php index d5ec9876..a29a50d2 100644 --- a/app/Http/Requests/V3/AccidentReceipt/ChangeStatusRequest.php +++ b/app/Http/Requests/V3/AccidentReceipt/ChangeStatusRequest.php @@ -2,11 +2,9 @@ namespace App\Http\Requests\V3\AccidentReceipt; -use App\Enums\AccidentStates; use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; use Illuminate\Support\Facades\Auth; -use Illuminate\Validation\Rule; class ChangeStatusRequest extends FormRequest { @@ -15,7 +13,7 @@ class ChangeStatusRequest extends FormRequest */ public function authorize(): bool { - return Auth::user()->hasPermissionTo('change-accident-status'); + return Auth::user()->hasPermissionTo('change-accident-status'); } /** diff --git a/app/Http/Requests/V3/AccidentReceipt/ConfirmPaymentInfoRequest.php b/app/Http/Requests/V3/AccidentReceipt/ConfirmPaymentInfoRequest.php index fc24bf06..9653ddab 100644 --- a/app/Http/Requests/V3/AccidentReceipt/ConfirmPaymentInfoRequest.php +++ b/app/Http/Requests/V3/AccidentReceipt/ConfirmPaymentInfoRequest.php @@ -3,7 +3,7 @@ namespace App\Http\Requests\V3\AccidentReceipt; use App\Enums\AccidentStates; -use App\Models\Accident; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class ConfirmPaymentInfoRequest extends FormRequest @@ -14,14 +14,16 @@ class ConfirmPaymentInfoRequest extends FormRequest public function authorize(): bool { return in_array($this->accident->status, - [AccidentStates::SODOR_NAME_BIME_VA_DAGHI->value, AccidentStates::SABT_FISH->value] - ); + [ + AccidentStates::SODOR_NAME_BIME_VA_DAGHI->value, + AccidentStates::SABT_FISH->value + ]); } /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/AccidentReceipt/StoreRequest.php b/app/Http/Requests/V3/AccidentReceipt/StoreRequest.php index 2e967f3a..c0983034 100644 --- a/app/Http/Requests/V3/AccidentReceipt/StoreRequest.php +++ b/app/Http/Requests/V3/AccidentReceipt/StoreRequest.php @@ -2,8 +2,7 @@ namespace App\Http\Requests\V3\AccidentReceipt; -use App\Enums\AccidentStates; -use App\Models\DailyAccidentSettings; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class StoreRequest extends FormRequest @@ -19,7 +18,7 @@ class StoreRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/AccidentReceipt/SubmitInvoiceRequest.php b/app/Http/Requests/V3/AccidentReceipt/SubmitInvoiceRequest.php index c36b2e9c..afd287b0 100644 --- a/app/Http/Requests/V3/AccidentReceipt/SubmitInvoiceRequest.php +++ b/app/Http/Requests/V3/AccidentReceipt/SubmitInvoiceRequest.php @@ -3,6 +3,7 @@ namespace App\Http\Requests\V3\AccidentReceipt; use App\Enums\AccidentStates; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class SubmitInvoiceRequest extends FormRequest @@ -18,7 +19,7 @@ class SubmitInvoiceRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/AccidentReceipt/UpdateRequest.php b/app/Http/Requests/V3/AccidentReceipt/UpdateRequest.php index 1959b35f..bc70da10 100644 --- a/app/Http/Requests/V3/AccidentReceipt/UpdateRequest.php +++ b/app/Http/Requests/V3/AccidentReceipt/UpdateRequest.php @@ -3,6 +3,7 @@ namespace App\Http\Requests\V3\AccidentReceipt; use App\Enums\AccidentStates; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class UpdateRequest extends FormRequest @@ -18,7 +19,7 @@ class UpdateRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/Azmayesh/StoreRequest.php b/app/Http/Requests/V3/Azmayesh/StoreRequest.php index dabf49b6..d1a2f347 100644 --- a/app/Http/Requests/V3/Azmayesh/StoreRequest.php +++ b/app/Http/Requests/V3/Azmayesh/StoreRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\V3\Azmayesh; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class StoreRequest extends FormRequest @@ -17,7 +18,7 @@ class StoreRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/Azmayesh/UpdateRequest.php b/app/Http/Requests/V3/Azmayesh/UpdateRequest.php index bbc8b87d..c3fa7a61 100644 --- a/app/Http/Requests/V3/Azmayesh/UpdateRequest.php +++ b/app/Http/Requests/V3/Azmayesh/UpdateRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\V3\Azmayesh; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class UpdateRequest extends FormRequest @@ -17,7 +18,7 @@ class UpdateRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/AzmayeshSample/StoreRequest.php b/app/Http/Requests/V3/AzmayeshSample/StoreRequest.php index fb1a5ea5..bde44627 100644 --- a/app/Http/Requests/V3/AzmayeshSample/StoreRequest.php +++ b/app/Http/Requests/V3/AzmayeshSample/StoreRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\V3\AzmayeshSample; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class StoreRequest extends FormRequest @@ -17,7 +18,7 @@ class StoreRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/AzmayeshSample/UpdateRequest.php b/app/Http/Requests/V3/AzmayeshSample/UpdateRequest.php index 4ce5d38d..ac4acef2 100644 --- a/app/Http/Requests/V3/AzmayeshSample/UpdateRequest.php +++ b/app/Http/Requests/V3/AzmayeshSample/UpdateRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\V3\AzmayeshSample; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class UpdateRequest extends FormRequest @@ -17,7 +18,7 @@ class UpdateRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/AzmayeshType/StoreRequest.php b/app/Http/Requests/V3/AzmayeshType/StoreRequest.php index 2c22ffc1..f4241616 100644 --- a/app/Http/Requests/V3/AzmayeshType/StoreRequest.php +++ b/app/Http/Requests/V3/AzmayeshType/StoreRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\V3\AzmayeshType; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class StoreRequest extends FormRequest @@ -17,7 +18,7 @@ class StoreRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/AzmayeshType/UpdateRequest.php b/app/Http/Requests/V3/AzmayeshType/UpdateRequest.php index b7af342e..b8e4d796 100644 --- a/app/Http/Requests/V3/AzmayeshType/UpdateRequest.php +++ b/app/Http/Requests/V3/AzmayeshType/UpdateRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\V3\AzmayeshType; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class UpdateRequest extends FormRequest @@ -17,7 +18,7 @@ class UpdateRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/DailyAccident/StoreRequest.php b/app/Http/Requests/V3/DailyAccident/StoreRequest.php new file mode 100644 index 00000000..c2f0bf1f --- /dev/null +++ b/app/Http/Requests/V3/DailyAccident/StoreRequest.php @@ -0,0 +1,94 @@ + + */ + public function rules(): array + { + return [ + 'province_id' => 'required|integer|exists:provinces,id', + 'axis_name' => 'required|string|max:255', + 'axis_type' => '', + 'axis_start' => '', + 'axis_end' => '', + 'distance_axis_start' => '', + 'local_name' => '', + 'lat' => '', + 'lng' => '', + 'police_serial' => '', + 'accident_date' => '', + 'accident_time' => '', + 'day_of_the_week' => '', + 'direction' => '', + 'number_of_injured' => '', + 'number_of_died' => '', + 'weather_condition' => '', + 'way_geometri' => '', + 'collision_type' => '', + 'participants_heavy_vehicle' => '', + 'participants_light_vehicle' => '', + 'participants_bicycle' => '', + 'accident_type' => '', + 'legal_speed' => '', + 'avarage_speed' => '', + 'increase_damage_reasons_feqdan_jodakonnande_dar_miyane_rah' => '', + 'increase_damage_reasons_naqs_ya_adam_kefayat_hefaze_miyani' => '', + 'increase_damage_reasons_naqs_ya_adam_kefayat_narde_pol' => '', + 'increase_damage_reasons_naqs_ya_adam_kefayat' => '', + 'increase_damage_reasons_naqs_dar_naheye_enteqali' => '', + 'increase_damage_reasons_mane_solb_bedone_hefaz' => '', + 'increase_damage_reasons_sar_azad_hefaz' => '', + 'increase_damage_reasons_shirvani_tond_ya_partgah' => '', + 'accident_reason_dor_monaseb_dar_qus' => '', + 'accident_reason_saraziri_tond' => '', + 'accident_reason_nabod_dar_khat_sebqat_dar_sarbalaye' => '', + 'accident_reason_mantaqe_ba_rizesh_az_divar' => '', + 'accident_reason_mantaqe_ba_afzayesh_nagahani' => '', + 'accident_reason_kahesh_na_monaseb_tedad' => '', + 'accident_reason_mantaqe_ba_obor_heyvanat_ahli' => '', + 'accident_reason_mantaqe_ba_tadakhol_terafiki' => '', + 'accident_reason_arze_kam_savare_ro' => '', + 'accident_reason_mantaqe_meh_gir' => '', + 'accident_reason_adam_roshanaye_zarori_dar_noqte' => '', + 'accident_reason_tabdil_na_monaseb_noe_rah' => '', + 'accident_reason_oftadegi_dar_labe_asphalt' => '', + 'accident_reason_naqs_dar_ashkarsazi_navahi' => '', + 'accident_reason_mahal_na_monaseb_dastrasi' => '', + 'accident_reason_roye_na_monaseb' => '', + 'accident_reason_naqs_dar_ashkar_sazi_shrayet_khas' => '', + 'accident_reason_hendese_na_monaseb_vorodi_va_khoroji' => '', + 'accident_reason_adam_rayat_fasele_tooli' => '', + 'accident_reason_naqs_dar_alayem_ekhtari_va_entezami' => '', + 'accident_reason_qus_ofoqi_dar_saraziri_tond' => '', + 'accident_reason_adam_rayat_obor' => '', + 'accident_reason_naqs_dar_alayem_pish_agahi' => '', + 'accident_reason_qarar_gire_qus_ofoqi' => '', + 'accident_reason_adam_rayat_sebghat_mojaz' => '', + 'accident_reason_did_na_kafi' => '', + 'accident_reason_qus_tond_qaem' => '', + 'accident_reason_adam_rayat_sorat_mojaz' => '', + 'accident_reason_ebham_dar_masir' => '', + 'accident_reason_qus_tond_ofoghi' => '', + 'first_image' => '', + 'second_image' => '', + 'police_file' => '', + ]; + } +} diff --git a/app/Http/Requests/V3/DailyAccident/SupervisorRequest.php b/app/Http/Requests/V3/DailyAccident/SupervisorRequest.php new file mode 100644 index 00000000..891a5487 --- /dev/null +++ b/app/Http/Requests/V3/DailyAccident/SupervisorRequest.php @@ -0,0 +1,30 @@ + + */ + public function rules(): array + { + return [ + 'state' => 'required|in:0,1', + 'message' => 'required_if:state,2|string', + ]; + } +} diff --git a/app/Http/Requests/V3/Damage/StoreRequest.php b/app/Http/Requests/V3/Damage/StoreRequest.php index 6d8647b0..7b04465c 100644 --- a/app/Http/Requests/V3/Damage/StoreRequest.php +++ b/app/Http/Requests/V3/Damage/StoreRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\V3\Damage; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class StoreRequest extends FormRequest @@ -17,14 +18,14 @@ class StoreRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { return [ - 'title' =>'required|string|max:255|unique:damages,title', - 'unit' =>'required|string|max:255', - 'base_price' =>'required|integer', + 'title' => 'required|string|max:255|unique:damages,title', + 'unit' => 'required|string|max:255', + 'base_price' => 'required|integer', ]; } } diff --git a/app/Http/Requests/V3/Damage/UpdateRequest.php b/app/Http/Requests/V3/Damage/UpdateRequest.php index 8021f716..fba1a3a2 100644 --- a/app/Http/Requests/V3/Damage/UpdateRequest.php +++ b/app/Http/Requests/V3/Damage/UpdateRequest.php @@ -23,9 +23,9 @@ class UpdateRequest extends FormRequest public function rules(): array { return [ - 'title' =>['required', 'string', 'max:255',Rule::unique('damages','title')->ignore($this->damage->id)], - 'unit' =>'required|string', - 'base_price' =>'required|integer', + 'title' => ['required', 'string', 'max:255', Rule::unique('damages', 'title')->ignore($this->damage->id)], + 'unit' => 'required|string', + 'base_price' => 'required|integer', ]; } } diff --git a/app/Http/Requests/V3/Dashboard/Harim/Deputy/ConfirmPaymentRequest.php b/app/Http/Requests/V3/Dashboard/Harim/Deputy/ConfirmPaymentRequest.php new file mode 100644 index 00000000..2acd1e16 --- /dev/null +++ b/app/Http/Requests/V3/Dashboard/Harim/Deputy/ConfirmPaymentRequest.php @@ -0,0 +1,31 @@ +harim->province_id == auth()->user()->province_id && + $this->harim->state_id == HarimStates::BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_MOAVEN->value; + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules(): array + { + return [ + 'expert_description' => 'required|string', + ]; + } +} diff --git a/app/Http/Requests/V3/Dashboard/Harim/Deputy/ConfirmRequest.php b/app/Http/Requests/V3/Dashboard/Harim/Deputy/ConfirmRequest.php index f754eb14..256d4d8d 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/Deputy/ConfirmRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/Deputy/ConfirmRequest.php @@ -3,6 +3,7 @@ namespace App\Http\Requests\V3\Dashboard\Harim\Deputy; use App\Enums\HarimStates; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class ConfirmRequest extends FormRequest @@ -12,14 +13,14 @@ class ConfirmRequest extends FormRequest */ public function authorize(): bool { - return $this->harim->edareh_shahri_id == auth()->user()->edarate_shahri_id && + return $this->harim->province_id == auth()->user()->province_id && $this->harim->state_id == HarimStates::BARESI_TAVASOT_MOAVEN->value; } /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/Dashboard/Harim/Deputy/ConfirmRoadAccessRequest.php b/app/Http/Requests/V3/Dashboard/Harim/Deputy/ConfirmRoadAccessRequest.php index 119e6524..24f31d15 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/Deputy/ConfirmRoadAccessRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/Deputy/ConfirmRoadAccessRequest.php @@ -13,8 +13,8 @@ class ConfirmRoadAccessRequest extends FormRequest */ public function authorize(): bool { - return $this->harim->edareh_shahri_id == auth()->user()->edarate_shahri_id && - $this->harim->state_id == HarimStates::BARESI_FILE_APLODE_SHODE_TAVASOTE_MOAVEN->value; + return $this->harim->province_id == auth()->user()->province_id && + $this->harim->state_id == HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MOAVEN->value; } /** diff --git a/app/Http/Requests/V3/Dashboard/Harim/Deputy/ReferPaymentRequest.php b/app/Http/Requests/V3/Dashboard/Harim/Deputy/ReferPaymentRequest.php new file mode 100644 index 00000000..9755727d --- /dev/null +++ b/app/Http/Requests/V3/Dashboard/Harim/Deputy/ReferPaymentRequest.php @@ -0,0 +1,31 @@ +harim->province_id == auth()->user()->province_id && + $this->harim->state_id == HarimStates::BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_MOAVEN->value; + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules(): array + { + return [ + 'expert_description' => 'required|string', + ]; + } +} diff --git a/app/Http/Requests/V3/Dashboard/Harim/Deputy/ReferRequest.php b/app/Http/Requests/V3/Dashboard/Harim/Deputy/ReferRequest.php index 335de432..3d61505b 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/Deputy/ReferRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/Deputy/ReferRequest.php @@ -3,6 +3,7 @@ namespace App\Http\Requests\V3\Dashboard\Harim\Deputy; use App\Enums\HarimStates; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class ReferRequest extends FormRequest @@ -12,14 +13,14 @@ class ReferRequest extends FormRequest */ public function authorize(): bool { - return $this->harim->edareh_shahri_id == auth()->user()->edarate_shahri_id && + return $this->harim->province_id == auth()->user()->province_id && $this->harim->state_id == HarimStates::BARESI_TAVASOT_MOAVEN->value; } /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/Dashboard/Harim/Deputy/ReferRoadAccessRequest.php b/app/Http/Requests/V3/Dashboard/Harim/Deputy/ReferRoadAccessRequest.php index 3cd3e81c..37cc6560 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/Deputy/ReferRoadAccessRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/Deputy/ReferRoadAccessRequest.php @@ -3,6 +3,7 @@ namespace App\Http\Requests\V3\Dashboard\Harim\Deputy; use App\Enums\HarimStates; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class ReferRoadAccessRequest extends FormRequest @@ -12,14 +13,14 @@ class ReferRoadAccessRequest extends FormRequest */ public function authorize(): bool { - return $this->harim->edareh_shahri_id == auth()->user()->edarate_shahri_id && - $this->harim->state_id == HarimStates::BARESI_FILE_APLODE_SHODE_TAVASOTE_MOAVEN->value; + return $this->harim->province_id == auth()->user()->province_id && + $this->harim->state_id == HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MOAVEN->value; } /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/Dashboard/Harim/Deputy/ShowRequest.php b/app/Http/Requests/V3/Dashboard/Harim/Deputy/ShowRequest.php index f23097b6..81f030fe 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/Deputy/ShowRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/Deputy/ShowRequest.php @@ -2,7 +2,7 @@ namespace App\Http\Requests\V3\Dashboard\Harim\Deputy; -use App\Enums\HarimStates; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class ShowRequest extends FormRequest @@ -12,13 +12,13 @@ class ShowRequest extends FormRequest */ public function authorize(): bool { - return $this->harim->edareh_shahri_id == auth()->user()->edarate_shahri_id; + return $this->harim->province_id == auth()->user()->province_id; } /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ConfirmGuaranteeLetterNeedRequest.php b/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ConfirmGuaranteeLetterNeedRequest.php index 6c943ebe..84c464d7 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ConfirmGuaranteeLetterNeedRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ConfirmGuaranteeLetterNeedRequest.php @@ -3,6 +3,7 @@ namespace App\Http\Requests\V3\Dashboard\Harim\GeneralManager; use App\Enums\HarimStates; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class ConfirmGuaranteeLetterNeedRequest extends FormRequest @@ -12,14 +13,14 @@ class ConfirmGuaranteeLetterNeedRequest extends FormRequest */ public function authorize(): bool { - return $this->harim->edareh_shahri_id == auth()->user()->edarate_shahri_id && + return $this->harim->province_id == auth()->user()->province_id && $this->harim->state_id == HarimStates::BARESI_TAVASOT_MODIR_KOL->value; } /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ConfirmNoRoadAccessNeedRequest.php b/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ConfirmNoRoadAccessNeedRequest.php index 94a60116..f9430bef 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ConfirmNoRoadAccessNeedRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ConfirmNoRoadAccessNeedRequest.php @@ -3,6 +3,7 @@ namespace App\Http\Requests\V3\Dashboard\Harim\GeneralManager; use App\Enums\HarimStates; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class ConfirmNoRoadAccessNeedRequest extends FormRequest @@ -12,14 +13,14 @@ class ConfirmNoRoadAccessNeedRequest extends FormRequest */ public function authorize(): bool { - return $this->harim->edareh_shahri_id == auth()->user()->edarate_shahri_id && + return $this->harim->province_id == auth()->user()->province_id && $this->harim->state_id == HarimStates::BARESI_TAVASOT_MODIR_KOL->value; } /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ConfirmPaymentRequest.php b/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ConfirmPaymentRequest.php new file mode 100644 index 00000000..9bab48f7 --- /dev/null +++ b/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ConfirmPaymentRequest.php @@ -0,0 +1,31 @@ +harim->province_id == auth()->user()->province_id && + $this->harim->state_id == HarimStates::BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_MODIR_KOL->value; + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules(): array + { + return [ + 'expert_description' => 'required|string', + ]; + } +} diff --git a/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ConfirmRoadAccessEditNeedRequest.php b/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ConfirmRoadAccessEditNeedRequest.php index 5d4649f5..eaa004d3 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ConfirmRoadAccessEditNeedRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ConfirmRoadAccessEditNeedRequest.php @@ -3,6 +3,7 @@ namespace App\Http\Requests\V3\Dashboard\Harim\GeneralManager; use App\Enums\HarimStates; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class ConfirmRoadAccessEditNeedRequest extends FormRequest @@ -12,14 +13,14 @@ class ConfirmRoadAccessEditNeedRequest extends FormRequest */ public function authorize(): bool { - return $this->harim->edareh_shahri_id == auth()->user()->edarate_shahri_id && - $this->harim->state_id == HarimStates::BARESI_FILE_APLODE_SHODE_TAVASOTE_MODIR_KOL->value; + return $this->harim->province_id == auth()->user()->province_id && + $this->harim->state_id == HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MODIR_KOL->value; } /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ConfirmRoadAccessNeedRequest.php b/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ConfirmRoadAccessNeedRequest.php index 9176609a..93c01b02 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ConfirmRoadAccessNeedRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ConfirmRoadAccessNeedRequest.php @@ -3,6 +3,7 @@ namespace App\Http\Requests\V3\Dashboard\Harim\GeneralManager; use App\Enums\HarimStates; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class ConfirmRoadAccessNeedRequest extends FormRequest @@ -12,14 +13,14 @@ class ConfirmRoadAccessNeedRequest extends FormRequest */ public function authorize(): bool { - return $this->harim->edareh_shahri_id == auth()->user()->edarate_shahri_id && + return $this->harim->province_id == auth()->user()->province_id && $this->harim->state_id == HarimStates::BARESI_TAVASOT_MODIR_KOL->value; } /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ReferFileRequest.php b/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ReferFileRequest.php index ea8ab9ed..351b3f99 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ReferFileRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ReferFileRequest.php @@ -3,6 +3,7 @@ namespace App\Http\Requests\V3\Dashboard\Harim\GeneralManager; use App\Enums\HarimStates; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class ReferFileRequest extends FormRequest @@ -12,14 +13,14 @@ class ReferFileRequest extends FormRequest */ public function authorize(): bool { - return $this->harim->edareh_shahri_id == auth()->user()->edarate_shahri_id && - $this->harim->state_id == HarimStates::BARESI_FILE_APLODE_SHODE_TAVASOTE_MODIR_KOL->value; + return $this->harim->province_id == auth()->user()->province_id && + $this->harim->state_id == HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MODIR_KOL->value; } /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ReferPaymentRequest.php b/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ReferPaymentRequest.php new file mode 100644 index 00000000..c7175dd3 --- /dev/null +++ b/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ReferPaymentRequest.php @@ -0,0 +1,31 @@ +harim->province_id == auth()->user()->province_id && + $this->harim->state_id == HarimStates::BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_MODIR_KOL->value; + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules(): array + { + return [ + 'expert_description' => 'required|string', + ]; + } +} diff --git a/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ReferRequest.php b/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ReferRequest.php index 931578ee..7d881cc6 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ReferRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ReferRequest.php @@ -3,6 +3,7 @@ namespace App\Http\Requests\V3\Dashboard\Harim\GeneralManager; use App\Enums\HarimStates; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class ReferRequest extends FormRequest @@ -12,14 +13,14 @@ class ReferRequest extends FormRequest */ public function authorize(): bool { - return $this->harim->edareh_shahri_id == auth()->user()->edarate_shahri_id && + return $this->harim->province_id == auth()->user()->province_id && $this->harim->state_id == HarimStates::BARESI_TAVASOT_MODIR_KOL->value; } /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/RejectRequest.php b/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/RejectRequest.php index 1d90ab5d..92bd37e0 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/RejectRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/RejectRequest.php @@ -3,6 +3,7 @@ namespace App\Http\Requests\V3\Dashboard\Harim\GeneralManager; use App\Enums\HarimStates; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class RejectRequest extends FormRequest @@ -12,14 +13,14 @@ class RejectRequest extends FormRequest */ public function authorize(): bool { - return $this->harim->edareh_shahri_id == auth()->user()->edarate_shahri_id && + return $this->harim->province_id == auth()->user()->province_id && $this->harim->state_id == HarimStates::BARESI_TAVASOT_MODIR_KOL->value; } /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ShowRequest.php b/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ShowRequest.php index 22904351..4f9c91c9 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ShowRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ShowRequest.php @@ -2,7 +2,7 @@ namespace App\Http\Requests\V3\Dashboard\Harim\GeneralManager; -use App\Enums\HarimStates; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class ShowRequest extends FormRequest @@ -12,13 +12,13 @@ class ShowRequest extends FormRequest */ public function authorize(): bool { - return $this->harim->edareh_shahri_id == auth()->user()->edarate_shahri_id; + return $this->harim->province_id == auth()->user()->province_id; } /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/ComputingPaymentRequest.php b/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/ComputingPaymentRequest.php new file mode 100644 index 00000000..4c4670a5 --- /dev/null +++ b/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/ComputingPaymentRequest.php @@ -0,0 +1,70 @@ +harim->province_id == auth()->user()->province_id && + $this->harim->state_id == HarimStates::BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_DAFTAR_HARIM->value; + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules(): array + { + return [ + 'traffic' => 'required|numeric|decimal:0,1', + 'road_type' => 'required|numeric|decimal:0,1', + 'position' => 'required|numeric|decimal:0,1', + 'final_area_space' => 'required|numeric|decimal:0,2', //عرصه + 'final_plan_space' => 'required|numeric|decimal:0,2', // عیان + 'payment_amount' => 'required|numeric', + 'expert_description' => 'required|string', + ]; + } + + public function after(): array + { + return [ + function () { + $fee = config('harim_web_services.Harim_Payment.fee'); + $arse = ( + $this->traffic * + $this->road_type * + $this->position * + $fee * + $this->final_area_space + ); + $ayan =( + $this->traffic * + $this->road_type * + $this->position * + $fee * + $this->final_plan_space + ); + $result = floor($arse + $ayan); + + if ($result != $this->payment_amount) { + $this->validator->errors()->add( + 'payment_amount', + 'payment_amount مقادیر بدست امده صحیح نمی باشد.' + ); + } + } + ]; + } + +} diff --git a/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/FileAcceptedRequest.php b/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/FileAcceptedRequest.php index 018d7de9..0a4c5145 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/FileAcceptedRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/FileAcceptedRequest.php @@ -3,6 +3,7 @@ namespace App\Http\Requests\V3\Dashboard\Harim\HarimOffice; use App\Enums\HarimStates; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class FileAcceptedRequest extends FormRequest @@ -12,14 +13,14 @@ class FileAcceptedRequest extends FormRequest */ public function authorize(): bool { - return $this->harim->edareh_shahri_id == auth()->user()->edarate_shahri_id && - $this->harim->state_id == HarimStates::BARESI_FILE_APLODE_SHODE_TAVASOTE_DAFTAR_HARIM->value; + return $this->harim->province_id == auth()->user()->province_id && + $this->harim->state_id == HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_DAFTAR_HARIM->value; } /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/FileRejectedRequest.php b/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/FileRejectedRequest.php index 5a95a458..8e2f1901 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/FileRejectedRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/FileRejectedRequest.php @@ -3,6 +3,7 @@ namespace App\Http\Requests\V3\Dashboard\Harim\HarimOffice; use App\Enums\HarimStates; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class FileRejectedRequest extends FormRequest @@ -12,14 +13,14 @@ class FileRejectedRequest extends FormRequest */ public function authorize(): bool { - return $this->harim->edareh_shahri_id == auth()->user()->edarate_shahri_id && - $this->harim->state_id == HarimStates::BARESI_FILE_APLODE_SHODE_TAVASOTE_DAFTAR_HARIM->value; + return $this->harim->province_id == auth()->user()->province_id && + $this->harim->state_id == HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_DAFTAR_HARIM->value; } /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/NeedRoadAccessRequest.php b/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/NeedRoadAccessRequest.php index e7dd187a..3b9763c3 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/NeedRoadAccessRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/NeedRoadAccessRequest.php @@ -3,6 +3,7 @@ namespace App\Http\Requests\V3\Dashboard\Harim\HarimOffice; use App\Enums\HarimStates; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class NeedRoadAccessRequest extends FormRequest @@ -12,14 +13,14 @@ class NeedRoadAccessRequest extends FormRequest */ public function authorize(): bool { - return $this->harim->edareh_shahri_id == auth()->user()->edarate_shahri_id && + return $this->harim->province_id == auth()->user()->province_id && $this->harim->state_id == HarimStates::BARESI_TAVASOT_DAFTAR_HARIM->value; } /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/ReferRequest.php b/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/ReferRequest.php new file mode 100644 index 00000000..fa12cae2 --- /dev/null +++ b/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/ReferRequest.php @@ -0,0 +1,31 @@ +harim->province_id === auth()->user()->province_id && + $this->harim->state_id === HarimStates::BARESI_TAVASOT_DAFTAR_HARIM->value; + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules(): array + { + return [ + 'expert_description' => 'required|string', + ]; + } +} diff --git a/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/RejectRequest.php b/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/RejectRequest.php index b072d879..720dbe8a 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/RejectRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/RejectRequest.php @@ -3,6 +3,7 @@ namespace App\Http\Requests\V3\Dashboard\Harim\HarimOffice; use App\Enums\HarimStates; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class RejectRequest extends FormRequest @@ -12,15 +13,14 @@ class RejectRequest extends FormRequest */ public function authorize(): bool { - return $this->harim->edareh_shahri_id == auth()->user()->edarate_shahri_id && + return $this->harim->province_id == auth()->user()->province_id && $this->harim->state_id == HarimStates::BARESI_TAVASOT_DAFTAR_HARIM->value; } - /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/ShowRequest.php b/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/ShowRequest.php index 375a5581..31ef827b 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/ShowRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/ShowRequest.php @@ -2,7 +2,6 @@ namespace App\Http\Requests\V3\Dashboard\Harim\HarimOffice; -use App\Enums\HarimStates; use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; @@ -13,10 +12,9 @@ class ShowRequest extends FormRequest */ public function authorize(): bool { - return $this->harim->edareh_shahri_id == auth()->user()->edarate_shahri_id; + return $this->harim->province_id == auth()->user()->province_id; } - /** * Get the validation rules that apply to the request. * diff --git a/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/WithoutRoadAccessRequest.php b/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/WithoutRoadAccessRequest.php index 17cb99e1..cd519c82 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/WithoutRoadAccessRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/WithoutRoadAccessRequest.php @@ -3,6 +3,7 @@ namespace App\Http\Requests\V3\Dashboard\Harim\HarimOffice; use App\Enums\HarimStates; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class WithoutRoadAccessRequest extends FormRequest @@ -12,14 +13,14 @@ class WithoutRoadAccessRequest extends FormRequest */ public function authorize(): bool { - return $this->harim->edareh_shahri_id == auth()->user()->edarate_shahri_id && + return $this->harim->province_id == auth()->user()->province_id && $this->harim->state_id == HarimStates::BARESI_TAVASOT_DAFTAR_HARIM->value; } /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetAccessRoadRequest.php b/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetAccessRoadRequest.php index 09758ca8..733a03b6 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetAccessRoadRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetAccessRoadRequest.php @@ -3,7 +3,9 @@ namespace App\Http\Requests\V3\Dashboard\Harim\PanjareVahed; use Illuminate\Contracts\Validation\ValidationRule; +use Illuminate\Contracts\Validation\Validator; use Illuminate\Foundation\Http\FormRequest; +use Illuminate\Http\Exceptions\HttpResponseException; class GetAccessRoadRequest extends FormRequest { @@ -27,6 +29,18 @@ class GetAccessRoadRequest extends FormRequest 'access_road' => 'required|array', 'access_road.type' => 'required|string', 'access_road.coordinates' => 'required|array', + 'data' => 'required|string', ]; } + + protected function failedValidation(Validator $validator) + { + $response = response()->json([ + 'statusCode' => 422, + 'message' => 'invalid inputs', + 'errors' => $validator->errors(), + ], 422); + + throw new HttpResponseException($response); + } } diff --git a/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetFinalPolygonsRequest.php b/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetFinalPolygonsRequest.php index 0080dd86..480bc4cf 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetFinalPolygonsRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetFinalPolygonsRequest.php @@ -3,7 +3,9 @@ namespace App\Http\Requests\V3\Dashboard\Harim\PanjareVahed; use Illuminate\Contracts\Validation\ValidationRule; +use Illuminate\Contracts\Validation\Validator; use Illuminate\Foundation\Http\FormRequest; +use Illuminate\Http\Exceptions\HttpResponseException; class GetFinalPolygonsRequest extends FormRequest { @@ -30,6 +32,18 @@ class GetFinalPolygonsRequest extends FormRequest 'final_plan' => 'required|array', 'final_plan.type' => 'required|string', 'final_plan.coordinates' => 'required|array', + 'data' => 'required|string', ]; } + + protected function failedValidation(Validator $validator) + { + $response = response()->json([ + 'statusCode' => 422, + 'message' => 'invalid inputs', + 'errors' => $validator->errors(), + ], 422); + + throw new HttpResponseException($response); + } } diff --git a/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetRejectRequest.php b/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetRejectRequest.php index 701cf5b1..b0f34405 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetRejectRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetRejectRequest.php @@ -3,7 +3,9 @@ namespace App\Http\Requests\V3\Dashboard\Harim\PanjareVahed; use Illuminate\Contracts\Validation\ValidationRule; +use Illuminate\Contracts\Validation\Validator; use Illuminate\Foundation\Http\FormRequest; +use Illuminate\Http\Exceptions\HttpResponseException; class GetRejectRequest extends FormRequest { @@ -24,6 +26,19 @@ class GetRejectRequest extends FormRequest { return [ 'request_id' => 'required|exists:harims,panjare_vahed_id', + 'data' => 'required|string', + 'status' => 'required|integer' ]; } + + protected function failedValidation(Validator $validator) + { + $response = response()->json([ + 'statusCode' => 422, + 'message' => 'invalid inputs', + 'errors' => $validator->errors(), + ], 422); + + throw new HttpResponseException($response); + } } diff --git a/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/ReceiveNewRequest.php b/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/ReceiveNewRequest.php index d2013ad4..3ddf8d7e 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/ReceiveNewRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/ReceiveNewRequest.php @@ -3,7 +3,9 @@ namespace App\Http\Requests\V3\Dashboard\Harim\PanjareVahed; use Illuminate\Contracts\Validation\ValidationRule; +use Illuminate\Contracts\Validation\Validator; use Illuminate\Foundation\Http\FormRequest; +use Illuminate\Http\Exceptions\HttpResponseException; class ReceiveNewRequest extends FormRequest { @@ -31,11 +33,25 @@ class ReceiveNewRequest extends FormRequest 'plan_group' => 'required', 'plan_title' => 'required', 'worksheet' => 'required', - 'response_options' => 'required', + 'response_options' => 'required|array', + 'response_options.*.id' => 'required|integer', + 'response_options.*.value' => 'required|string', 'isic' => 'required', 'primary_area' => 'required|array', 'primary_area.type' => 'required|string', 'primary_area.coordinates' => 'required|array', + 'data' => 'required|string', ]; } + + protected function failedValidation(Validator $validator) + { + $response = response()->json([ + 'statusCode' => 422, + 'message' => 'invalid inputs', + 'errors' => $validator->errors(), + ], 422); + + throw new HttpResponseException($response); + } } diff --git a/app/Http/Requests/V3/Dashboard/Harim/ProvinceOffice/FeedBackRequest.php b/app/Http/Requests/V3/Dashboard/Harim/ProvinceOffice/FeedBackRequest.php index 8bc9d03f..94ee2d06 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/ProvinceOffice/FeedBackRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/ProvinceOffice/FeedBackRequest.php @@ -3,6 +3,7 @@ namespace App\Http\Requests\V3\Dashboard\Harim\ProvinceOffice; use App\Enums\HarimStates; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class FeedBackRequest extends FormRequest @@ -19,15 +20,15 @@ class FeedBackRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { return [ 'expert_description' => 'required|string', - 'forbidden_area' => 'required|array', - 'forbidden_area.type' => 'required|string', - 'forbidden_area.coordinates' => 'required|array', + 'forbidden_area' => 'array', + 'forbidden_area.type' => 'string', + 'forbidden_area.coordinates' => 'array', ]; } } diff --git a/app/Http/Requests/V3/Dashboard/Harim/ProvinceOffice/ShowRequest.php b/app/Http/Requests/V3/Dashboard/Harim/ProvinceOffice/ShowRequest.php index f0c0d996..d0426827 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/ProvinceOffice/ShowRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/ProvinceOffice/ShowRequest.php @@ -2,7 +2,7 @@ namespace App\Http\Requests\V3\Dashboard\Harim\ProvinceOffice; -use App\Enums\HarimStates; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class ShowRequest extends FormRequest @@ -15,11 +15,10 @@ class ShowRequest extends FormRequest return $this->harim->edareh_shahri_id == auth()->user()->edarate_shahri_id; } - /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/Dashboard/RoleManageMent/StoreRequest.php b/app/Http/Requests/V3/Dashboard/RoleManageMent/StoreRequest.php new file mode 100644 index 00000000..72bb3d47 --- /dev/null +++ b/app/Http/Requests/V3/Dashboard/RoleManageMent/StoreRequest.php @@ -0,0 +1,33 @@ + + */ + public function rules(): array + { + return [ + 'name' => 'required|string|unique:roles,name', + 'name_fa' => 'required|string', + 'description' => 'string', + 'permissions' => 'array', + 'permissions.*' => 'integer|exists:permissions,id', + ]; + } +} diff --git a/app/Http/Requests/V3/Dashboard/RoleManageMent/UpdateRequest.php b/app/Http/Requests/V3/Dashboard/RoleManageMent/UpdateRequest.php new file mode 100644 index 00000000..3af32615 --- /dev/null +++ b/app/Http/Requests/V3/Dashboard/RoleManageMent/UpdateRequest.php @@ -0,0 +1,34 @@ + + */ + public function rules(): array + { + return [ + 'name' => ['required', 'string', 'max:255', Rule::unique('roles', 'name')->ignore($this->role->id)], + 'name_fa' => 'required|string', + 'description' => 'string', + 'permissions' => 'array', + 'permissions.*' => 'integer|exists:permissions,id', + ]; + } +} diff --git a/app/Http/Requests/V3/Dashboard/UserManagement/ChangeConfirmEnabelRequest.php b/app/Http/Requests/V3/Dashboard/UserManagement/ChangeConfirmEnabelRequest.php new file mode 100644 index 00000000..52ec36bd --- /dev/null +++ b/app/Http/Requests/V3/Dashboard/UserManagement/ChangeConfirmEnabelRequest.php @@ -0,0 +1,32 @@ +user(); + + return $user->hasPermissionTo('full-user-management') || + ($user->hasPermissionTo('limited-user-management') && $this->province_id == $user->province_id); + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules(): array + { + return [ + 'enabled' => 'required|in:0,1', + ]; + } +} diff --git a/app/Http/Requests/V3/Dashboard/UserManagement/ChangeConfirmStatusRequest.php b/app/Http/Requests/V3/Dashboard/UserManagement/ChangeConfirmStatusRequest.php new file mode 100644 index 00000000..accbbb4d --- /dev/null +++ b/app/Http/Requests/V3/Dashboard/UserManagement/ChangeConfirmStatusRequest.php @@ -0,0 +1,29 @@ + + */ + public function rules(): array + { + return [ + 'confirm' => 'required|in:0,1', + ]; + } +} diff --git a/app/Http/Requests/V3/Dashboard/UserManagement/ChangePasswordRequest.php b/app/Http/Requests/V3/Dashboard/UserManagement/ChangePasswordRequest.php new file mode 100644 index 00000000..36f91819 --- /dev/null +++ b/app/Http/Requests/V3/Dashboard/UserManagement/ChangePasswordRequest.php @@ -0,0 +1,29 @@ + + */ + public function rules(): array + { + return [ + 'password' => 'required|string|confirmed|min:8', + ]; + } +} diff --git a/app/Http/Requests/V3/Dashboard/UserManagement/FullStoreRequest.php b/app/Http/Requests/V3/Dashboard/UserManagement/FullStoreRequest.php new file mode 100644 index 00000000..bdd52cb6 --- /dev/null +++ b/app/Http/Requests/V3/Dashboard/UserManagement/FullStoreRequest.php @@ -0,0 +1,49 @@ + + */ + public function rules(): array + { + return [ + 'edarate_ostani_id' => [ + 'integer', 'exists:edarate_ostani,id', + Rule::prohibitedIf(fn () => filled($this->input('edarate_shahri_id'))), + ], + 'edarate_shahri_id' => [ + 'integer', 'exists:edarate_shahri,id', + Rule::prohibitedIf(fn () => filled($this->input('edarate_ostani_id'))), + ], + 'province_id' => 'required|exists:provinces,id', + 'city_id' => 'exists:cities,id', + 'username' => 'required|unique:users,username', + 'national_code' => 'unique:users,national_code|digits:10', + 'password' => 'required|confirmed|min:8', + 'first_name' => 'required|string', + 'last_name' => 'required|string', + 'position' => 'string', + 'mobile' => 'required|regex:/^09\d{9}$/|numeric|digits:11', + 'degree' => 'string', + 'major' => 'string', + 'avatar' => 'required|file|mimes:pdf,jpg,jpeg,png', + ]; + } +} diff --git a/app/Http/Requests/V3/Dashboard/UserManagement/GivePermissionRequest.php b/app/Http/Requests/V3/Dashboard/UserManagement/GivePermissionRequest.php new file mode 100644 index 00000000..6e3d2574 --- /dev/null +++ b/app/Http/Requests/V3/Dashboard/UserManagement/GivePermissionRequest.php @@ -0,0 +1,30 @@ + + */ + public function rules(): array + { + return [ + 'permissions' => 'array', + 'permissions.*' => 'integer|exists:permissions,id', + ]; + } +} diff --git a/app/Http/Requests/V3/Dashboard/UserManagement/GiveRoleRequest.php b/app/Http/Requests/V3/Dashboard/UserManagement/GiveRoleRequest.php new file mode 100644 index 00000000..de1735cc --- /dev/null +++ b/app/Http/Requests/V3/Dashboard/UserManagement/GiveRoleRequest.php @@ -0,0 +1,29 @@ + + */ + public function rules(): array + { + return [ + 'role' => 'required|exists:roles,id', + ]; + } +} diff --git a/app/Http/Requests/V3/Dashboard/UserManagement/LimitStoreRequest.php b/app/Http/Requests/V3/Dashboard/UserManagement/LimitStoreRequest.php new file mode 100644 index 00000000..da4a6e66 --- /dev/null +++ b/app/Http/Requests/V3/Dashboard/UserManagement/LimitStoreRequest.php @@ -0,0 +1,42 @@ + + */ + public function rules(): array + { + return [ + 'edarate_ostani_id' => [ + 'integer', 'exists:edarate_ostani,id', + Rule::prohibitedIf(fn () => filled($this->input('edarate_shahri_id'))), + ], + 'edarate_shahri_id' => [ + 'integer', 'exists:edarate_shahri,id', + Rule::prohibitedIf(fn () => filled($this->input('edarate_ostani_id'))), + ], + 'province_id' => 'required|exists:provinces,id', + 'city_id' => 'exists:cities,id', + 'username' => 'required|unique:users,username', + 'national_code' => 'unique:users,national_code|digits:10', + 'password' => 'required|confirmed|min:8', + ]; + } +} diff --git a/app/Http/Requests/V3/Dashboard/UserManagement/StoreRequest.php b/app/Http/Requests/V3/Dashboard/UserManagement/StoreRequest.php deleted file mode 100644 index 522f6107..00000000 --- a/app/Http/Requests/V3/Dashboard/UserManagement/StoreRequest.php +++ /dev/null @@ -1,35 +0,0 @@ -|string> - */ - public function rules(): array - { - return [ - 'province_id' => 'required|exists:provinces,id', - 'edarate_ostani_id' => 'exists:edarate_ostanis,id', - 'city_id' => 'exists:cities,id', - 'edarate_shahri_id' => 'exists:edarate_shahris,id', - 'username' => 'required|unique:users,username', - 'national_code' => 'unique:users,national_code', - 'password' => 'required|min:8', - - ]; - } -} diff --git a/app/Http/Requests/V3/Dashboard/UserManagement/UpdateRequest.php b/app/Http/Requests/V3/Dashboard/UserManagement/UpdateRequest.php index d831991c..e8225c3e 100644 --- a/app/Http/Requests/V3/Dashboard/UserManagement/UpdateRequest.php +++ b/app/Http/Requests/V3/Dashboard/UserManagement/UpdateRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\V3\Dashboard\UserManagement; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; use Illuminate\Validation\Rule; @@ -18,18 +19,30 @@ class UpdateRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { return [ 'province_id' => 'required|exists:provinces,id', - 'edarate_ostani_id' => 'exists:edarate_ostanis,id', + 'edarate_ostani_id' => [ + 'integer', 'exists:edarate_ostani,id', + Rule::prohibitedIf(fn () => filled($this->input('edarate_shahri_id'))), + ], + 'edarate_shahri_id' => [ + 'integer', 'exists:edarate_shahri,id', + Rule::prohibitedIf(fn () => filled($this->input('edarate_ostani_id'))), + ], 'city_id' => 'exists:cities,id', - 'edarate_shahri_id' => 'exists:edarate_shahris,id', - 'username' => ['required',Rule::unique('users','username')->ignore($this->user->id)], - 'national_code' =>['required',Rule::unique('users','national_code')->ignore($this->user->id)], - 'password' => 'required|min:8', + 'username' => [Rule::unique('users', 'username')->ignore($this->user->id)], + 'national_code' => ['required', Rule::unique('users', 'national_code')->ignore($this->user->id)], + 'first_name' => 'required|string', + 'last_name' => 'required|string', + 'position' => 'string', + 'mobile' => 'required|string', + 'degree' => 'string', + 'major' => 'string', + 'avatar' => 'required|file|mimes:pdf,jpg,jpeg,png', ]; } } diff --git a/app/Http/Requests/V3/Harim/Divarkeshi/StoreRequest.php b/app/Http/Requests/V3/Harim/Divarkeshi/StoreRequest.php index 31d8bf27..3126bd79 100644 --- a/app/Http/Requests/V3/Harim/Divarkeshi/StoreRequest.php +++ b/app/Http/Requests/V3/Harim/Divarkeshi/StoreRequest.php @@ -2,8 +2,8 @@ namespace App\Http\Requests\V3\Harim\Divarkeshi; -use Illuminate\Foundation\Http\FormRequest; use Illuminate\Contracts\Validation\ValidationRule; +use Illuminate\Foundation\Http\FormRequest; class StoreRequest extends FormRequest { @@ -18,7 +18,7 @@ class StoreRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { @@ -34,10 +34,10 @@ class StoreRequest extends FormRequest 'motaghazi_firstname' => 'required', 'motaghazi_lastname' => 'required', - /// conditional rule + // / conditional rule 'national_id' => 'numeric', 'shenase_melli' => 'numeric', - /// + // / 'tel_number' => 'numeric', 'mobile_number' => 'numeric', diff --git a/app/Http/Requests/V3/LogList/StoreRequest.php b/app/Http/Requests/V3/LogList/StoreRequest.php index 65d1da73..075d34b0 100644 --- a/app/Http/Requests/V3/LogList/StoreRequest.php +++ b/app/Http/Requests/V3/LogList/StoreRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\V3\LogList; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class StoreRequest extends FormRequest @@ -17,14 +18,14 @@ class StoreRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { return [ - 'description' =>'required|string', - 'log_unique_code' =>'required|numeric|unique:log_lists,log_unique_code', - 'action_type' =>'required|string', + 'description' => 'required|string', + 'log_unique_code' => 'required|numeric|unique:log_lists,log_unique_code', + 'action_type' => 'required|string', ]; } } diff --git a/app/Http/Requests/V3/LogList/UpdateRequest.php b/app/Http/Requests/V3/LogList/UpdateRequest.php index feee0d27..7f058e52 100644 --- a/app/Http/Requests/V3/LogList/UpdateRequest.php +++ b/app/Http/Requests/V3/LogList/UpdateRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\V3\LogList; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; use Illuminate\Validation\Rule; @@ -18,7 +19,7 @@ class UpdateRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/Mission/ControlUnit/StartRequest.php b/app/Http/Requests/V3/Mission/ControlUnit/StartRequest.php index 59b7f5e1..e5d24b77 100644 --- a/app/Http/Requests/V3/Mission/ControlUnit/StartRequest.php +++ b/app/Http/Requests/V3/Mission/ControlUnit/StartRequest.php @@ -26,6 +26,7 @@ class StartRequest extends FormRequest { return [ 'code' => 'required|string', + 'km' => 'required', ]; } @@ -33,13 +34,13 @@ class StartRequest extends FormRequest { return [ function (Validator $validator) { - if ($this->mission->code != $this->code){ + if ($this->mission->code != $this->code) { $validator->errors()->add( 'code', 'کد وارد شده صحیح نمی باشد' ); } - } + }, ]; } } diff --git a/app/Http/Requests/V3/Mission/RequestPortal/ContinueMissionRequest.php b/app/Http/Requests/V3/Mission/RequestPortal/ContinueMissionRequest.php index b38d0da2..bff88565 100644 --- a/app/Http/Requests/V3/Mission/RequestPortal/ContinueMissionRequest.php +++ b/app/Http/Requests/V3/Mission/RequestPortal/ContinueMissionRequest.php @@ -28,8 +28,7 @@ class ContinueMissionRequest extends FormRequest return [ 'rahdaran' => 'array', 'rahdaran.*' => 'exists:rahdaran,id', - 'machines' => 'required|array', - 'machines.*' => 'required|integer|exists:cmms_machines,id', + 'machine_id' => 'required|integer|exists:cmms_machines,id', 'driver' => 'required|integer|exists:rahdaran,id', 'type' => 'required|in:1,2', 'zone' => 'required|in:1,2,3', @@ -39,27 +38,28 @@ class ContinueMissionRequest extends FormRequest 'area' => 'required|array', 'area.type' => 'required|string', 'area.coordinates' => 'required|array', - 'explanation' => 'required|string', + 'explanation' => 'required|string', 'category_id' => 'required|in:1,2,3', 'road_observed_id' => 'required_if:category_id,3|exists:road_observeds,id', ]; } + public function after(): array { return [ function (Validator $validator) { - if ($this->type == 1){ + if ($this->type == 1) { $start = Carbon::parse($this->start_date); $end = Carbon::parse($this->end_date); - if ($start->diffInMinutes($end) > 480){ + if ($start->diffInMinutes($end) > 480) { $validator->errors()->add( 'end_date', 'مدت زمان مأموریت ساعتی نباید بیشتر از ۸ ساعت باشد.' ); } } - } + }, ]; } } diff --git a/app/Http/Requests/V3/Mission/RequestPortal/NoProcessRequest.php b/app/Http/Requests/V3/Mission/RequestPortal/NoProcessRequest.php index b632adf6..9531a82b 100644 --- a/app/Http/Requests/V3/Mission/RequestPortal/NoProcessRequest.php +++ b/app/Http/Requests/V3/Mission/RequestPortal/NoProcessRequest.php @@ -36,7 +36,7 @@ class NoProcessRequest extends FormRequest 'area.type' => 'required|string', 'area.coordinates' => 'required|array', 'category_id' => 'required|in:1,2,3', - 'explanation' => 'required|string', + 'explanation' => 'required|string', ]; } diff --git a/app/Http/Requests/V3/Mission/RequestPortal/StoreRequest.php b/app/Http/Requests/V3/Mission/RequestPortal/StoreRequest.php index 740cd2e9..c9233d40 100644 --- a/app/Http/Requests/V3/Mission/RequestPortal/StoreRequest.php +++ b/app/Http/Requests/V3/Mission/RequestPortal/StoreRequest.php @@ -37,7 +37,7 @@ class StoreRequest extends FormRequest 'area' => 'required|array', 'area.type' => 'required|string', 'area.coordinates' => 'required|array', - 'explanation' => 'required|string', + 'explanation' => 'required|string', 'category_id' => 'required|in:1,2,3', 'road_observed_id' => 'required_if:category_id,3|exists:road_observeds,id', ]; @@ -47,18 +47,18 @@ class StoreRequest extends FormRequest { return [ function (Validator $validator) { - if ($this->type == 1){ + if ($this->type == 1) { $start = Carbon::parse($this->start_date); $end = Carbon::parse($this->end_date); - if ($start->diffInMinutes($end) > 480){ + if ($start->diffInMinutes($end) > 480) { $validator->errors()->add( 'end_date', - 'مدت زمان مأموریت ساعتی نباید بیشتر از ۸ ساعت باشد.' + 'مدت زمان مأموریت ساعتی نباید بیشتر از ۸ ساعت باشد.' ); } } - } + }, ]; } } diff --git a/app/Http/Requests/V3/Mission/RequestPortal/UpdateRequest.php b/app/Http/Requests/V3/Mission/RequestPortal/UpdateRequest.php index 293c2e37..d9764a7d 100644 --- a/app/Http/Requests/V3/Mission/RequestPortal/UpdateRequest.php +++ b/app/Http/Requests/V3/Mission/RequestPortal/UpdateRequest.php @@ -38,7 +38,7 @@ class UpdateRequest extends FormRequest 'area' => 'required|array', 'area.type' => 'required|string', 'area.coordinates' => 'required|array', - 'explanation' => 'required|string', + 'explanation' => 'required|string', 'category_id' => 'required|in:1,2,3', 'road_observed_id' => 'required_if:category_id,3|exists:road_observeds,id', ]; @@ -48,18 +48,18 @@ class UpdateRequest extends FormRequest { return [ function (Validator $validator) { - if ($this->type === 1){ + if ($this->type === 1) { $start = Carbon::parse($this->start_date); $end = Carbon::parse($this->end_date); - if ($start->diffInMinutes($end) > 480){ + if ($start->diffInMinutes($end) > 480) { $validator->errors()->add( 'end_date', 'مدت زمان مأموریت ساعتی نباید بیشتر از ۸ ساعت باشد.' ); } } - } + }, ]; } } diff --git a/app/Http/Requests/V3/Mission/TransportaionUnit/AllocateRequest.php b/app/Http/Requests/V3/Mission/TransportaionUnit/AllocateRequest.php index 249d5c36..d5cc2956 100644 --- a/app/Http/Requests/V3/Mission/TransportaionUnit/AllocateRequest.php +++ b/app/Http/Requests/V3/Mission/TransportaionUnit/AllocateRequest.php @@ -3,7 +3,10 @@ namespace App\Http\Requests\V3\Mission\TransportaionUnit; use App\Enums\MissionStates; +use App\Models\Mission; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; +use Illuminate\Validation\Validator; class AllocateRequest extends FormRequest { @@ -18,15 +21,32 @@ class AllocateRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { return [ - 'machines' => 'required|array', - 'machines.*' => 'required|integer|exists:cmms_machines,id', + 'machine_id' => 'required|integer|exists:cmms_machines,id', 'driver' => 'required|integer|exists:rahdaran,id', - 'km' => 'required', + ]; + } + + public function after(): array + { + return [ + function (Validator $validator) { + $duplicateMission = Mission::query()->where('machine_id', '=', $this->machine_id) + ->whereBetween('start_date', [$this->mission->start_date, $this->mission->end_date]) + ->orWhereBetween('end_date', [$this->mission->start_date, $this->mission->end_date]) + ->exists(); + + if ($duplicateMission) { + $validator->errors()->add( + 'machine', + 'خودروی مورد نظر در این زمان رزرو می باشد' + ); + } + }, ]; } } diff --git a/app/Http/Requests/V3/Mission/TransportaionUnit/DeallocateRequest.php b/app/Http/Requests/V3/Mission/TransportaionUnit/DeallocateRequest.php index 28074809..f20d833a 100644 --- a/app/Http/Requests/V3/Mission/TransportaionUnit/DeallocateRequest.php +++ b/app/Http/Requests/V3/Mission/TransportaionUnit/DeallocateRequest.php @@ -3,6 +3,7 @@ namespace App\Http\Requests\V3\Mission\TransportaionUnit; use App\Enums\MissionStates; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class DeallocateRequest extends FormRequest @@ -18,7 +19,7 @@ class DeallocateRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/ObservedItem/StoreRequest.php b/app/Http/Requests/V3/ObservedItem/StoreRequest.php index 081d4b40..525e176d 100644 --- a/app/Http/Requests/V3/ObservedItem/StoreRequest.php +++ b/app/Http/Requests/V3/ObservedItem/StoreRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\V3\ObservedItem; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class StoreRequest extends FormRequest @@ -17,7 +18,7 @@ class StoreRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/Otp/GetOtpTokenRequest.php b/app/Http/Requests/V3/Otp/GetOtpTokenRequest.php index 9dae8269..cc0f3356 100644 --- a/app/Http/Requests/V3/Otp/GetOtpTokenRequest.php +++ b/app/Http/Requests/V3/Otp/GetOtpTokenRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\V3\Otp; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class GetOtpTokenRequest extends FormRequest @@ -17,7 +18,7 @@ class GetOtpTokenRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { @@ -29,7 +30,7 @@ class GetOtpTokenRequest extends FormRequest public function messages(): array { return [ - 'starts_with' => ':attribute باید با :values شروع شود.' + 'starts_with' => ':attribute باید با :values شروع شود.', ]; } } diff --git a/app/Http/Requests/V3/Permission/StoreRequest.php b/app/Http/Requests/V3/Permission/StoreRequest.php index 9a09ab36..907a6a19 100644 --- a/app/Http/Requests/V3/Permission/StoreRequest.php +++ b/app/Http/Requests/V3/Permission/StoreRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\V3\Permission; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class StoreRequest extends FormRequest @@ -17,7 +18,7 @@ class StoreRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/Permission/UpdateRequest.php b/app/Http/Requests/V3/Permission/UpdateRequest.php index e5213c11..44855e5c 100644 --- a/app/Http/Requests/V3/Permission/UpdateRequest.php +++ b/app/Http/Requests/V3/Permission/UpdateRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\V3\Permission; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class UpdateRequest extends FormRequest @@ -17,7 +18,7 @@ class UpdateRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/Profile/ChangePasswordRequest.php b/app/Http/Requests/V3/Profile/ChangePasswordRequest.php index 9e5762e0..73794322 100644 --- a/app/Http/Requests/V3/Profile/ChangePasswordRequest.php +++ b/app/Http/Requests/V3/Profile/ChangePasswordRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\V3\Profile; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class ChangePasswordRequest extends FormRequest @@ -17,7 +18,7 @@ class ChangePasswordRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/Profile/EditRequest.php b/app/Http/Requests/V3/Profile/EditRequest.php index 9b4b5d7a..7d2ae330 100644 --- a/app/Http/Requests/V3/Profile/EditRequest.php +++ b/app/Http/Requests/V3/Profile/EditRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\V3\Profile; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class EditRequest extends FormRequest @@ -17,7 +18,7 @@ class EditRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { @@ -27,7 +28,7 @@ class EditRequest extends FormRequest 'degree' => 'required', 'major' => 'required', 'mobile' => 'required|regex:/^09\d{9}$/|numeric|digits:11', - 'avatar' => 'mimes:png,jpg,jpeg|max:2048' + 'avatar' => 'mimes:png,jpg,jpeg|max:2048', ]; } } diff --git a/app/Http/Requests/V3/RoadItem/Operator/StoreRequest.php b/app/Http/Requests/V3/RoadItem/Operator/StoreRequest.php index 4b26a498..c5cbdf1c 100644 --- a/app/Http/Requests/V3/RoadItem/Operator/StoreRequest.php +++ b/app/Http/Requests/V3/RoadItem/Operator/StoreRequest.php @@ -55,13 +55,13 @@ class StoreRequest extends FormRequest $mission = Mission::query()->find($this->mission_id); $startTime = Carbon::parse($mission->start_time); - $finishTime = Carbon::parse($mission->finish_time); + $finishTime = Carbon::parse($mission->finish_time); $activityTime = Carbon::parse("{$this->activity_date} {$this->activity_time}"); if (! $activityTime->between($startTime, $finishTime, true)) { $validator->errors()->add('activity_time', 'زمان گزارش باید بین بازه مأموریت باشد.'); } - } + }, ]; } } diff --git a/app/Http/Requests/V3/RoadItem/Operator/UpdateRequest.php b/app/Http/Requests/V3/RoadItem/Operator/UpdateRequest.php index 1aeacae0..d5c455a8 100644 --- a/app/Http/Requests/V3/RoadItem/Operator/UpdateRequest.php +++ b/app/Http/Requests/V3/RoadItem/Operator/UpdateRequest.php @@ -59,13 +59,13 @@ class UpdateRequest extends FormRequest $mission = Mission::query()->find($this->mission_id); $startTime = Carbon::parse($mission->start_time); - $finishTime = Carbon::parse($mission->finish_time); + $finishTime = Carbon::parse($mission->finish_time); $activityTime = Carbon::parse("{$this->activity_date} {$this->activity_time}"); if (! $activityTime->between($startTime, $finishTime, true)) { $validator->errors()->add('activity_time', 'زمان گزارش باید بین بازه مأموریت باشد.'); } - } + }, ]; } } diff --git a/app/Http/Requests/V3/RoadMaintenanceStation/StoreRequest.php b/app/Http/Requests/V3/RoadMaintenanceStation/StoreRequest.php index b3e16bf0..37377a9c 100644 --- a/app/Http/Requests/V3/RoadMaintenanceStation/StoreRequest.php +++ b/app/Http/Requests/V3/RoadMaintenanceStation/StoreRequest.php @@ -2,16 +2,13 @@ namespace App\Http\Requests\V3\RoadMaintenanceStation; -use App\Models\RahdariPoint; -use Hekmatinasser\Verta\Facades\Verta; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; -use Illuminate\Support\Facades\Auth; class StoreRequest extends FormRequest { /** * Determine if the user is authorized to make this request. - * @return bool */ public function authorize(): bool { @@ -24,7 +21,7 @@ class StoreRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { @@ -33,7 +30,7 @@ class StoreRequest extends FormRequest 'city_id' => 'required|exists:cities,id', 'name' => 'required|string|max:255', 'status' => 'required|in:0,1', - 'type' =>'required|in:1,2,3', + 'type' => 'required|in:1,2,3', 'team_num' => 'numeric', 'staff_num' => 'numeric', 'phone' => 'string|max:50', diff --git a/app/Http/Requests/V3/RoadMaintenanceStation/UpdateRequest.php b/app/Http/Requests/V3/RoadMaintenanceStation/UpdateRequest.php index 56b10987..9996908e 100644 --- a/app/Http/Requests/V3/RoadMaintenanceStation/UpdateRequest.php +++ b/app/Http/Requests/V3/RoadMaintenanceStation/UpdateRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\V3\RoadMaintenanceStation; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class UpdateRequest extends FormRequest @@ -17,7 +18,7 @@ class UpdateRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/RoadObservation/ModifyRegisterationRequest.php b/app/Http/Requests/V3/RoadObservation/ModifyRegisterationRequest.php index 288ea697..d1ed0a88 100644 --- a/app/Http/Requests/V3/RoadObservation/ModifyRegisterationRequest.php +++ b/app/Http/Requests/V3/RoadObservation/ModifyRegisterationRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\V3\RoadObservation; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class ModifyRegisterationRequest extends FormRequest @@ -17,7 +18,7 @@ class ModifyRegisterationRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/RoadObservation/ReferRequest.php b/app/Http/Requests/V3/RoadObservation/ReferRequest.php index 33e2bc83..a680a327 100644 --- a/app/Http/Requests/V3/RoadObservation/ReferRequest.php +++ b/app/Http/Requests/V3/RoadObservation/ReferRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\V3\RoadObservation; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class ReferRequest extends FormRequest @@ -17,7 +18,7 @@ class ReferRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/RoadObservation/RegisterRequest.php b/app/Http/Requests/V3/RoadObservation/RegisterRequest.php index c3f59834..bd146b34 100644 --- a/app/Http/Requests/V3/RoadObservation/RegisterRequest.php +++ b/app/Http/Requests/V3/RoadObservation/RegisterRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\V3\RoadObservation; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class RegisterRequest extends FormRequest @@ -17,7 +18,7 @@ class RegisterRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/RoadObservation/RestoreRequest.php b/app/Http/Requests/V3/RoadObservation/RestoreRequest.php index 1c02a650..fd15e7d1 100644 --- a/app/Http/Requests/V3/RoadObservation/RestoreRequest.php +++ b/app/Http/Requests/V3/RoadObservation/RestoreRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\V3\RoadObservation; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class RestoreRequest extends FormRequest @@ -17,7 +18,7 @@ class RestoreRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/RoadObservation/VerifyBySupervisorRequest.php b/app/Http/Requests/V3/RoadObservation/VerifyBySupervisorRequest.php index db1450cd..4314db71 100644 --- a/app/Http/Requests/V3/RoadObservation/VerifyBySupervisorRequest.php +++ b/app/Http/Requests/V3/RoadObservation/VerifyBySupervisorRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\V3\RoadObservation; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; use Illuminate\Support\Facades\Gate; @@ -9,22 +10,22 @@ class VerifyBySupervisorRequest extends FormRequest { /** * Determine if the user is authorized to make this request. - * @return bool */ public function authorize(): bool { - return Gate::allows('gate-supervise-road-observed',$this->roadObserved); + return Gate::allows('gate-supervise-road-observed', $this->roadObserved); } /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array - {return [ - 'verify' => ['required', 'in:1,2'], - 'description' => ['string'], - ]; + { + return [ + 'verify' => ['required', 'in:1,2'], + 'description' => ['string'], + ]; } } diff --git a/app/Http/Requests/V3/RoadPatrol/DeleteRequest.php b/app/Http/Requests/V3/RoadPatrol/DeleteRequest.php index 128c020f..9678ca32 100644 --- a/app/Http/Requests/V3/RoadPatrol/DeleteRequest.php +++ b/app/Http/Requests/V3/RoadPatrol/DeleteRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\V3\RoadPatrol; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class DeleteRequest extends FormRequest @@ -17,12 +18,12 @@ class DeleteRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { return [ - 'type' => 'required|in:1,2' // {1 = > partial , 2 => complete} + 'type' => 'required|in:1,2', // {1 = > partial , 2 => complete} ]; } } diff --git a/app/Http/Requests/V3/SafetyAndPrivacy/FinishRequest.php b/app/Http/Requests/V3/SafetyAndPrivacy/FinishRequest.php index a8cb30bc..b90434bf 100644 --- a/app/Http/Requests/V3/SafetyAndPrivacy/FinishRequest.php +++ b/app/Http/Requests/V3/SafetyAndPrivacy/FinishRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\V3\SafetyAndPrivacy; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class FinishRequest extends FormRequest @@ -17,7 +18,7 @@ class FinishRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/SafetyAndPrivacy/FirstStepStoreRequest.php b/app/Http/Requests/V3/SafetyAndPrivacy/FirstStepStoreRequest.php index b1c0f2af..c30ebfc0 100644 --- a/app/Http/Requests/V3/SafetyAndPrivacy/FirstStepStoreRequest.php +++ b/app/Http/Requests/V3/SafetyAndPrivacy/FirstStepStoreRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\V3\SafetyAndPrivacy; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class FirstStepStoreRequest extends FormRequest @@ -17,7 +18,7 @@ class FirstStepStoreRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/SafetyAndPrivacy/RejectRequest.php b/app/Http/Requests/V3/SafetyAndPrivacy/RejectRequest.php index 7ddc7700..6e6e2b22 100644 --- a/app/Http/Requests/V3/SafetyAndPrivacy/RejectRequest.php +++ b/app/Http/Requests/V3/SafetyAndPrivacy/RejectRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\V3\SafetyAndPrivacy; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class RejectRequest extends FormRequest @@ -17,7 +18,7 @@ class RejectRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/SafetyAndPrivacy/SecondStepStoreRequest.php b/app/Http/Requests/V3/SafetyAndPrivacy/SecondStepStoreRequest.php index dc88a0b6..b4b844ec 100644 --- a/app/Http/Requests/V3/SafetyAndPrivacy/SecondStepStoreRequest.php +++ b/app/Http/Requests/V3/SafetyAndPrivacy/SecondStepStoreRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\V3\SafetyAndPrivacy; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class SecondStepStoreRequest extends FormRequest @@ -17,7 +18,7 @@ class SecondStepStoreRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/SafetyAndPrivacy/ThirdStepStoreRequest.php b/app/Http/Requests/V3/SafetyAndPrivacy/ThirdStepStoreRequest.php index 9cab2e23..ded411a5 100644 --- a/app/Http/Requests/V3/SafetyAndPrivacy/ThirdStepStoreRequest.php +++ b/app/Http/Requests/V3/SafetyAndPrivacy/ThirdStepStoreRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\V3\SafetyAndPrivacy; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class ThirdStepStoreRequest extends FormRequest @@ -17,7 +18,7 @@ class ThirdStepStoreRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/SafetyAndPrivacy/UpdateRequest.php b/app/Http/Requests/V3/SafetyAndPrivacy/UpdateRequest.php index c0dab333..30191c97 100644 --- a/app/Http/Requests/V3/SafetyAndPrivacy/UpdateRequest.php +++ b/app/Http/Requests/V3/SafetyAndPrivacy/UpdateRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\V3\SafetyAndPrivacy; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class UpdateRequest extends FormRequest @@ -17,7 +18,7 @@ class UpdateRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Listeners/V3/Dashboard/Harim/ConfirmGuaranteeLetterNeedListener.php b/app/Listeners/V3/Dashboard/Harim/ConfirmGuaranteeLetterNeedListener.php index 37ba0b85..b121fb0f 100644 --- a/app/Listeners/V3/Dashboard/Harim/ConfirmGuaranteeLetterNeedListener.php +++ b/app/Listeners/V3/Dashboard/Harim/ConfirmGuaranteeLetterNeedListener.php @@ -3,9 +3,9 @@ namespace App\Listeners\V3\Dashboard\Harim; use App\Events\V3\Dashboard\Harim\ConfirmGuaranteeLetterNeedEvent; +use App\Services\PanjarehVahed\SendAccessRoadStatusService; +use Exception; use Illuminate\Contracts\Queue\ShouldQueue; -use Illuminate\Http\Client\RequestException; -use Illuminate\Support\Facades\Http; class ConfirmGuaranteeLetterNeedListener implements ShouldQueue { @@ -16,31 +16,31 @@ class ConfirmGuaranteeLetterNeedListener implements ShouldQueue */ public ?string $queue = 'harim'; - protected string $url; - protected string $password; - protected string $username; - - public function __construct() - { - $this->url = config('harim_web_services.Guarantee_Letter_Need.url'); - $this->username = config('harim_web_services.Guarantee_Letter_Need.username'); - $this->password = config('harim_web_services.Guarantee_Letter_Need.password'); - } + public function __construct(){} /** - * @throws RequestException + * @throws Exception */ - public function handle(ConfirmGuaranteeLetterNeedEvent $event): void + public function handle(ConfirmGuaranteeLetterNeedEvent $event, SendAccessRoadStatusService $sendAccessRoadStatusService): void { - Http::post($this->url, - array( - '' => $event->harim->id, - '' => $event->harim->id, - '' => $event->harim->id, - '' => $event->harim->id, - '' => $event->harim->id, - '' => $event->harim->id, - '' => $event->harim->id, - ))->throw(); + + $arrayData = json_decode($event->harim->data, true); + + $sendAccessRoadStatusService->makeInputParameters([ + 'data' => [ + 'actionId' => $arrayData['actionId'], + 'ruleId' => $arrayData['ruleId'], + 'activityId' => $arrayData['activityId'], + 'requestId' => $arrayData['requestId'], + 'taskId' => $arrayData['taskId'], + 'code' => $event->harim->id, + 'resultStatus' => 1, + 'Description' => $event->harim->latestDescription(), + ], + + 'token' => $arrayData['token'], + ]); + + $sendAccessRoadStatusService->run(); } } diff --git a/app/Listeners/V3/Dashboard/Harim/ConfirmNoRoadAccessNeedListener.php b/app/Listeners/V3/Dashboard/Harim/ConfirmNoRoadAccessNeedListener.php index 5b03bdeb..7c779d46 100644 --- a/app/Listeners/V3/Dashboard/Harim/ConfirmNoRoadAccessNeedListener.php +++ b/app/Listeners/V3/Dashboard/Harim/ConfirmNoRoadAccessNeedListener.php @@ -3,9 +3,9 @@ namespace App\Listeners\V3\Dashboard\Harim; use App\Events\V3\Dashboard\Harim\ConfirmNoRoadAccessNeedEvent; +use App\Services\PanjarehVahed\SendAccessRoadStatusService; +use Exception; use Illuminate\Contracts\Queue\ShouldQueue; -use Illuminate\Http\Client\RequestException; -use Illuminate\Support\Facades\Http; class ConfirmNoRoadAccessNeedListener implements ShouldQueue { @@ -16,31 +16,31 @@ class ConfirmNoRoadAccessNeedListener implements ShouldQueue */ public ?string $queue = 'harim'; - protected string $url; - protected string $password; - protected string $username; - - public function __construct() - { - $this->url = config('harim_web_services.No_Need_Access.url'); - $this->username = config('harim_web_services.No_Need_Access.username'); - $this->password = config('harim_web_services.No_Need_Access.password'); - } + public function __construct(){} /** - * @throws RequestException + * @throws Exception */ - public function handle(ConfirmNoRoadAccessNeedEvent $event): void + public function handle(ConfirmNoRoadAccessNeedEvent $event, SendAccessRoadStatusService $sendAccessRoadStatusService): void { - Http::post($this->url, - array( - '' => $event->harim->id, - '' => $event->harim->id, - '' => $event->harim->id, - '' => $event->harim->id, - '' => $event->harim->id, - '' => $event->harim->id, - '' => $event->harim->id, - ))->throw(); + + $arrayData = json_decode($event->harim->data, true); + + $sendAccessRoadStatusService->makeInputParameters([ + 'data' => [ + 'actionId' => $arrayData['actionId'], + 'ruleId' => $arrayData['ruleId'], + 'activityId' => $arrayData['activityId'], + 'requestId' => $arrayData['requestId'], + 'taskId' => $arrayData['taskId'], + 'code' => $event->harim->id, + 'resultStatus' => 1, + 'Description' => $event->harim->last_description, + ], + + 'token' => $arrayData['token'], + ]); + + $sendAccessRoadStatusService->run(); } } diff --git a/app/Listeners/V3/Dashboard/Harim/ConfirmRoadAccessEditNeedListener.php b/app/Listeners/V3/Dashboard/Harim/ConfirmRoadAccessEditNeedListener.php index 431f52cf..ad5903ab 100644 --- a/app/Listeners/V3/Dashboard/Harim/ConfirmRoadAccessEditNeedListener.php +++ b/app/Listeners/V3/Dashboard/Harim/ConfirmRoadAccessEditNeedListener.php @@ -3,9 +3,9 @@ namespace App\Listeners\V3\Dashboard\Harim; use App\Events\V3\Dashboard\Harim\ConfirmRoadAccessEditNeedEvent; +use App\Services\PanjarehVahed\SendAccessRoadStatusService; +use Exception; use Illuminate\Contracts\Queue\ShouldQueue; -use Illuminate\Http\Client\RequestException; -use Illuminate\Support\Facades\Http; class ConfirmRoadAccessEditNeedListener implements ShouldQueue { @@ -16,31 +16,31 @@ class ConfirmRoadAccessEditNeedListener implements ShouldQueue */ public ?string $queue = 'harim'; - protected string $url; - protected string $password; - protected string $username; - - public function __construct() - { - $this->url = config('harim_web_services.Edit_Need_Access.url'); - $this->username = config('harim_web_services.Edit_Need_Access.username'); - $this->password = config('harim_web_services.Edit_Need_Access.password'); - } + public function __construct(){} /** - * @throws RequestException + * @throws Exception */ - public function handle(ConfirmRoadAccessEditNeedEvent $event): void + public function handle(ConfirmRoadAccessEditNeedEvent $event, SendAccessRoadStatusService $sendAccessRoadStatusService): void { - Http::post($this->url, - array( - '' => $event->harim->id, - '' => $event->harim->id, - '' => $event->harim->id, - '' => $event->harim->id, - '' => $event->harim->id, - '' => $event->harim->id, - '' => $event->harim->id, - ))->throw(); + + $arrayData = json_decode($event->harim->data, true); + + $sendAccessRoadStatusService->makeInputParameters([ + 'data' => [ + 'actionId' => $arrayData['actionId'], + 'ruleId' => $arrayData['ruleId'], + 'activityId' => $arrayData['activityId'], + 'requestId' => $arrayData['requestId'], + 'taskId' => $arrayData['taskId'], + 'code' => $event->harim->id, + 'resultStatus' => 1, + 'Description' => $event->harim->last_description, + ], + + 'token' => $arrayData['token'], + ]); + + $sendAccessRoadStatusService->run(); } } diff --git a/app/Listeners/V3/Dashboard/Harim/ConfirmRoadAccessNeedListener.php b/app/Listeners/V3/Dashboard/Harim/ConfirmRoadAccessNeedListener.php index 3167bea6..fb8e1cc9 100644 --- a/app/Listeners/V3/Dashboard/Harim/ConfirmRoadAccessNeedListener.php +++ b/app/Listeners/V3/Dashboard/Harim/ConfirmRoadAccessNeedListener.php @@ -3,9 +3,10 @@ namespace App\Listeners\V3\Dashboard\Harim; use App\Events\V3\Dashboard\Harim\ConfirmRoadAccessNeedEvent; +use App\Models\Harim; +use App\Services\PanjarehVahed\SendAccessRoadStatusService; +use Exception; use Illuminate\Contracts\Queue\ShouldQueue; -use Illuminate\Http\Client\RequestException; -use Illuminate\Support\Facades\Http; class ConfirmRoadAccessNeedListener implements ShouldQueue { @@ -16,33 +17,32 @@ class ConfirmRoadAccessNeedListener implements ShouldQueue */ public ?string $queue = 'harim'; - protected string $url; - protected string $password; - protected string $username; - - public function __construct() - { - $this->url = config('harim_web_services.Need_Access.url'); - $this->username = config('harim_web_services.Need_Access.username'); - $this->password = config('harim_web_services.Need_Access.password'); - } + public function __construct(){} /** * Handle the event. - * @throws RequestException + * @throws Exception */ - public function handle(ConfirmRoadAccessNeedEvent $event): void + public function handle(ConfirmRoadAccessNeedEvent $event, SendAccessRoadStatusService $sendAccessRoadStatusService): void { - Http::post($this->url, - array( - '' => $event->harim->id, - '' => $event->harim->id, - '' => $event->harim->id, - '' => $event->harim->id, - '' => $event->harim->id, - '' => $event->harim->id, - '' => $event->harim->id, - ))->throw(); + $arrayData = json_decode($event->harim->data, true); + + $sendAccessRoadStatusService->makeInputParameters([ + 'data' => [ + 'actionId' => $arrayData['actionId'], + 'ruleId' => $arrayData['ruleId'], + 'activityId' => $arrayData['activityId'], + 'requestId' => $arrayData['requestId'], + 'taskId' => $arrayData['taskId'], + 'code' => $event->harim->id, + 'resultStatus' => 1, + 'Description' => $event->harim->last_description, + ], + + 'token' => $arrayData['token'], + ]); + + $sendAccessRoadStatusService->run(); } } diff --git a/app/Listeners/V3/Dashboard/Harim/PaymentExecutedListener.php b/app/Listeners/V3/Dashboard/Harim/PaymentExecutedListener.php new file mode 100644 index 00000000..e78975d9 --- /dev/null +++ b/app/Listeners/V3/Dashboard/Harim/PaymentExecutedListener.php @@ -0,0 +1,47 @@ +harim->data, true); + + $sendPaymentInfoService->makeInputParameters([ + 'data' => [ + 'actionId' => $arrayData['actionId'], + 'ruleId' => $arrayData['ruleId'], + 'activityId' => $arrayData['activityId'], + 'requestId' => $arrayData['requestId'], + 'taskId' => $arrayData['taskId'], + 'code' => $event->harim->id, + 'warrantStatus' => $event->harim->need_payment , + 'amountPaid' => $arrayData['amountPaid'], + ], + + 'token' => $arrayData['token'], + ]); + + $sendPaymentInfoService->run(); + } +} diff --git a/app/Listeners/V3/Dashboard/Harim/RejectRequestListener.php b/app/Listeners/V3/Dashboard/Harim/RejectRequestListener.php index 008c66c1..6c1a148a 100644 --- a/app/Listeners/V3/Dashboard/Harim/RejectRequestListener.php +++ b/app/Listeners/V3/Dashboard/Harim/RejectRequestListener.php @@ -3,9 +3,9 @@ namespace App\Listeners\V3\Dashboard\Harim; use App\Events\V3\Dashboard\Harim\RejectRequestEvent; +use App\Services\PanjarehVahed\SendAccessRoadStatusService; +use Exception; use Illuminate\Contracts\Queue\ShouldQueue; -use Illuminate\Http\Client\RequestException; -use Illuminate\Support\Facades\Http; class RejectRequestListener implements ShouldQueue { @@ -16,31 +16,31 @@ class RejectRequestListener implements ShouldQueue */ public ?string $queue = 'harim'; - protected string $url; - protected string $password; - protected string $username; - - public function __construct() - { - $this->url = config('harim_web_services.Reject.url'); - $this->username = config('harim_web_services.Reject.username'); - $this->password = config('harim_web_services.Reject.password'); - } + public function __construct(){} /** - * @throws RequestException + * @throws Exception */ - public function handle(RejectRequestEvent $event): void + public function handle(RejectRequestEvent $event, SendAccessRoadStatusService $sendAccessRoadStatusService): void { - Http::post($this->url, - array( - '' => $event->harim->id, - '' => $event->harim->id, - '' => $event->harim->id, - '' => $event->harim->id, - '' => $event->harim->id, - '' => $event->harim->id, - '' => $event->harim->id, - ))->throw(); + + $arrayData = json_decode($event->harim->data, true); + + $sendAccessRoadStatusService->makeInputParameters([ + 'data' => [ + 'actionId' => $arrayData['actionId'], + 'ruleId' => $arrayData['ruleId'], + 'activityId' => $arrayData['activityId'], + 'requestId' => $arrayData['requestId'], + 'taskId' => $arrayData['taskId'], + 'code' => $event->harim->id, + 'resultStatus' => 3, + 'Description' => $event->harim->last_description, + ], + + 'token' => $arrayData['token'], + ]); + + $sendAccessRoadStatusService->run(); } } diff --git a/app/Listeners/V3/Dashboard/Mission/SendDataToFMSListener.php b/app/Listeners/V3/Dashboard/Mission/SendDataToFMSListener.php index df8d92f4..90f2671b 100644 --- a/app/Listeners/V3/Dashboard/Mission/SendDataToFMSListener.php +++ b/app/Listeners/V3/Dashboard/Mission/SendDataToFMSListener.php @@ -31,10 +31,10 @@ class SendDataToFMSListener implements ShouldQueue $this->getErrorRateService->setInputParameters([ 'username' => config('fms_web_services.Error_Rate.username'), 'password' => config('fms_web_services.Error_Rate.password'), - 'missionArea' => $mission->area['coordinates'], + 'missionArea' => $mission->getMissionAreaForFms(), 'missionStartDT' => $mission->start_time->format('Y-m-d\TH:i:s'), 'missionEndDT' => $mission->finish_time->format('Y-m-d\TH:i:s'), - 'machineCode' => $mission->machines()->first()->value('machine_code'), + 'machineCode' => $mission->machine_code, 'areaType' => $mission->area['type'] === 'polygon' ? 1 : 2, ]); diff --git a/app/Models/City.php b/app/Models/City.php index 43dde894..614cc699 100644 --- a/app/Models/City.php +++ b/app/Models/City.php @@ -86,23 +86,18 @@ class City extends Model { try { $city = City::query() - ->whereRaw(" - ST_Contains( - geometry, - ST_GeomFromText('POINT($lng $lat)', 4326) - ) - ") - ->firstOrFail(); - } - catch (ModelNotFoundException $exception) { + ->whereRaw("ST_Contains( + geometry, + ST_GeomFromText('POINT($lng $lat)', 4326))" + ) + ->firstOrFail(['id', 'name_fa', 'province_id']); + } catch (ModelNotFoundException $exception) { $city = City::query() - ->orderByRaw(" - ST_Distance( - geometry, - ST_GeomFromText('POINT($lng $lat)', 4326) - ) ASC - ") - ->first(); + ->orderByRaw("ST_Distance( + geometry, + ST_GeomFromText('POINT($lng $lat)', 4326)) ASC" + ) + ->first(['id', 'name_fa', 'province_id']); } return $city; diff --git a/app/Models/Harim.php b/app/Models/Harim.php index 96bc4cc2..aa5a1e41 100644 --- a/app/Models/Harim.php +++ b/app/Models/Harim.php @@ -6,6 +6,8 @@ use Illuminate\Database\Eloquent\Casts\Attribute; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\HasMany; +use Illuminate\Support\Facades\DB; +use Throwable; class Harim extends Model { @@ -17,7 +19,72 @@ class Harim extends Model return $this->hasMany(HarimHistory::class); } - protected function polygon(): Attribute + protected function primaryArea(): Attribute + { + return Attribute::make( + get: fn($value) => json_decode($value) + ); + } + + /** + * @throws Throwable + */ + public function updateStateWithHistory(int $action, string $description , array $data): void + { + DB::transaction(function () use ($action, $description, $data) { + $this->histories()->create([ + 'expert_id' => auth()->user()->id, + 'previous_state_id' => $this->state_id, + 'previous_state_name' => $this->state_name, + 'expert_description' => $description, + 'action_id' => $action, + 'action_name' => \App\Enums\HarimAction::name($action), + ]); + + $this->update($data); + }); + } + + public function panjarehVahedHistories(): HasMany + { + return $this->hasMany(PanjarehVahedHistory::class); + } + + protected function data(): Attribute + { + return Attribute::make( + set: function ($value) { + $iv = config('harim_web_services.Harim_Info.iv'); + $keyString = config('harim_web_services.Harim_Info.key'); + $key = hash('sha256',$keyString, true); + $decrypted = openssl_decrypt($value,'aes-256-cbc',$key,false, $iv); + return json_decode($decrypted); + }, + ); + } + + public function latestDescription() + { + return $this->hasMany(HarimHistory::class) + ->latestOfMany() + ->value('expert_description'); + } + + protected function forbiddenArea(): Attribute + { + return Attribute::make( + get: fn($value) => json_decode($value) + ); + } + + protected function finalArea(): Attribute + { + return Attribute::make( + get: fn($value) => json_decode($value) + ); + } + + protected function finalPlan(): Attribute { return Attribute::make( get: fn($value) => json_decode($value) diff --git a/app/Models/Mission.php b/app/Models/Mission.php index 9d85a9bc..fbce2451 100644 --- a/app/Models/Mission.php +++ b/app/Models/Mission.php @@ -5,6 +5,7 @@ namespace App\Models; use Illuminate\Database\Eloquent\Casts\Attribute; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\HasOne; use Illuminate\Database\Eloquent\Relations\MorphToMany; @@ -84,4 +85,20 @@ class Mission extends Model 'missionable_id' ); } + + public function machine(): BelongsTo + { + return $this->belongsTo(CMMSMachine::class, 'machine_id'); + } + + public function getMissionAreaForFms(): array + { + return collect($this->area['coordinates']) + ->map(fn ($point) => [ + 'Latitude' => $point[1], // lat + 'Longitude' => $point[0], // lng + ]) + ->values() + ->toArray(); + } } diff --git a/app/Models/MissionViolation.php b/app/Models/MissionViolation.php new file mode 100644 index 00000000..b1ff3be1 --- /dev/null +++ b/app/Models/MissionViolation.php @@ -0,0 +1,17 @@ +belongsTo(Mission::class); + } +} diff --git a/app/Models/PanjarehVahedHistory.php b/app/Models/PanjarehVahedHistory.php new file mode 100644 index 00000000..b47736cf --- /dev/null +++ b/app/Models/PanjarehVahedHistory.php @@ -0,0 +1,13 @@ + [ SendDataToFMSListener::class - ] + ], + PaymentExecutedEvent::class => [ + PaymentExecutedListener::class + ], ]; /** diff --git a/app/Services/CMMS/DailyMovingMachinesService.php b/app/Services/CMMS/DailyMovingMachinesService.php new file mode 100644 index 00000000..3f891221 --- /dev/null +++ b/app/Services/CMMS/DailyMovingMachinesService.php @@ -0,0 +1,66 @@ +url = config('cmms_web_services.CHECK_ACTIVITY.url'); + $this->password = config('cmms_web_services.CHECK_ACTIVITY.password'); + $this->username = config('cmms_web_services.CHECK_ACTIVITY.username'); + $this->channelName = 'daily_moving_machine'; + } + + /** + * @throws Exception + */ + public function run(): array + { + try { + return $this->sendRequest(); + } catch (Exception $e) { + Log::channel($this->channelName) + ->error(get_class($this), + [ + 'message' => $e->getMessage(), + ] + ); + + throw $e; + } + } + + public function sendRequest(): array + { + $inputData = $this->makeInputParameters(); + + return Http::withBody($inputData) + ->throw() + ->withoutVerifying() + ->post($this->url) + ->json(); + } + + private function makeInputParameters(): string + { + $day = Carbon::yesterday()->toDateString(); + + return json_encode([ + "username" => $this->username, + "password" => $this->password, + "day" => $day, + "minMileage" => 10, + ]); + } +} diff --git a/app/Services/Cartables/Mission/DailyMoveMachineService.php b/app/Services/Cartables/Mission/DailyMoveMachineService.php new file mode 100644 index 00000000..c074fba6 --- /dev/null +++ b/app/Services/Cartables/Mission/DailyMoveMachineService.php @@ -0,0 +1,21 @@ +user(); - $query = Mission::query()->with('roadObserved:id'); + $query = Mission::query(); if ($user->hasPermissionTo('manage-request-portal-city')) { $query->where('edare_shahri_id', '=', $user->edarate_shahri_id); diff --git a/app/Services/Cartables/Mission/TransportationUnitService.php b/app/Services/Cartables/Mission/TransportationUnitService.php index e0dd71b4..be19780d 100644 --- a/app/Services/Cartables/Mission/TransportationUnitService.php +++ b/app/Services/Cartables/Mission/TransportationUnitService.php @@ -13,7 +13,7 @@ class TransportationUnitService public function dataTable(Request $request) { $query = Mission::query() - ->where('state_id', '=', MissionStates::REQUEST_CREATED->value) + ->whereIn('state_id', [MissionStates::REQUEST_CREATED->value, MissionStates::PENDING_CONFIRMATION->value]) ->where('edare_shahri_id', '=', Auth::user()->edarate_shahri_id); return DataTableFacade::run( diff --git a/app/Services/Cartables/UserManagement/UserManagementService.php b/app/Services/Cartables/UserManagement/UserManagementService.php new file mode 100644 index 00000000..dbd0f56f --- /dev/null +++ b/app/Services/Cartables/UserManagement/UserManagementService.php @@ -0,0 +1,28 @@ +hasPermissionTo('full-user-management') ? + User::query() : + User::query()->where('province_id', '=', $user->province_id); + + return DataTableFacade::run( + $query, + $request, + allowedFilters: ['*'], + allowedSortings: ['*'], + allowedSelects: ['id', 'username', 'province_id', 'province_fa', 'city_id', 'city_fa', 'first_name', 'last_name', 'mobile', 'position', 'major', 'setad_id', 'last_login', 'edarate_shahri_id', 'edarate_shahri_name', 'national_code', 'name', 'enabled', 'email', + 'edarate_ostani_id', 'edarate_ostani_name', 'degree', 'confirmed', 'checked', 'updated_at', 'photo', 'created_at'], + ); + } +} diff --git a/app/Services/PanjarehVahed/SendAccessRoadStatusService.php b/app/Services/PanjarehVahed/SendAccessRoadStatusService.php new file mode 100644 index 00000000..0cdd351e --- /dev/null +++ b/app/Services/PanjarehVahed/SendAccessRoadStatusService.php @@ -0,0 +1,58 @@ +url = config('harim_web_services.Reject.url'); + $this->channelName = ''; + } + + /** + * @throws Exception + */ + public function run(): array + { + try { + return $this->sendRequest(); + } + catch (Exception $e) { + Log::channel($this->channelName) + ->error(get_class($this), + [ + 'message' => $e->getMessage(), + ] + ); + + throw $e; + } + } + + private function sendRequest(): array + { + return Http::withHeaders(['Content-Type' => 'application/json']) + ->withBody($this->inputParameters) + ->throw() + ->withoutVerifying() + ->post($this->url) + ->json(); + } + + public function makeInputParameters($input): void + { + $key = config('harim_web_services.Harim_Info.key'); + $iv = config('harim_web_services.Harim_Info.iv'); + + $this->inputParameters = openssl_encrypt(json_encode($input), 'aes-256-cbc', $key, false, $iv); + } +} \ No newline at end of file diff --git a/app/Services/PanjarehVahed/SendPaymentInfoService.php b/app/Services/PanjarehVahed/SendPaymentInfoService.php new file mode 100644 index 00000000..2a591e2c --- /dev/null +++ b/app/Services/PanjarehVahed/SendPaymentInfoService.php @@ -0,0 +1,58 @@ +url = config('harim_web_services.Reject.url'); + $this->channelName = ''; + } + + /** + * @throws Exception + */ + public function run(): array + { + try { + return $this->sendRequest(); + } + catch (Exception $e) { + Log::channel($this->channelName) + ->error(get_class($this), + [ + 'message' => $e->getMessage(), + ] + ); + + throw $e; + } + } + + private function sendRequest(): array + { + return Http::withHeaders(['Content-Type' => 'application/json']) + ->withBody($this->inputParameters) + ->throw() + ->withoutVerifying() + ->post($this->url) + ->json(); + } + + public function makeInputParameters($input): void + { + $key = config('harim_web_services.Harim_Info.key'); + $iv = config('harim_web_services.Harim_Info.iv'); + + $this->inputParameters = openssl_encrypt(json_encode($input), 'aes-256-cbc', $key, false, $iv); + } +} \ No newline at end of file diff --git a/config/cmms_web_services.php b/config/cmms_web_services.php index ab122229..2541aa46 100644 --- a/config/cmms_web_services.php +++ b/config/cmms_web_services.php @@ -6,4 +6,10 @@ return [ 'password' => env('CMMS_MACHINE_INFO_PASSWORD'), 'ViewName' => env('CMMS_MACHINE_INFO_VIEW_NAME'), ], + + 'CHECK_ACTIVITY' => [ + 'url' => env('CHECKE_LIST_MACHINES_ACTIVITY_URL'), + 'password' => env('CHECKE_LIST_MACHINES_ACTIVITY_PASSWORD'), + 'username' => env('CHECKE_LIST_MACHINES_ACTIVITY_USERNAME'), + ], ]; \ No newline at end of file diff --git a/config/harim_web_services.php b/config/harim_web_services.php index 7104519c..dc3f4686 100644 --- a/config/harim_web_services.php +++ b/config/harim_web_services.php @@ -30,4 +30,13 @@ return [ 'password' => env('HARIM_NEED_GUARANTEE_LETTER_PASSWORD'), 'username' => env('HARIM_NEED_GUARANTEE_LETTER_USERNAME'), ], + + 'Harim_Info' => [ + 'key' => env('HARIM_ENCRYPTION_KEY'), + 'iv' => env('HARIM_ENCRYPTION_IV'), + ], + + 'Harim_Payment' => [ + 'fee' => env('HARIM_AMOUNT_FEE'), + ] ]; diff --git a/config/logging.php b/config/logging.php index 972f7be3..14edc387 100644 --- a/config/logging.php +++ b/config/logging.php @@ -147,5 +147,10 @@ return [ 'path' => storage_path('logs/telescope.log'), 'level' => 'info', ], + 'daily_moving_machine' => [ + 'driver' => 'single', + 'path' => storage_path('logs/cmms/daily_moving_machine_service.log'), + 'level' => 'info', + ], ], ]; diff --git a/database/factories/AssignmentFailsFactory.php b/database/factories/AssignmentFailsFactory.php new file mode 100644 index 00000000..27e8e5f4 --- /dev/null +++ b/database/factories/AssignmentFailsFactory.php @@ -0,0 +1,18 @@ + + */ +class PanjarehVahedHistoryFactory extends Factory +{ + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + // + ]; + } +} diff --git a/database/migrations/2025_10_15_085149_add_column_to_harims_table.php b/database/migrations/2025_10_15_085149_add_column_to_harims_table.php new file mode 100644 index 00000000..175ff217 --- /dev/null +++ b/database/migrations/2025_10_15_085149_add_column_to_harims_table.php @@ -0,0 +1,28 @@ +longText('data')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('harims', function (Blueprint $table) { + $table->dropColumn('data'); + }); + } +}; diff --git a/database/migrations/2025_10_19_152736_add_status_to_cmms_machines_table.php b/database/migrations/2025_10_19_152736_add_status_to_cmms_machines_table.php new file mode 100644 index 00000000..60dbf9f3 --- /dev/null +++ b/database/migrations/2025_10_19_152736_add_status_to_cmms_machines_table.php @@ -0,0 +1,28 @@ +integer('status')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('cmms_machines', function (Blueprint $table) { + $table->dropColumn('status'); + }); + } +}; diff --git a/database/migrations/2025_11_04_104903_create_panjareh_vahed_histories_table.php b/database/migrations/2025_11_04_104903_create_panjareh_vahed_histories_table.php new file mode 100644 index 00000000..904d2a59 --- /dev/null +++ b/database/migrations/2025_11_04_104903_create_panjareh_vahed_histories_table.php @@ -0,0 +1,30 @@ +id(); + $table->foreignId('harim_id')->constrained('harims'); + $table->longText('data'); + $table->tinyInteger('action')->default(0); // 0 => receive, 1 => send + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('panjareh_vahed_histories'); + } +}; diff --git a/database/migrations/2025_11_08_093438_add_trafic_position_road_type_to_harims_table.php b/database/migrations/2025_11_08_093438_add_trafic_position_road_type_to_harims_table.php new file mode 100644 index 00000000..52d42ac3 --- /dev/null +++ b/database/migrations/2025_11_08_093438_add_trafic_position_road_type_to_harims_table.php @@ -0,0 +1,32 @@ +decimal('traffic',total: 3,places: 1)->nullable(); + $table->decimal('road_type', total: 3,places: 1)->nullable(); + $table->decimal('position', total: 3,places: 1)->nullable(); + $table->decimal('final_area_space')->nullable(); + $table->decimal('forbidden_area_space')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('harims', function (Blueprint $table) { + $table->dropColumn('traffic', 'road_type', 'position'); + }); + } +}; diff --git a/database/migrations/2025_11_12_155435_create_mission_violations_table.php b/database/migrations/2025_11_12_155435_create_mission_violations_table.php new file mode 100644 index 00000000..f54d33d0 --- /dev/null +++ b/database/migrations/2025_11_12_155435_create_mission_violations_table.php @@ -0,0 +1,34 @@ +id(); + $table->foreignId('mission_id')->nullable()->constrained('missions'); + $table->string('machine_code')->nullable(); + $table->date('request_date')->nullable(); + $table->tinyInteger('type')->nullable(); + $table->bigInteger('mileage')->nullable(); + $table->dateTime('exit_time')->nullable(); + $table->dateTime('enter_time')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('mission_violations'); + } +}; diff --git a/database/migrations/2025_11_15_090251_add_column_to_missions_table.php b/database/migrations/2025_11_15_090251_add_column_to_missions_table.php new file mode 100644 index 00000000..986eb8ba --- /dev/null +++ b/database/migrations/2025_11_15_090251_add_column_to_missions_table.php @@ -0,0 +1,30 @@ +foreignId('machine_id')->nullable()->constrained('cmms_machines'); + $table->string('machine_code')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('missions', function (Blueprint $table) { + $table->dropForeign('missions_machine_id_foreign'); + $table->dropColumn(['machine_id', 'machine_code']); + }); + } +}; diff --git a/database/migrations/2025_11_17_142433_add_final_plan_space_to_harims_table.php b/database/migrations/2025_11_17_142433_add_final_plan_space_to_harims_table.php new file mode 100644 index 00000000..6692b847 --- /dev/null +++ b/database/migrations/2025_11_17_142433_add_final_plan_space_to_harims_table.php @@ -0,0 +1,28 @@ +decimal('final_plan_space')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('harims', function (Blueprint $table) { + $table->dropColumn('final_plan_space'); + }); + } +}; diff --git a/database/migrations/2025_11_18_153636_add_column_to_cmms_machines_table.php b/database/migrations/2025_11_18_153636_add_column_to_cmms_machines_table.php new file mode 100644 index 00000000..c6e84ec6 --- /dev/null +++ b/database/migrations/2025_11_18_153636_add_column_to_cmms_machines_table.php @@ -0,0 +1,38 @@ +unsignedTinyInteger('province_id')->nullable(); + $table->foreign('province_id')->references('id')->on('provinces'); + $table->unsignedSmallInteger('city_id')->nullable(); + $table->foreign('city_id')->references('id')->on('cities'); + $table->unsignedSmallInteger('station_id')->nullable(); + $table->foreign('station_id')->references('id')->on('rahdari_points'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('cmms_machines', function (Blueprint $table) { + $table->dropForeign('cmms_machines_province_id_foreign'); + $table->dropForeign('cmms_machines_city_id_foreign'); + $table->dropForeign('cmms_machines_station_id_foreign'); + $table->dropColumn('province_id'); + $table->dropColumn('city_id'); + $table->dropColumn('station_id'); + }); + } +}; diff --git a/database/seeders/HarimStateSeeder.php b/database/seeders/HarimStateSeeder.php index 25b3e268..d8f4a93b 100644 --- a/database/seeders/HarimStateSeeder.php +++ b/database/seeders/HarimStateSeeder.php @@ -14,23 +14,23 @@ class HarimStateSeeder extends Seeder public function run(): void { DB::table('harim_states')->insert([ - ['id' => 1, 'name' => 'بررسی ادارات شهرستان', 'created_at' => now(), 'updated_at' => now(),], - ['id' => 2, 'name' => 'بررسی توسط ادارات حریم', 'created_at' => now(), 'updated_at' => now(),], - ['id' => 3, 'name' => 'بررسی توسط معاون', 'created_at' => now(), 'updated_at' => now(),], - ['id' => 4, 'name' => 'بررسی توسط مدیر کل', 'created_at' => now(), 'updated_at' => now(),], - ['id' => 5, 'name' => 'بررسی فایل آپلود شده توسط اداره حریم', 'created_at' => now(), 'updated_at' => now(),], - ['id' => 6, 'name' => 'بررسی فایل آپلود شده توسط معاون', 'created_at' => now(), 'updated_at' => now(),], - ['id' => 7, 'name' => 'بررسی فایل آپلود شده توسط مدیر', 'created_at' => now(), 'updated_at' => now(),], - ['id' => 8, 'name' => 'ارسال ضمانت نامه توسط کاربر', 'created_at' => now(), 'updated_at' => now(),], - ['id' => 9, 'name' => 'ارسال به پنجره واحد ( نیاز به راه دسترسی)', 'created_at' => now(), 'updated_at' => now(),], - ['id' => 10, 'name' => 'امکان پذیر نمی باشد', 'created_at' => now(), 'updated_at' => now(),], - ['id' => 11, 'name' => 'ارسال به پنجره واحد (بدون نیاز به راه دسترسی)', 'created_at' => now(), 'updated_at' => now(),], - ['id' => 12, 'name' => 'بازبینی فایل بارگذاری شده', 'created_at' => now(), 'updated_at' => now(),], - ['id' => 13, 'name' => 'تائید عرصه و اعیان ارسال شده توسط اداره حریم', 'created_at' => now(), 'updated_at' => now(),], - ['id' => 14, 'name' => 'تائید عرصه و اعیان ارسال شده توسط معاون', 'created_at' => now(), 'updated_at' => now(),], - ['id' => 15, 'name' => 'تائید عرصه و اعیان ارسال شده توسط مدیر', 'created_at' => now(), 'updated_at' => now(),], - ['id' => 16, 'name' => 'مخالفت با درخواست', 'created_at' => now(), 'updated_at' => now(),], - + ['id' => 1, 'name' => 'بررسی ادارات شهرستان', 'created_at' => now(), 'updated_at' => now(),], + ['id' => 2, 'name' => 'بررسی توسط ادارات حریم','created_at' => now(), 'updated_at' => now(),], + ['id' => 3, 'name' => 'بررسی توسط معاون', 'created_at' => now(), 'updated_at' => now(),], + ['id' => 4, 'name' => 'بررسی توسط مدیر کل','created_at' => now(), 'updated_at' => now(),], + ['id' => 5, 'name' => 'بررسی راه دسترسی آپلود شده توسط اداره حریم', 'created_at' => now(), 'updated_at' => now(),], + ['id' => 6, 'name' => 'بررسی راه دسترسی آپلود شده توسط معاون', 'created_at' => now(), 'updated_at' => now(),], + ['id' => 7, 'name' => 'بررسی راه دسترسی آپلود شده توسط مدیر', 'created_at' => now(), 'updated_at' => now(),], + ['id' => 8, 'name' => 'دریافت عرصه و عیان نهایی', 'created_at' => now(), 'updated_at' => now(),], + ['id' => 9, 'name' => 'ارسال به پنجره واحد ( نیاز به راه دسترسی)', 'created_at' => now(), 'updated_at' => now(),], + ['id' => 10, 'name' => 'امکان پذیر نمی باشد', 'created_at' => now(), 'updated_at' => now(),], + ['id' => 11, 'name' => 'ارسال به پنجره واحد (بدون نیاز به راه دسترسی)', 'created_at' => now(), 'updated_at' => now(),], + ['id' => 12, 'name' => 'بازبینی راه دسترسی بارگذاری شده', 'created_at' => now(), 'updated_at' => now(),], + ['id' => 13, 'name' => 'تائید عرصه و اعیان ارسال شده توسط اداره حریم', 'created_at' => now(), 'updated_at' => now(),], + ['id' => 14, 'name' => 'تائید عرصه و اعیان ارسال شده توسط معاون', 'created_at' => now(), 'updated_at' => now(),], + ['id' => 15, 'name' => 'تائید عرصه و اعیان ارسال شده توسط مدیر', 'created_at' => now(), 'updated_at' => now(),], + ['id' => 16, 'name' => 'مخالفت با درخواست', 'created_at' => now(), 'updated_at' => now(),], + ['id' => 17, 'name' => 'اتمام فرایند', 'created_at' => now(), 'updated_at' => now(),], ]); } } diff --git a/database/seeders/PanjarehVahedHistorySeeder.php b/database/seeders/PanjarehVahedHistorySeeder.php new file mode 100644 index 00000000..3b0930a6 --- /dev/null +++ b/database/seeders/PanjarehVahedHistorySeeder.php @@ -0,0 +1,17 @@ + ':attribute در این حالت مجاز نیست.', "accepted" => ":attribute باید پذیرفته شده باشد.", "active_url" => "آدرس :attribute معتبر نیست", "after" => ":attribute باید بعد از :date باشد.", @@ -286,5 +286,7 @@ return [ 'forbidden_area' => 'محدوده ممنوعه', 'forbidden_area.type' => 'نوع محدوده محدوده', 'forbidden_area.coordinates' => 'مختصات محدوده ممنوعه', + 'edarate_ostani_id' => 'اداره استانی', + 'edarate_shahri_id' => ' اداره شهری' ], ]; diff --git a/routes/v3.php b/routes/v3.php index 338a4cc4..01351520 100644 --- a/routes/v3.php +++ b/routes/v3.php @@ -17,10 +17,12 @@ use App\Http\Controllers\V3\Dashboard\Mission\ControlUnitController; use App\Http\Controllers\V3\Dashboard\Mission\DetailController; use App\Http\Controllers\V3\Dashboard\Mission\RequestPortalController; use App\Http\Controllers\V3\Dashboard\Mission\TransportationUnitController; +use App\Http\Controllers\V3\Dashboard\Mission\ViolationManagementController; use App\Http\Controllers\V3\Dashboard\ObservedItemController; use App\Http\Controllers\V3\Dashboard\OtpManagementController; use App\Http\Controllers\V3\Dashboard\RoadMaintenanceStationController; use App\Http\Controllers\V3\Dashboard\RoadPatrol\ReportController; +use App\Http\Controllers\V3\Dashboard\RoleManagementController; use App\Http\Controllers\V3\Dashboard\SafetyAndPrivacy\OperatorController; use App\Http\Controllers\V3\Dashboard\SafetyAndPrivacy\OperatorReport\AccessRoadActivityController; use App\Http\Controllers\V3\Dashboard\SafetyAndPrivacy\OperatorReport\ConstructionActivityController; @@ -386,7 +388,7 @@ Route::prefix('safety_and_privacy') Route::get('/map', 'map')->name('map'); Route::post('operator/second_step_store/{safetyAndPrivacy}', 'secondStepStore')->name('secondStepStore')->middleware(['validate-store-access','permission:add-safety-and-privacy','check-axis-type']); Route::post('operator/third_step_store/{safetyAndPrivacy}', 'thirdStepStore')->name('thirdStepStore')->middleware(['validate-store-access','permission:add-safety-and-privacy','check-axis-type']); - Route::post('operator/{safetyAndPrivacy}', 'update')->name('update')->middleware('permission:update-safety-and-privacy'); + Route::post('operator/{safetyAndPrivacy}', 'update')->name('update'); Route::get('operator/{safetyAndPrivacy}', 'show')->name('show'); Route::delete('operator/{safetyAndPrivacy}', 'destroy')->name('destroy')->middleware('permission:delete-safety-and-privacy'); Route::get('/deserialize/{safetyAndPrivacy}', 'deserialize')->name('deserialize'); @@ -519,10 +521,25 @@ Route::prefix('missions') Route::get('/machines/{mission}', 'machines')->name('machines'); Route::get('/rahdaran/{mission}', 'rahdaran')->name('rahdaran'); }); + Route::prefix('violation_management') + ->name('violationManagement.') + ->controller(ViolationManagementController::class) + ->group(function () { + Route::get('/', 'index')->name('index'); + }); }); + Route::prefix('harim') ->name('harim.') ->group(function () { + Route::prefix('detail') + ->name('detail.') + ->controller(\App\Http\Controllers\V3\Dashboard\Harim\DetailController::class) + ->group(function () { + Route::get('/states', 'states')->name('states'); + Route::get('/histories/{harim}', 'histories')->name('histories'); + }); + Route::prefix('province_office') ->name('province_office.') ->controller(ProvinceOfficeController::class) @@ -531,18 +548,23 @@ Route::prefix('harim') Route::post('/feedback/{harim}', 'feedback')->name('feedback'); Route::get('/{harim}', 'show')->name('show'); }); + Route::prefix('harim_office') ->name('harim_office.') ->controller(HarimOfficeController::class) ->group(function () { Route::get('/', 'index')->name('index'); Route::post('/reject_request/{harim}', 'rejectRequest')->name('rejectRequest'); + Route::post('/refer_request/{harim}', 'referRequest')->name('referRequest'); Route::post('/need_road_access/{harim}', 'needRoadAccess')->name('needRoadAccess'); Route::post('/without_road_access/{harim}', 'withoutRoadAccess')->name('withoutRoadAccess'); Route::post('/file_accepted/{harim}', 'fileAccepted')->name('fileAccepted'); Route::post('/file_rejected/{harim}', 'fileRejected')->name('fileRejected'); Route::get('/{harim}', 'show')->name('show'); + Route::post('/computing_payment/{harim}', 'computingPayment')->name('computingPayment'); + Route::post('/refer_to_city/{harim}', 'referToCity')->name('referToCity'); }); + Route::prefix('technical_deputy') ->name('technical_deputy.') ->controller(TechnicalDeputyController::class) @@ -553,7 +575,10 @@ Route::prefix('harim') Route::post('/confirm_road_access/{harim}', 'confirmRoadAccess')->name('confirmRoadAccess'); Route::post('/refer_road_access/{harim}', 'referRoadAccess')->name('referRoadAccess'); Route::get('/{harim}', 'show')->name('show'); + Route::post('/refer_payment/{harim}', 'referPayment')->name('referPayment'); + Route::post('/confirm_payment/{harim}', 'confirmPayment')->name('confirmPayment'); }); + Route::prefix('general_manager') ->name('general_manager.') ->controller(GeneralManagerController::class) @@ -567,6 +592,8 @@ Route::prefix('harim') Route::post('/confirm_road_access_edit_need/{harim}', 'confirmRoadAccessEditNeed')->name('confirmRoadAccessEditNeed'); Route::post('/confirm_guarantee_letter_need/{harim}', 'confirmGuaranteeLetterNeed')->name('confirmGuaranteeLetterNeed'); Route::get('/{harim}', 'show')->name('show'); + Route::post('/refer_payment/{harim}', 'referPayment')->name('referPayment'); + Route::post('/confirm_payment/{harim}', 'confirmPayment')->name('confirmPayment'); }); }); @@ -574,27 +601,38 @@ Route::prefix('user_management') ->name('user_management.') ->controller(UserManagementController::class) ->group(function () { -// Route::get('/', 'index')->name('index'); - Route::get('/index_user', 'indexUser')->name('indexUser'); + Route::get('/', 'index')->name('index')->middleware( + 'permission:full-user-management|limited-user-management'); + Route::post('/limit_store', 'limitStore')->name('limitStore'); + Route::post('/full_store', 'fullStore')->name('fullStore'); + Route::get('/{user}', 'show')->name('show'); + Route::get('/user_permissions/{user}', 'userPermissions')->name('userPermissions'); + Route::post('/{user}', 'update')->name('update'); + Route::delete('/{user}', 'destroy')->name('destroy'); + Route::post('/change_password/{user}', 'changePassword')->name('changePassword'); + Route::post('/give_permissions_to/{user}', 'givePermissionsTo')->name('givePermissionsTo'); + Route::post('/give_role_to_user/{user}','giveRoleToUser')->name('giveRoleToUser'); + Route::post('/change_confirmed_status/{user}', 'changeConfirmedStatus')->name('changeConfirmedStatus'); + Route::post('/change_user_enabeld/{user}','changeUserEnabeld')->name('changeUserEnabeld')->middleware( + 'permission:full-user-management|limited-user-management'); Route::get('/activity_report', 'activityReport')->name('activityReport'); Route::get('/userActivityLogs', 'userActivityLogs')->name('userActivityLogs'); - Route::post('/change_confirmed_status', 'changeConfirmedStatus')->name('changeConfirmedStatus'); Route::get('/give_permissions_to', 'givePermissionsTo')->name('givePermissionsTo'); Route::get('/get_user_permissions', 'getUserPermissions')->name('getUserPermissions'); Route::get('/get_user_summary_report', 'getUserSummaryReport')->name('getUserSummaryReport'); Route::get('/print_group', 'printGroup')->name('printGroup'); Route::get('/user_permission', 'userPermission')->name('userPermission'); Route::get('/assign_permission', 'assignPermission')->name('assignPermission'); - Route::get('/show_all_roles', 'showAllRoles')->name('showAllRoles'); - Route::post('/change_user_enabeld','changeUserEnabeld')->name('changeUserEnabeld'); - Route::post('/','store')->name('store'); - Route::post('/create_role','createRole')->name('createRole'); - Route::post('/edit_role','editRole')->name('editRole'); - Route::get('/{user}', 'show')->name('show'); - Route::post('/{user}', 'update')->name('update'); - Route::delete('/{user}', 'destroy')->name('destroy'); - Route::post('/change_password/{user}', 'changePassword')->name('changePassword'); - Route::post('delete-role/{id}', 'deleteRole')->name('deleteRole'); + }); +Route::prefix('role') + ->name('role.') + ->controller(RoleManagementController::class) + ->group(function () { + Route::get('/', 'index')->name('index'); + Route::post('/', 'store')->name('store'); + Route::get('/{role}', 'show')->name('show'); + Route::post('/{role}', 'update')->name('update'); + Route::delete('/{role}', 'destroy')->name('destroy'); }); Route::get('/test', function () { diff --git a/routes/webservices.php b/routes/webservices.php index 8626fa4b..2a8c30be 100644 --- a/routes/webservices.php +++ b/routes/webservices.php @@ -2,6 +2,7 @@ use Illuminate\Support\Facades\Route; use App\Http\Controllers\V3\Dashboard\Harim\PanjareVahedController; +use App\Http\Controllers\V3\Dashboard\RoadMaintenanceStationController; Route::prefix('harim') ->name('harim.') @@ -15,4 +16,11 @@ Route::prefix('harim') Route::post('/get_status_request','getRejectRequest')->name('getRejectRequest'); Route::post('/get_final_polygons','getFinalPolygons')->name('getFinalPolygons'); }); - }); \ No newline at end of file + }); + +Route::prefix('road_maintenance_station') + ->name('roadMaintenanceStation.') + ->controller( RoadMaintenanceStationController::class) + ->group(function () { + Route::get('/list', 'giveListToFms')->name('giveListToFms'); + });