diff --git a/app/Http/Controllers/V3/Dashboard/Harim/ProvinceOfficesController.php b/app/Http/Controllers/V3/Dashboard/Harim/ProvinceOfficesController.php new file mode 100644 index 00000000..521943ec --- /dev/null +++ b/app/Http/Controllers/V3/Dashboard/Harim/ProvinceOfficesController.php @@ -0,0 +1,51 @@ +user(); + $query = Harim::query()->where('edareh_shahri_id', '=', $user->edarate_shahri_id); + $data = DataTableFacade::run( + $query, + $request, + allowedFilters: ['*'], + allowedSortings: ['*'], + ); + return response()->json($data); + + } + public function feedback(FeedBackRequest $request, Harim $harim): JsonResponse + { + DB::transaction(function () use ($request,$harim) { + $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 + ]); + + $state = HarimStates::Baresi_Imeni_Rah_Tavasot_Daftar_Harim->value; + + $harim ->update([ + 'state_id' => $state, + 'state_name' => HarimStates::name($state), + ]); + }); + return $this->successResponse(); + } +} diff --git a/app/Http/Requests/V3/Dashboard/Harim/FeedBackRequest.php b/app/Http/Requests/V3/Dashboard/Harim/FeedBackRequest.php new file mode 100644 index 00000000..021ff3f0 --- /dev/null +++ b/app/Http/Requests/V3/Dashboard/Harim/FeedBackRequest.php @@ -0,0 +1,30 @@ +harim->edare_shahri_id == auth()->user()->edarate_shahri_id && + $this->harim->state_id == HarimStates::Baresi_Edare_Shahrestan->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/Models/Harim.php b/app/Models/Harim.php index 55ba6aee..655a7c84 100644 --- a/app/Models/Harim.php +++ b/app/Models/Harim.php @@ -4,10 +4,15 @@ namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Relations\HasMany; class Harim extends Model { use HasFactory; protected $guarded = []; protected $table = 'harim'; -} + + public function histories(): HasMany + { + return $this->hasMany(HarimHistory::class); + }} diff --git a/app/Models/HarimHistory.php b/app/Models/HarimHistory.php index 638989c8..cc7155d6 100644 --- a/app/Models/HarimHistory.php +++ b/app/Models/HarimHistory.php @@ -4,9 +4,15 @@ namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Relations\BelongsTo; class HarimHistory extends Model { use HasFactory; protected $guarded = []; + + public function harim(): BelongsTo + { + return $this->belongsTo(Harim::class); + } } diff --git a/routes/v3.php b/routes/v3.php index 03efd856..b27bb37f 100644 --- a/routes/v3.php +++ b/routes/v3.php @@ -8,6 +8,7 @@ use App\Http\Controllers\V3\Dashboard\Accident\AccidentReceiptReportController; use App\Http\Controllers\V3\Dashboard\Azmayesh\AzmayeshController; use App\Http\Controllers\V3\Dashboard\Azmayesh\AzmayeshSampleController; use App\Http\Controllers\V3\Dashboard\Azmayesh\AzmayeshTypeController; +use App\Http\Controllers\V3\Dashboard\Harim\ProvinceOfficesController; use App\Http\Controllers\V3\Dashboard\ItemsManagementController; use App\Http\Controllers\V3\Dashboard\Mission\ControlUnitController; use App\Http\Controllers\V3\Dashboard\Mission\DetailController; @@ -506,3 +507,15 @@ Route::prefix('missions') Route::get('/rahdaran/{mission}', 'rahdaran')->name('rahdaran'); }); }); +Route::prefix('harim') + ->name('harim.') + ->group(function () { + Route::prefix('province_office') + ->name('province_office.') + ->controller(ProvinceOfficesController::class) + ->group(function () { + Route::get('/', 'index')->name('index'); + Route::post('/feedback', 'feedback')->name('feedback'); + }); + }); +