diff --git a/app/Http/Controllers/V3/RahdaranController.php b/app/Http/Controllers/V3/RahdaranController.php index 5ef3ba42..412b7ac3 100644 --- a/app/Http/Controllers/V3/RahdaranController.php +++ b/app/Http/Controllers/V3/RahdaranController.php @@ -7,11 +7,13 @@ use App\Http\Controllers\Controller; use App\Http\Requests\V3\Rahdaran\StoreRequest; use App\Http\Requests\V3\Rahdaran\UpdateRequest; use App\Http\Traits\ApiResponse; +use App\Models\EdarateShahri; use App\Models\Province; use App\Models\Rahdaran; use Illuminate\Database\QueryException; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; +use Illuminate\Support\Facades\Auth; class RahdaranController extends Controller { @@ -19,8 +21,16 @@ class RahdaranController extends Controller public function index(Request $request): JsonResponse { + $user = Auth::user(); + $query = $user->hasPermissionTo('manage-rahdaran-country') ? + Rahdaran::query() : + ($user->hasPermissionTo('manage-rahdaran-province') ? + Rahdaran::query()->where('province_id', '=', $user->province_id) : + Rahdaran::query()->where('edareh_shahri_id', '=', $user->edarate_shahri_id) + ); + return response()->json(DataTableFacade::run( - Rahdaran::query(), + $query, $request, allowedFilters: ['*'], allowedSortings: ['*']) @@ -30,6 +40,7 @@ class RahdaranController extends Controller public function store(StoreRequest $request): JsonResponse { $province = Province::query()->find($request->input('province_id')); + $edareh = EdarateShahri::query()->find($request->input('edareh_shahri_id')); Rahdaran::query()->create([ 'name' => $request->name, @@ -38,6 +49,7 @@ class RahdaranController extends Controller 'province_id' => $province->id, 'province_name' => $province->name_fa, 'edareh_shahri_id' => $request->edareh_shahri_id, + 'edareh_shahri_name' => $edareh->name_fa, 'is_driver' => $request->is_driver, ]); @@ -52,6 +64,7 @@ class RahdaranController extends Controller public function update(UpdateRequest $request, Rahdaran $rahdaran): JsonResponse { $province = Province::query()->find($request->input('province_id')); + $edareh = EdarateShahri::query()->find($request->input('edareh_shahri_id')); $rahdaran->update([ 'name' =>$request->name, @@ -60,6 +73,7 @@ class RahdaranController extends Controller 'province_id' => $province->id, 'province_name' => $province->name_fa, 'edareh_shahri_id' => $request->edareh_shahri_id, + 'edareh_shahri_name' => $edareh->name_fa, 'is_driver' => $request->is_driver, ]); diff --git a/database/migrations/2025_10_01_100511_add_edareh_name_to_rahdaran_table.php b/database/migrations/2025_10_01_100511_add_edareh_name_to_rahdaran_table.php new file mode 100644 index 00000000..bc16552f --- /dev/null +++ b/database/migrations/2025_10_01_100511_add_edareh_name_to_rahdaran_table.php @@ -0,0 +1,28 @@ +string('edareh_shahri_name')->nullable()->after('edareh_shahri_id'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('rahdaran', function (Blueprint $table) { + $table->dropColumn('edareh_shahri_name'); + }); + } +}; diff --git a/routes/v3.php b/routes/v3.php index 7120ef76..338a4cc4 100644 --- a/routes/v3.php +++ b/routes/v3.php @@ -185,6 +185,7 @@ Route::prefix('cmms_machines') Route::prefix('rahdaran') ->name('rahdaran.') + ->middleware('permission:manage-rahdaran-province|manage-rahdaran-edareh|manage-rahdaran-country') ->controller(RahdaranController::class) ->group(function () { Route::get('/', 'index')->name('index');