diff --git a/app/Enums/HarimStates.php b/app/Enums/HarimStates.php index 46605887..8b533560 100644 --- a/app/Enums/HarimStates.php +++ b/app/Enums/HarimStates.php @@ -22,28 +22,26 @@ enum HarimStates: int 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 => "مخالفت با درخواست", - 17 => "اتمام فرایند" - ]; - - 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::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/Http/Controllers/V3/Dashboard/Harim/GeneralManagerController.php b/app/Http/Controllers/V3/Dashboard/Harim/GeneralManagerController.php index 9266b34f..9b6db5e1 100644 --- a/app/Http/Controllers/V3/Dashboard/Harim/GeneralManagerController.php +++ b/app/Http/Controllers/V3/Dashboard/Harim/GeneralManagerController.php @@ -25,8 +25,6 @@ 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 @@ -48,209 +46,104 @@ 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->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); - }); + $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(), + ] + ); + 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_RAHE_DASTRASI_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->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); - }); + $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(), + ] + ); return $this->successResponse(); } - /** - * @throws Throwable - */ public function confirmNoRoadAccessNeed(ConfirmNoRoadAccessNeedRequest $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::ERSAL_BE_PANJAREH_VAHED_BEDONEH_NIAZ_BE_RAH_DASTRASI->value; - - $harim->update([ - 'state_id' => $state, - 'state_name' => HarimStates::name($state), - ]); - - ConfirmNoRoadAccessNeedEvent::dispatch($harim); - - }); + $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(), + ] + ); + 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->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_RAHE_DASTRASI_BARGOZARE_SHODE->value; - - $harim->update([ - 'state_id' => $state, - 'state_name' => HarimStates::name($state), - ]); - - ConfirmRoadAccessEditNeedEvent::dispatch($harim); - }); + $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(), + ] + ); + 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->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::ARSE_VA_AYAN_NAHAI->value; - - $harim->update([ - 'state_id' => $state, - 'state_name' => HarimStates::name($state), - ]); - - ConfirmGuaranteeLetterNeedEvent::dispatch($harim); - }); + $harim->updateStateWithHistory( + action:HarimAction::CONFIRM->value, + description: $request->expert_description, + data: [ + 'state_id' => HarimStates::ARSE_VA_AYAN_NAHAI->value, + 'state_name' => HarimStates::ARSE_VA_AYAN_NAHAI->label(), + ] + ); + ConfirmGuaranteeLetterNeedEvent::dispatch($harim); return $this->successResponse(); } @@ -260,60 +153,33 @@ class GeneralManagerController extends Controller return $this->successResponse($harim->load('histories')); } - /** - * @throws Throwable - */ - public function referPaymentRequest(ReferPaymentRequest $request, Harim $harim): JsonResponse + public function referPayment(ReferPaymentRequest $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_ARSE_VA_AYAN_ERSAL_SHODE_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_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_MOAVEN->value, + 'state_name' => HarimStates::BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_MOAVEN->label(), + ] + ); + ConfirmGuaranteeLetterNeedEvent::dispatch($harim); return $this->successResponse(); } - /** - * @throws Throwable - */ public function confirmPayment(ConfirmPaymentRequest $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::ETMAM_FARAYAND->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::ETMAM_FARAYAND->value, + 'state_name' => HarimStates::ETMAM_FARAYAND->label(), + ] + ); + ConfirmGuaranteeLetterNeedEvent::dispatch($harim); return $this->successResponse(); } - } diff --git a/app/Http/Controllers/V3/Dashboard/Harim/HarimOfficeController.php b/app/Http/Controllers/V3/Dashboard/Harim/HarimOfficeController.php index 8d112444..68bca460 100644 --- a/app/Http/Controllers/V3/Dashboard/Harim/HarimOfficeController.php +++ b/app/Http/Controllers/V3/Dashboard/Harim/HarimOfficeController.php @@ -42,178 +42,100 @@ 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 { - 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_EDARE_SHAHRESTAN->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_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, - ]); - }); + ] + ); 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, - ]); - }); + ] + ); 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_RAHE_DASTRASI_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_RAHE_DASTRASI_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')); @@ -230,34 +152,21 @@ class HarimOfficeController extends Controller ]); } - /** - * @throws Throwable - */ public function computingPayment(ComputingPaymentRequest $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_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_MOAVEN->value; - - $harim->update([ + $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_plan_space' => $request->final_plan_space, 'road_type' => $request->road_type, 'payment_amount' => $request->payment_amount, - 'state_id' => $state, - 'state_name' => HarimStates::name($state), - ]); - }); + ] + ); return $this->successResponse(); } diff --git a/app/Http/Controllers/V3/Dashboard/Harim/ProvinceOfficeController.php b/app/Http/Controllers/V3/Dashboard/Harim/ProvinceOfficeController.php index d81169f2..056257df 100644 --- a/app/Http/Controllers/V3/Dashboard/Harim/ProvinceOfficeController.php +++ b/app/Http/Controllers/V3/Dashboard/Harim/ProvinceOfficeController.php @@ -34,29 +34,17 @@ class ProvinceOfficeController extends Controller return response()->json($data); } - 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 79158594..b00fac04 100644 --- a/app/Http/Controllers/V3/Dashboard/Harim/TechnicalDeputyController.php +++ b/app/Http/Controllers/V3/Dashboard/Harim/TechnicalDeputyController.php @@ -17,8 +17,6 @@ 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 @@ -40,113 +38,58 @@ class TechnicalDeputyController extends Controller 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_RAHE_DASTRASI_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_RAHE_DASTRASI_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(); } @@ -155,4 +98,30 @@ class TechnicalDeputyController extends Controller { return $this->successResponse($harim->load('histories')); } + + 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(); + } + + 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/Models/Harim.php b/app/Models/Harim.php index 8e68d219..e63421ae 100644 --- a/app/Models/Harim.php +++ b/app/Models/Harim.php @@ -2,10 +2,13 @@ namespace App\Models; +use App\Enums\HarimStates; 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 { @@ -23,4 +26,23 @@ class Harim extends Model 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' => HarimAction::name($action), + ]); + + $this->update($data); + }); + } } diff --git a/routes/v3.php b/routes/v3.php index fede5047..ae2911a3 100644 --- a/routes/v3.php +++ b/routes/v3.php @@ -552,6 +552,8 @@ Route::prefix('harim') Route::post('/file_rejected/{harim}', 'fileRejected')->name('fileRejected'); Route::get('/{harim}', 'show')->name('show'); Route::post('/refer_request/{harim}', 'referRequest')->name('referRequest'); + Route::post('/computing_payment/{harim}', 'computingPayment')->name('computingPayment'); + Route::post('/refer_to_city/{harim}', 'referToCity')->name('referToCity'); }); Route::prefix('technical_deputy') @@ -564,6 +566,8 @@ 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') @@ -579,6 +583,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'); }); });