Files
backend/app/Http/Controllers/V3/RahdaranController.php
2025-10-01 11:59:35 +03:30

107 lines
3.3 KiB
PHP

<?php
namespace App\Http\Controllers\V3;
use App\Facades\DataTable\DataTableFacade;
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
{
use ApiResponse;
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(
$query,
$request,
allowedFilters: ['*'],
allowedSortings: ['*'])
);
}
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,
'code' => $request->code,
'mobile' => $request->mobile,
'province_id' => $province->id,
'province_name' => $province->name_fa,
'edareh_shahri_id' => $request->edareh_shahri_id,
'edareh_shahri_name' => $edareh->name_fa,
]);
return $this->successResponse();
}
public function show(Rahdaran $rahdaran): JsonResponse
{
return $this->successResponse($rahdaran);
}
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,
'code' =>$request->code,
'mobile' =>$request->mobile,
'province_id' => $province->id,
'province_name' => $province->name_fa,
'edareh_shahri_id' => $request->edareh_shahri_id,
'edareh_shahri_name' => $edareh->name_fa,
]);
return $this->successResponse();
}
public function destroy(Rahdaran $rahdaran): JsonResponse
{
try {
$rahdaran->delete();
return $this->successResponse();
}
catch (QueryException $exception) {
return $this->errorResponse('امکان حذف وجود ندارد');
}
}
public function list(): JsonResponse
{
return $this->successResponse(Rahdaran::all());
}
public function search(Request $request): JsonResponse
{
$matchedSearchedRahdaran = Rahdaran::query()
->where('code', 'LIKE', "%{$request->search}%")
->orWhere('name', 'LIKE', "%{$request->search}%")
->get();
return $this->successResponse($matchedSearchedRahdaran);
}
}