Files
backend/app/Http/Controllers/V3/Dashboard/Harim/TechnicalDeputyController.php
2025-11-26 16:13:55 +03:30

156 lines
4.9 KiB
PHP

<?php
namespace App\Http\Controllers\V3\Dashboard\Harim;
use App\Enums\HarimAction;
use App\Enums\HarimStates;
use App\Facades\DataTable\DataTableFacade;
use App\Http\Controllers\Controller;
use App\Http\Requests\V3\Dashboard\Harim\Deputy\ConfirmPaymentRequest;
use App\Http\Requests\V3\Dashboard\Harim\Deputy\ConfirmRequest;
use App\Http\Requests\V3\Dashboard\Harim\Deputy\ConfirmRoadAccessRequest;
use App\Http\Requests\V3\Dashboard\Harim\Deputy\ReferPaymentRequest;
use App\Http\Requests\V3\Dashboard\Harim\Deputy\ReferRequest;
use App\Http\Requests\V3\Dashboard\Harim\Deputy\ReferRoadAccessRequest;
use App\Http\Requests\V3\Dashboard\Harim\Deputy\ShowRequest;
use App\Http\Traits\ApiResponse;
use App\Models\Harim;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Throwable;
class TechnicalDeputyController extends Controller
{
use ApiResponse;
public function index(Request $request): JsonResponse
{
$query = Harim::query()
->where('province_id', '=', auth()->user()->province_id)
->orderByRaw("
CASE state_id
WHEN 3 THEN 1
WHEN 6 THEN 2
WHEN 14 THEN 3
ELSE 4
END
");
$data = DataTableFacade::run(
$query,
$request,
allowedFilters: ['*'],
allowedSortings: ['*'],
);
return response()->json($data);
}
/**
* @throws Throwable
*/
public function confirmRequest(ConfirmRequest $request, Harim $harim): JsonResponse
{
$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
{
$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
{
$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
{
$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();
}
public function show(ShowRequest $request, Harim $harim): JsonResponse
{
return $this->successResponse($harim);
}
/**
* @throws Throwable
*/
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();
}
/**
* @throws Throwable
*/
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();
}
}