From 07d8202469e132ee421659076e24b3d9b52ed4e4 Mon Sep 17 00:00:00 2001 From: joddyabott Date: Sun, 3 Aug 2025 17:42:21 +0330 Subject: [PATCH] create controller and these dependensi --- app/Enums/HarimStates.php | 4 +- .../Harim/GeneralManagerController.php | 83 ++++++++++++++++++ .../Dashboard/Harim/HarimOfficeController.php | 8 +- .../Harim/ProvinceOfficeController.php | 12 ++- .../Harim/TechnicalDeputyController.php | 84 +++++++++++++++++++ .../Dashboard/Harim/Deputy/ConfirmRequest.php | 30 +++++++ .../Dashboard/Harim/Deputy/RejectRequest.php | 30 +++++++ .../Harim/GeneralManager/ConfirmRequest.php | 30 +++++++ .../Harim/GeneralManager/RejectRequest.php | 29 +++++++ .../Dashboard/Harim/HarimOffice/NoRequest.php | 3 +- routes/v3.php | 10 +++ 11 files changed, 315 insertions(+), 8 deletions(-) create mode 100644 app/Http/Controllers/V3/Dashboard/Harim/GeneralManagerController.php create mode 100644 app/Http/Controllers/V3/Dashboard/Harim/TechnicalDeputyController.php create mode 100644 app/Http/Requests/V3/Dashboard/Harim/Deputy/ConfirmRequest.php create mode 100644 app/Http/Requests/V3/Dashboard/Harim/Deputy/RejectRequest.php create mode 100644 app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ConfirmRequest.php create mode 100644 app/Http/Requests/V3/Dashboard/Harim/GeneralManager/RejectRequest.php diff --git a/app/Enums/HarimStates.php b/app/Enums/HarimStates.php index b8e2c54b..3e74b903 100644 --- a/app/Enums/HarimStates.php +++ b/app/Enums/HarimStates.php @@ -8,7 +8,7 @@ enum HarimStates: int case Baresi_Imeni_Rah_Tavasot_Daftar_Harim = 2; case Baresi_Imeni_Rah_Tavasot_Moaven = 3; case Baresi_Imeni_Rah_Tavasot_Modir_Kol = 4; - case Rad_Be_Dalil_Imeni_Rah = 5; + case ERSAL_BE_PANJAREVAHED = 5; public static function name(int $state): string { @@ -17,7 +17,7 @@ enum HarimStates: int 2 => "بررسی ایمنی راه توسط ادارات حریم", 3 => "بررسی ایمنی راه توسط معاون ", 4 => "بررسی ایمنی راه توسط مدیر کل", - 5 => "رد درخواست به دلیل ایمنی راه", + 5 => "ارسال به پنجره واحد", ]; return $mapArray[$state]; diff --git a/app/Http/Controllers/V3/Dashboard/Harim/GeneralManagerController.php b/app/Http/Controllers/V3/Dashboard/Harim/GeneralManagerController.php new file mode 100644 index 00000000..53b7ee9d --- /dev/null +++ b/app/Http/Controllers/V3/Dashboard/Harim/GeneralManagerController.php @@ -0,0 +1,83 @@ +user(); + $query = Harim::query() + ->where('state_id','=',HarimStates::Baresi_Imeni_Rah_Tavasot_Modir_Kol->value) + ->where('edare_shahri_id', '=', $user->edarate_shahri_id) + ->with('histories:expert_description'); + + $data = DataTableFacade::run( + $query, + $request, + allowedFilters: ['*'], + allowedSortings: ['*'] + ); + return response()->json($data); + } + public function conform(ConfirmRequest $request, Harim $harim): JsonResponse + { + DB::transaction(function () use ($request, $harim) { + $action = HarimAction::CONFIRM->value; + $harim->histories()->create([ + 'user_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_PANJAREVAHED->value; + $harim->update([ + 'state_id' => $state, + 'state_name' => HarimStates::name($state), + ]); + }); + return $this->successResponse(); + } + + public function reject(RejectRequest $request, Harim $harim): JsonResponse + { + DB::transaction(function () use ($request, $harim) { + $action = HarimAction::REJECT->value; + $harim->histories()->create([ + 'user_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_Imeni_Rah_Tavasot_Moaven->value; + $harim->update([ + 'state_id' => $state, + 'state_name' => HarimStates::name($state), + ]); + }); + return $this->successResponse(); + } + public function show(Harim $harim): JsonResponse + { + return $this->successResponse($harim); + + } +} diff --git a/app/Http/Controllers/V3/Dashboard/Harim/HarimOfficeController.php b/app/Http/Controllers/V3/Dashboard/Harim/HarimOfficeController.php index 609ec75c..845feb18 100644 --- a/app/Http/Controllers/V3/Dashboard/Harim/HarimOfficeController.php +++ b/app/Http/Controllers/V3/Dashboard/Harim/HarimOfficeController.php @@ -20,7 +20,11 @@ class HarimOfficeController extends Controller public function index(Request $request): JsonResponse { - $query = Harim::query()->where('edareh_shahri_id', '=', auth()->user()->edarate_shahri_id); + $user = auth()->user(); + $query = Harim::query() + ->where('state_id','=',HarimStates::Baresi_Imeni_Rah_Tavasot_Daftar_Harim->value) + ->where('edare_shahri_id', '=', $user->edarate_shahri_id) + ->with('expert_description'); $data = DataTableFacade::run( $query, $request, @@ -47,6 +51,7 @@ class HarimOfficeController extends Controller $harim ->update([ 'state_id' => $state, 'state_name' => HarimStates::name($state), + 'final_description' => 'yes' ]); }); return $this->successResponse(); @@ -69,6 +74,7 @@ class HarimOfficeController extends Controller $harim ->update([ 'state_id' => $state, 'state_name' => HarimStates::name($state), + 'final_description' => 'no' ]); }); return $this->successResponse(); diff --git a/app/Http/Controllers/V3/Dashboard/Harim/ProvinceOfficeController.php b/app/Http/Controllers/V3/Dashboard/Harim/ProvinceOfficeController.php index 1faf9abe..6953e132 100644 --- a/app/Http/Controllers/V3/Dashboard/Harim/ProvinceOfficeController.php +++ b/app/Http/Controllers/V3/Dashboard/Harim/ProvinceOfficeController.php @@ -20,7 +20,10 @@ class ProvinceOfficeController extends Controller public function index(Request $request): JsonResponse { $user = auth()->user(); - $query = Harim::query()->where('edareh_shahri_id', '=', $user->edarate_shahri_id); + $query = Harim::query() + ->where('state_id','=',HarimStates::Baresi_Edare_Shahrestan->value) + ->where('edare_shahri_id', '=', $user->edarate_shahri_id); + $data = DataTableFacade::run( $query, $request, @@ -33,13 +36,15 @@ class ProvinceOfficeController extends Controller public function feedback(FeedBackRequest $request, Harim $harim): JsonResponse { DB::transaction(function () use ($request,$harim) { + $action = HarimAction::FEEDBACK->value; + $harim->histories()->create([ 'user_id' => auth()->user()->id, 'previous_state_id' => $harim->state_id, 'previous_state_name' => $harim->state_name, 'expert_description' => $request->expert_description, - 'action_id' => HarimAction::FEEDBACK->value, - 'action_name' => HarimAction::FEEDBACK->name, + 'action_id' => $action, + 'action_name' => HarimAction::name($action), ]); $state = HarimStates::Baresi_Imeni_Rah_Tavasot_Daftar_Harim->value; @@ -55,6 +60,5 @@ class ProvinceOfficeController extends Controller public function show(Harim $harim): JsonResponse { return $this->successResponse($harim); - } } diff --git a/app/Http/Controllers/V3/Dashboard/Harim/TechnicalDeputyController.php b/app/Http/Controllers/V3/Dashboard/Harim/TechnicalDeputyController.php new file mode 100644 index 00000000..43dc0bf3 --- /dev/null +++ b/app/Http/Controllers/V3/Dashboard/Harim/TechnicalDeputyController.php @@ -0,0 +1,84 @@ +user(); + $query = Harim::query() + ->where('state_id', '=', HarimStates::Baresi_Imeni_Rah_Tavasot_Moaven->value) + ->where('edare_shahri_id', '=', $user->edarate_shahri_id) + ->with('histories:expert_description'); + + $data = DataTableFacade::run( + $query, + $request, + allowedFilters: ['*'], + allowedSortings: ['*'], + ); + return response()->json($data); + } + public function conform(ConfirmRequest $request, Harim $harim): JsonResponse + { + DB::transaction(function () use ($request,$harim) { + $action = HarimAction::CONFIRM->value; + + $harim->histories()->create([ + 'user_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_Imeni_Rah_Tavasot_Modir_Kol->value; + + $harim ->update([ + 'state_id' => $state, + 'state_name' => HarimStates::name($state), + ]); + }); + return $this->successResponse(); + + } + public function reject(ConfirmRequest $request, Harim $harim): JsonResponse + { + DB::transaction(function () use ($request,$harim) { + $action = HarimAction::REJECT->value; + + $harim->histories()->create([ + 'user_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_Imeni_Rah_Tavasot_Daftar_Harim->value; + $harim->update([ + 'state_id' => $state, + 'state_name' => HarimStates::name($state), + ]); + }); + return $this->successResponse(); + } + public function show(Harim $harim): JsonResponse + { + return $this->successResponse($harim); + } +} diff --git a/app/Http/Requests/V3/Dashboard/Harim/Deputy/ConfirmRequest.php b/app/Http/Requests/V3/Dashboard/Harim/Deputy/ConfirmRequest.php new file mode 100644 index 00000000..e3cb82cb --- /dev/null +++ b/app/Http/Requests/V3/Dashboard/Harim/Deputy/ConfirmRequest.php @@ -0,0 +1,30 @@ +harim->edare_shahri_id == auth()->user()->edarate_shahri_id && + $this->harim->state_id == HarimStates::Baresi_Imeni_Rah_Tavasot_Moaven->value; + } + + /** + * Get the validation rules that apply to the request. + * + * @return array|string> + */ + public function rules(): array + { + return [ + 'expert_description' => 'required|string', + ]; + } +} diff --git a/app/Http/Requests/V3/Dashboard/Harim/Deputy/RejectRequest.php b/app/Http/Requests/V3/Dashboard/Harim/Deputy/RejectRequest.php new file mode 100644 index 00000000..db73d533 --- /dev/null +++ b/app/Http/Requests/V3/Dashboard/Harim/Deputy/RejectRequest.php @@ -0,0 +1,30 @@ +harim->edare_shahri_id == auth()->user()->edarate_shahri_id && + $this->harim->state_id == HarimStates::Baresi_Imeni_Rah_Tavasot_Moaven->value; + } + + /** + * Get the validation rules that apply to the request. + * + * @return array|string> + */ + public function rules(): array + { + return [ + 'expert_description' => 'required|string', + ]; + } +} diff --git a/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ConfirmRequest.php b/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ConfirmRequest.php new file mode 100644 index 00000000..5f93d671 --- /dev/null +++ b/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ConfirmRequest.php @@ -0,0 +1,30 @@ +harim->edare_shahri_id == auth()->user()->edarate_shahri_id && + $this->harim->state_id == HarimStates::Baresi_Imeni_Rah_Tavasot_Modir_Kol->value; + } + + /** + * Get the validation rules that apply to the request. + * + * @return array|string> + */ + public function rules(): array + { + return [ + 'expert_description' => 'required|string', + ]; + } +} diff --git a/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/RejectRequest.php b/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/RejectRequest.php new file mode 100644 index 00000000..5a16c5b9 --- /dev/null +++ b/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/RejectRequest.php @@ -0,0 +1,29 @@ +harim->edare_shahri_id == auth()->user()->edarate_shahri_id && + $this->harim->state_id == HarimStates::Baresi_Imeni_Rah_Tavasot_Modir_Kol->value; } + + /** + * Get the validation rules that apply to the request. + * + * @return array|string> + */ + public function rules(): array + { + return [ + 'expert_description' => 'required|string', + ]; + } +} diff --git a/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/NoRequest.php b/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/NoRequest.php index 9e35c3b8..ad4b876b 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/NoRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/NoRequest.php @@ -13,7 +13,8 @@ class NoRequest extends FormRequest public function authorize(): bool { return $this->harim->edare_shahri_id == auth()->user()->edarate_shahri_id && - $this->harim->state_id == HarimStates::Baresi_Imeni_Rah_Tavasot_Daftar_Harim->value; } + $this->harim->state_id == HarimStates::Baresi_Imeni_Rah_Tavasot_Daftar_Harim->value; + } /** * Get the validation rules that apply to the request. diff --git a/routes/v3.php b/routes/v3.php index 47e6f1fd..7a2ae468 100644 --- a/routes/v3.php +++ b/routes/v3.php @@ -10,6 +10,7 @@ use App\Http\Controllers\V3\Dashboard\Azmayesh\AzmayeshSampleController; use App\Http\Controllers\V3\Dashboard\Azmayesh\AzmayeshTypeController; use App\Http\Controllers\V3\Dashboard\Harim\HarimOfficeController; use App\Http\Controllers\V3\Dashboard\Harim\ProvinceOfficeController; +use App\Http\Controllers\V3\Dashboard\Harim\TechnicalDeputyController; use App\Http\Controllers\V3\Dashboard\ItemsManagementController; use App\Http\Controllers\V3\Dashboard\Mission\ControlUnitController; use App\Http\Controllers\V3\Dashboard\Mission\DetailController; @@ -528,5 +529,14 @@ Route::prefix('harim') Route::post('/no/{harim}', 'no')->name('no'); Route::get('/{harim}', 'show')->name('show'); }); + Route::prefix('technical_deputy') + ->name('technical_deputy.') + ->controller(TechnicalDeputyController::class) + ->group(function () { + Route::get('/', 'index')->name('index'); + Route::post('/conform/{harim}', 'conform')->name('conform'); + Route::post('/reject/{harim}', 'reject')->name('reject'); + Route::get('/{harim}', 'show')->name('show'); + }); });