201 lines
6.5 KiB
PHP
201 lines
6.5 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\HarimOffice\ComputingPaymentRequest;
|
|
use App\Http\Requests\V3\Dashboard\Harim\HarimOffice\FileAcceptedRequest;
|
|
use App\Http\Requests\V3\Dashboard\Harim\HarimOffice\FileRejectedRequest;
|
|
use App\Http\Requests\V3\Dashboard\Harim\HarimOffice\NeedRoadAccessRequest;
|
|
use App\Http\Requests\V3\Dashboard\Harim\HarimOffice\ReferRequest;
|
|
use App\Http\Requests\V3\Dashboard\Harim\HarimOffice\RejectRequest;
|
|
use App\Http\Requests\V3\Dashboard\Harim\HarimOffice\ShowRequest;
|
|
use App\Http\Requests\V3\Dashboard\Harim\HarimOffice\WithoutRoadAccessRequest;
|
|
use App\Http\Traits\ApiResponse;
|
|
use App\Models\Harim;
|
|
use App\Models\Province;
|
|
use Illuminate\Http\JsonResponse;
|
|
use Illuminate\Http\Request;
|
|
use Throwable;
|
|
|
|
class HarimOfficeController extends Controller
|
|
{
|
|
use ApiResponse;
|
|
|
|
public function index(Request $request): JsonResponse
|
|
{
|
|
$query = Harim::query()
|
|
->where('province_id', '=', auth()->user()->province_id)
|
|
->orderByRaw("
|
|
CASE state
|
|
WHEN 2 THEN 1
|
|
WHEN 5 THEN 2
|
|
WHEN 13 THEN 3
|
|
ELSE 4
|
|
END
|
|
");
|
|
|
|
$data = DataTableFacade::run(
|
|
$query,
|
|
$request,
|
|
allowedFilters: ['*'],
|
|
allowedSortings: ['*'],
|
|
);
|
|
|
|
return response()->json($data);
|
|
}
|
|
|
|
/**
|
|
* @throws Throwable
|
|
*/
|
|
public function rejectRequest(RejectRequest $request, Harim $harim): JsonResponse
|
|
{
|
|
$harim->updateStateWithHistory(
|
|
action: HarimAction::NO->value,
|
|
description: $request->expert_description,
|
|
data: [
|
|
'state_id' => HarimStates::BARESI_TAVASOT_MOAVEN->value,
|
|
'state_name' => HarimStates::BARESI_TAVASOT_MOAVEN->label(),
|
|
'is_possible' => false,
|
|
]
|
|
);
|
|
|
|
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_EDARE_SHAHRESTAN->value,
|
|
'state_name' => HarimStates::BARESI_EDARE_SHAHRESTAN->label(),
|
|
]
|
|
);
|
|
|
|
return $this->successResponse();
|
|
}
|
|
|
|
/**
|
|
* @throws Throwable
|
|
*/
|
|
public function needRoadAccess(NeedRoadAccessRequest $request, Harim $harim): JsonResponse
|
|
{
|
|
$harim->updateStateWithHistory(
|
|
action: HarimAction::YES->value,
|
|
description: $request->expert_description,
|
|
data: [
|
|
'state_id' => HarimStates::BARESI_TAVASOT_MOAVEN->value,
|
|
'state_name' => HarimStates::BARESI_TAVASOT_MOAVEN->label(),
|
|
'is_possible' => true,
|
|
'need_access_road' => true,
|
|
'need_payment' => $request->need_payment,
|
|
]
|
|
);
|
|
|
|
return $this->successResponse();
|
|
}
|
|
|
|
/**
|
|
* @throws Throwable
|
|
*/
|
|
public function withoutRoadAccess(WithoutRoadAccessRequest $request, Harim $harim): JsonResponse
|
|
{
|
|
$harim->updateStateWithHistory(
|
|
action: HarimAction::YES->value,
|
|
description: $request->expert_description,
|
|
data: [
|
|
'state_id' => HarimStates::BARESI_TAVASOT_MOAVEN->value,
|
|
'state_name' => HarimStates::BARESI_TAVASOT_MOAVEN->label(),
|
|
'is_possible' => true,
|
|
'need_access_road' => false,
|
|
'need_payment' => $request->need_payment,
|
|
]
|
|
);
|
|
|
|
return $this->successResponse();
|
|
}
|
|
|
|
/**
|
|
* @throws Throwable
|
|
*/
|
|
public function fileAccepted(FileAcceptedRequest $request, Harim $harim): JsonResponse
|
|
{
|
|
$harim->updateStateWithHistory(
|
|
action: HarimAction::YES->value,
|
|
description: $request->expert_description,
|
|
data: [
|
|
'state_id' => HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MOAVEN->value,
|
|
'state_name' => HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MOAVEN->label(),
|
|
'access_road_allowed' => true,
|
|
]
|
|
);
|
|
|
|
return $this->successResponse();
|
|
}
|
|
|
|
/**
|
|
* @throws Throwable
|
|
*/
|
|
public function fileRejected(FileRejectedRequest $request, Harim $harim): JsonResponse
|
|
{
|
|
$harim->updateStateWithHistory(
|
|
action: HarimAction::YES->value,
|
|
description: $request->expert_description,
|
|
data: [
|
|
'state_id' => HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MOAVEN->value,
|
|
'state_name' => HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MOAVEN->label(),
|
|
'access_road_allowed' => false,
|
|
]
|
|
);
|
|
|
|
return $this->successResponse();
|
|
}
|
|
|
|
public function show(ShowRequest $request, Harim $harim): JsonResponse
|
|
{
|
|
return $this->successResponse($harim);
|
|
}
|
|
|
|
public function referToCity(Request $request, Harim $harim)
|
|
{
|
|
$province = Province::query()->find($request->province_id);
|
|
|
|
$harim->update([
|
|
'edareh_shahri_id' => $request->edarate_shahri_id,
|
|
'province_id' => $province->id,
|
|
'province_name' => $province->name_fa,
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* @throws Throwable
|
|
*/
|
|
public function computingPayment(ComputingPaymentRequest $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_MOAVEN->value,
|
|
'state_name' => HarimStates::BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_MOAVEN->label(),
|
|
'traffic' => $request->traffic,
|
|
'position' => $request->position,
|
|
'final_area_space' => $request->final_area_space,
|
|
'road_type' => $request->road_type,
|
|
'final_plan_space' => $request->final_plan_space,
|
|
'payment_amount' => $request->payment_amount,
|
|
]
|
|
);
|
|
|
|
return $this->successResponse();
|
|
}
|
|
}
|