Merge pull request #102 from witelgroup/develop

Develop
This commit is contained in:
Amir Ghasempoor
2025-12-14 10:56:29 +03:30
committed by GitHub
198 changed files with 4038 additions and 1587 deletions

View File

@@ -71,26 +71,36 @@ FMS_ERROR_RATE_URL=
FMS_ERROR_RATE_PASSWORD=
FMS_ERROR_RATE_USERNAME=
HARIM_NEED_ACCESS_URL=
HARIM_NEED_ACCESS_URL='https://zamin.gov.ir/ow/api/ow/esb/response',
HARIM_NEED_ACCESS_PASSWORD=
HARIM_NEED_ACCESS_USERNAME=
HARIM_REJECT_URL=
HARIM_REJECT_URL='https://zamin.gov.ir/ow/api/ow/esb/response'
HARIM_REJECT_PASSWORD=
HARIM_REJECT_USERNAME=
HARIM_NO_NEED_ACCESS_URL=
HARIM_NO_NEED_ACCESS_URL='https://zamin.gov.ir/ow/api/ow/esb/response'
HARIM_NO_NEED_ACCESS_PASSWORD=
HARIM_NO_NEED_ACCESS_USERNAME=
HARIM_EDIT_ACCESS_URL=
HARIM_EDIT_ACCESS_URL='https://zamin.gov.ir/ow/api/ow/esb/response'
HARIM_EDIT_ACCESS_PASSWORD=
HARIM_EDIT_ACCESS_USERNAME=
HARIM_NEED_GUARANTEE_LETTER_URL=
HARIM_NEED_GUARANTEE_LETTER_URL='https://zamin.gov.ir/ow/api/ow/esb/response'
HARIM_NEED_GUARANTEE_LETTER_PASSWORD=
HARIM_NEED_GUARANTEE_LETTER_USERNAME=
BACKUP_TARGET_DIR=
BACKUP_USER=
BACKUP_PASSWORD=
BACKUP_PASSWORD=
HARIM_ENCRYPTION_KEY="TestKey"
HARIM_ENCRYPTION_IV="1111000011110101"
CHECKE_LIST_MACHINES_ACTIVITY_URL='fms.141.ir:7030/api/RMS/GetMovingVehicles',
CHECKE_LIST_MACHINES_ACTIVITY_PASSWORD=
CHECKE_LIST_MACHINES_ACTIVITY_USERNAME=
HARIM_AMOUNT_FEE=1

View File

@@ -0,0 +1,77 @@
<?php
namespace App\Console\Commands;
use App\Enums\MissionViolationType;
use App\Models\CMMSMachine;
use App\Models\Mission;
use App\Models\MissionViolation;
use App\Services\CMMS\DailyMovingMachinesService;
use Exception;
use Illuminate\Console\Command;
use Illuminate\Support\Carbon;
class DailyMovingMachineCommand extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'webservice:daily_moving_machine';
/**
* The console command description.
*
* @var string
*/
protected $description = 'receive cmms cars information and compare my information';
/**
* Execute the console command.
* @throws Exception
*/
public function handle(DailyMovingMachinesService $dailyMovingMachines): void
{
$vehiclesInfo = $dailyMovingMachines->run();
$response = collect($vehiclesInfo['vehiclesInfo']);
$date = Carbon::yesterday()->toDateString();
$cmms = $response->pluck('machineCode');
$missions = Mission::query()
->whereDate('start_time', $date)
->get();
$missionCodes = $missions->pluck('machine_code');
$cmmsOnly = $cmms->diff($missionCodes);
$missionOnly = $missionCodes->diff($cmms);
foreach ($cmmsOnly as $code) {
$cmm = $response->firstWhere('machineCode', '=', $code);
MissionViolation::query()->create([
'machine_code' => $code,
'type' => MissionViolationType::KHOROJ_BEDONE_MOGAVEZ->value,
'request_date' => $date,
'mileage' => $cmm['mileageKM'],
// 'exit_time' => $cmm['exit_time'],
// 'enter_time' => $cmm['enter_time'],
]);
}
foreach ($missionOnly as $code) {
MissionViolation::query()->create([
'machine_code' => $code,
'mission_id' => $missions->where('machine_code', '=', $code)->value('id'),
'type' => MissionViolationType::ADAM_TAHAROK->value,
'request_date' => $date,
]);
}
$this->info("ماشین‌های متحرک بدون مأموریت: " . $cmmsOnly->count());
$this->info("مأموریت‌های بدون حرکت در CMMS: " . $missionOnly->count());
}
}

View File

@@ -35,9 +35,9 @@ class GetMachinesInfoListCommand extends Command
$updatedRows = 0;
if (isset($response['vw_MachBankFull'])) {
if (isset($response['vw_MachBankFull2'])) {
foreach ($response['vw_MachBankFull'] as $entry) {
foreach ($response['vw_MachBankFull2'] as $entry) {
// Insert data into the database
CMMSMachine::query()->updateOrCreate(
[
@@ -54,8 +54,12 @@ class GetMachinesInfoListCommand extends Command
'car_id' => $entry['Id'],
'unit_group' => $entry['UnitGroup'] == [] ? null : $entry['UnitGroup'],
'plak_number' => $entry['PlakNumber'] ?? null,
'province_id' => $entry['UnitGroupCode'] ?? null,
'city_id' => $entry['UnitCode'] ?? null,
'station_id' => $entry['Layer3Code'] ?? null,
]);
$updatedRows += 1;
++$updatedRows;
}
}

View File

@@ -78,7 +78,8 @@ class RoadObservationProblems extends Command
$mobile = $value->MobileForSendEventSms;
}
$cityModel = City::findCityWithLatLng($value->XGeo, $value->YGeo);
$city = findCityFromGeoJson($value->YGeo, $value->XGeo);
$cityModel = $city ? City::query()->find($city['city_id']) : City::query()->find(NikarayanComplaints::mapCities((int) $value->fk_Town));
$rop = RoadObserved::query()->updateOrCreate(
['fk_RegisteredEventMessage' => $value->fk_RegisteredEventMessage],
[

View File

@@ -16,6 +16,7 @@ class Kernel extends ConsoleKernel
protected $commands = [
'App\Console\Commands\RoadObservationProblems', //// road observed webservice from 141 sawaneh
'App\Console\Commands\SendContractSmsNotification', //// road observed webservice from 141 sawaneh
'App\Console\Commands\DailyMovingMachineCommand',
];
/**
@@ -41,13 +42,16 @@ class Kernel extends ConsoleKernel
$schedule->command("webservice:roadobserved --daily-mode")
->dailyAt('00:45')->appendOutputTo(storage_path('logs/nikarayan.log'));
$schedule->command("db:backup")
->weekly()->at('03:00')->appendOutputTo(storage_path('logs/mariadb-backup.log'));
// $schedule->command("db:backup")
// ->weekly()->at('03:00')->appendOutputTo(storage_path('logs/mariadb-backup.log'));
$schedule->command('telescope:prune --hours=48')
->dailyAt('04:00')
->appendOutputTo(storage_path('logs/telescope.log'));
$schedule->command('webservice:daily_moving_machine')
->dailyAt('02:00')->appendOutputTo(storage_path('logs/dailymovingmachine.log'));
}
/**

View File

@@ -0,0 +1,24 @@
<?php
namespace App\Enums;
enum AccidentWayGeoTypes: int
{
public static function name(int $state): string
{
$mapArray = [
1 => "تقاطع - دسترسی",
2 => "قوس افقی یا قائم",
3 => "پل",
4 => "پل و قوس",
5 => "تونل",
6 => "میدان",
7 => "دوربرگردان",
8 => "بریدگی",
9 => "تقاطع و قوس",
10 => "نقطه عادی",
];
return $mapArray[$state];
}
}

View File

@@ -0,0 +1,28 @@
<?php
namespace App\Enums;
enum AccidentWeatherConditions: int
{
case BARFI= 1;
case KOLAK = 2;
case AFTABI = 3;
case BARANI = 4;
case YAKHBANDAN = 5;
case MEH = 6;
public static function name(int $state): string
{
$mapArray = [
1 => 'برفی',
2 => 'کولاک',
3 => 'آفتابی',
4 => 'بارانی',
5 => 'یخبندان',
6 => 'مه آلود',
];
return $mapArray[$state];
}
}

View File

@@ -0,0 +1,19 @@
<?php
namespace App\Enums;
enum CmmsMachineStatus: int
{
case AMADE= 1;
case RESERVE = 2;
case DAR_MAMORIAT = 3;
public function label(): string
{
return match ($this) {
self::AMADE => 'آماده',
self::RESERVE => 'رزرو',
self::DAR_MAMORIAT => 'در ماموریت',
};
}
}

View File

@@ -0,0 +1,17 @@
<?php
namespace App\Enums;
enum HarimPosition : string
{
case FASELEH_AZ_MARKAZ_OSTAN_10_KM = 'به فاصله 10 کیلومتری از مراکز استان ها';
case FASELEH_AZ_MARKAZ_SHAHR_5_KM = 'به فاصله 5 کیلومتری از سایر شهر ها';
public function amount(): float
{
return match ($this) {
self::FASELEH_AZ_MARKAZ_OSTAN_10_KM => 1.0,
self::FASELEH_AZ_MARKAZ_SHAHR_5_KM => 1.5,
};
}
}

View File

@@ -0,0 +1,19 @@
<?php
namespace App\Enums;
enum HarimRoadType : string
{
case FARE_VA_RAH_AHAN = "فرعی و راه آهن";
case ASLI_VA_BOZORGRAH = 'اصلی و بزرگراه';
case AZADRAH = 'آزادراه';
public function amount(): float
{
return match ($this) {
self::FARE_VA_RAH_AHAN => 1.0,
self::ASLI_VA_BOZORGRAH => 1.5,
self::AZADRAH => 2.0,
};
}
}

View File

@@ -8,40 +8,40 @@ enum HarimStates: int
case BARESI_TAVASOT_DAFTAR_HARIM = 2;
case BARESI_TAVASOT_MOAVEN = 3;
case BARESI_TAVASOT_MODIR_KOL = 4;
case BARESI_FILE_APLODE_SHODE_TAVASOTE_DAFTAR_HARIM = 5;
case BARESI_FILE_APLODE_SHODE_TAVASOTE_MOAVEN = 6;
case BARESI_FILE_APLODE_SHODE_TAVASOTE_MODIR_KOL = 7;
case ERSAL_ZEMANAT_NAME_TAVASOTE_KARBAR =8;
case BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_DAFTAR_HARIM = 5;
case BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MOAVEN = 6;
case BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MODIR_KOL = 7;
case DARYAFTE_ARSE_VA_AYAN_NAHAI =8;
case ERSAL_BE_PANJAREH_VAHED_NIAZ_BE_RAH_DASTRASI = 9;
case EMKAN_PAZIR_NEMEBASHAD = 10;
case ERSAL_BE_PANJAREH_VAHED_BEDONEH_NIAZ_BE_RAH_DASTRASI = 11;
case UPDATE_FILE_BARGOZARE_SHODE = 12;
case TAEDE_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_DAFTAR_HARIM = 13;
case TAEDE_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_TAVASOTE_MOAVEN = 14;
case TAEDE_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_MODIR_KOL = 15;
case UPDATE_RAHE_DASTRASI_BARGOZARE_SHODE = 12;
case BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_DAFTAR_HARIM = 13;
case BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_MOAVEN = 14;
case BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_MODIR_KOL = 15;
case MOKHALEFAT_BA_DASTGAH = 16;
case ETMAM_FARAYAND = 17;
public static function name(int $state): string
public function label(): string
{
$mapArray = [
1 => "بررسی ادارات شهرستان",
2 => "بررسی توسط ادارات حریم",
3 => "بررسی توسط معاون ",
4 => "بررسی توسط مدیر کل",
5 => "بررسی فایل آپلود شده توسط اداره حریم",
6 => "بررسی فایل آپلود شده توسط معاون",
7 => "بررسی فایل آپلود شده توسط مدیر",
8 => "ارسال ضمانت نامه توسط کاربر",
9 => "ارسال به پنجره واحد (نیاز به راه دسترسی)",
10 => "امکان پذیر نمی باشد",
11 => "ارسال به پنجره واحد (بدون نیاز به راه دسترسی)",
12 => "بازبینی فایل بارگذاری شده",
13 => "تائید عرصه و اعیان ارسال شده توسط اداره حریم",
14 => "تائید عرصه و اعیان ارسال شده توسط معاون",
15 => "تائید عرصه و اعیان ارسال شده توسط مدیر",
16 => "مخالفت با درخواست"
];
return $mapArray[$state];
return match ($this) {
self::BARESI_EDARE_SHAHRESTAN => "بررسی ادارات شهرستان",
self::BARESI_TAVASOT_DAFTAR_HARIM => "بررسی توسط ادارات حریم",
self::BARESI_TAVASOT_MOAVEN => "بررسی توسط معاون ",
self::BARESI_TAVASOT_MODIR_KOL => "بررسی توسط مدیر کل",
self::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_DAFTAR_HARIM => "بررسی راه دسترسی آپلود شده توسط اداره حریم",
self::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MOAVEN => "بررسی راه دسترسی آپلود شده توسط معاون",
self::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MODIR_KOL => "بررسی راه دسترسی آپلود شده توسط مدیر",
self::DARYAFTE_ARSE_VA_AYAN_NAHAI => "دریافت عرصه و عیان نهایی",
self::ERSAL_BE_PANJAREH_VAHED_NIAZ_BE_RAH_DASTRASI => "ارسال به پنجره واحد (نیاز به راه دسترسی)",
self::EMKAN_PAZIR_NEMEBASHAD => "امکان پذیر نمی باشد",
self::ERSAL_BE_PANJAREH_VAHED_BEDONEH_NIAZ_BE_RAH_DASTRASI => "ارسال به پنجره واحد (بدون نیاز به راه دسترسی)",
self::UPDATE_RAHE_DASTRASI_BARGOZARE_SHODE => "بازبینی راه دسترسی بارگذاری شده",
self::BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_DAFTAR_HARIM => "تائید عرصه و اعیان ارسال شده توسط اداره حریم",
self::BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_MOAVEN => "تائید عرصه و اعیان ارسال شده توسط معاون",
self::BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_MODIR_KOL => "تائید عرصه و اعیان ارسال شده توسط مدیر",
self::MOKHALEFAT_BA_DASTGAH => "مخالفت با درخواست",
self::ETMAM_FARAYAND => "اتمام فرایند",
};
}
}

View File

@@ -0,0 +1,22 @@
<?php
namespace App\Enums;
enum HarimTraffic : string
{
case SABOK = 'سبک';
case MOTEVASET = 'متوسط';
case SANGIN = 'سنگین';
public function amount(): float
{
return match ($this) {
self::SABOK => 1.0,
self::MOTEVASET => 1.5,
self::SANGIN => 2.0,
};
}
}

View File

@@ -0,0 +1,19 @@
<?php
namespace App\Enums;
enum MachineStates: int
{
case AMADE_BE_CAR = 1;
case REZERV = 2;
case DAR_HAL_MAMOREAT = 3;
public function label(): string
{
return match ($this) {
self::AMADE_BE_CAR => 'اماده به کار',
self::REZERV => 'رزرو',
self::DAR_HAL_MAMOREAT => 'در حال ماموریت',
};
}
}

View File

@@ -0,0 +1,17 @@
<?php
namespace App\Enums;
enum MissionViolationType: int
{
case KHOROJ_BEDONE_MOGAVEZ = 1;
case ADAM_TAHAROK = 2;
public function label(): string
{
return match ($this) {
self::KHOROJ_BEDONE_MOGAVEZ => "خروج بدون مجوز ",
self::ADAM_TAHAROK => "عدم تحرک",
};
}
}

View File

@@ -0,0 +1,9 @@
<?php
namespace App\Enums;
enum PanjarehVahedHistoryActions : int
{
case RECEIVE = 0;
case SEND = 1;
}

View File

@@ -0,0 +1,18 @@
<?php
namespace App\Events\V3\Dashboard\Harim;
use App\Models\Harim;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;
class PaymentExecutedEvent
{
use Dispatchable, InteractsWithSockets, SerializesModels;
/**
* Create a new event instance.
*/
public function __construct(public Harim $harim){}
}

View File

@@ -2,7 +2,6 @@
namespace App\Events\V3\Dashboard\Mission;
use App\Models\Harim;
use App\Models\Mission;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Foundation\Events\Dispatchable;

View File

@@ -17,7 +17,7 @@ use PhpOffice\PhpSpreadsheet\Worksheet\Drawing;
class CountryCartableReport implements FromView, ShouldAutoSize, WithEvents, WithDrawings
{
public function __construct(private Collection $data){}
public function __construct(private array $data){}
public function view(): View
{

View File

@@ -17,7 +17,7 @@ use PhpOffice\PhpSpreadsheet\Worksheet\Drawing;
class ProvinceCartableReport implements FromView, ShouldAutoSize, WithEvents, WithDrawings
{
public function __construct(private Collection $data){}
public function __construct(private array $data){}
public function view(): View
{

View File

@@ -10,12 +10,13 @@ use Illuminate\Http\Request;
class LogoutController extends Controller
{
use AuthenticatesUsers;
/**
* Handle the incoming request.
*/
public function __invoke(Request $request): JsonResponse
{
if($request->session()->exists('last_login')){
if ($request->session()->exists('last_login')) {
$user = auth()->user();
$user->last_login = $request->session()->get('last_login');
$user->save();
@@ -29,7 +30,7 @@ class LogoutController extends Controller
$request->session()->regenerateToken();
return response()->json([
'message' => 'logged out'
'message' => 'logged out',
]);
}
}

View File

@@ -22,13 +22,13 @@ class CMMSMachinesController extends Controller
$request,
allowedFilters: ['*'],
allowedSortings: ['*'],
allowedSelects: ['machine_code', 'id', 'plak_number', 'car_name', 'car_type']
allowedSelects: ['machine_code', 'id', 'plak_number', 'car_name', 'car_type', 'status'],
));
}
public function list(): JsonResponse
{
$machinesList = CMMSMachine::query()->get(['machine_code', 'id', 'plak_number', 'car_name', 'car_type']);
$machinesList = CMMSMachine::query()->get(['machine_code', 'id', 'plak_number', 'car_name', 'car_type', 'status']);
return $this->successResponse($machinesList);
}
@@ -37,7 +37,7 @@ class CMMSMachinesController extends Controller
{
$matchedSearchedMachines = CMMSMachine::query()
->where('machine_code', 'LIKE', "%{$request->machine_code}%")
->get(['machine_code', 'id', 'plak_number', 'car_name']);
->get(['machine_code', 'id', 'plak_number', 'car_name', 'status']);
return $this->successResponse($matchedSearchedMachines);
}

View File

@@ -3,7 +3,6 @@
namespace App\Http\Controllers\V3;
use App\Exports\V3\Damage\DamageCartableReport;
use App\Facades\DataTable\DataTableFacade;
use App\Http\Controllers\Controller;
use App\Http\Requests\V3\Damage\StoreRequest;
use App\Http\Requests\V3\Damage\UpdateRequest;
@@ -19,22 +18,24 @@ use Symfony\Component\HttpFoundation\BinaryFileResponse;
class DamageManagementController extends Controller
{
use ApiResponse;
/**
* Display a listing of the resource.
*/
public function index(Request $request ,DamageService $damageService): JsonResponse
public function index(Request $request, DamageService $damageService): JsonResponse
{
$data = $damageService->dataTable($request);
return response()->json($data);
}
public function list(): JsonResponse
{
$damages = Damage::query()->where('status', '=', 1)->get();
return $this->successResponse($damages);
}
/**
* Store a newly created resource in storage.
*/
@@ -45,7 +46,7 @@ class DamageManagementController extends Controller
'unit' => $request->unit,
'base_price' => $request->base_price,
'status' => 1,
'update_time' => now()
'update_time' => now(),
]);
return $this->successResponse();
@@ -55,7 +56,6 @@ class DamageManagementController extends Controller
* Display the specified resource.
*/
public function show(Damage $damage): JsonResponse
{
return $this->successResponse($damage);
}
@@ -63,14 +63,13 @@ class DamageManagementController extends Controller
/**
* Show the form for editing the specified resource.
*/
public function update(UpdateRequest $request, Damage $damage): JsonResponse
{
$damage->update([
'title' => $request->title,
'unit' => $request->unit,
'base_price' => $request->base_price,
'update_time' => now()
'update_time' => now(),
]);
return $this->successResponse();
@@ -92,8 +91,9 @@ class DamageManagementController extends Controller
*/
public function excel(Request $request, DamageService $damageService): BinaryFileResponse
{
$name = 'آیتم خسارات وارده بر ابنیه فنی' . verta()->now()->format('Y-m-d H-i') . '.xlsx';
$name = 'آیتم خسارات وارده بر ابنیه فنی'.verta()->now()->format('Y-m-d H-i').'.xlsx';
$data = $damageService->datatable($request);
return Excel::download(new DamageCartableReport($data['data']), $name);
}
}

View File

@@ -46,8 +46,9 @@ class AccidentReceiptController extends Controller
public function excelReport(Request $request, AccidentReceiptTableService $accidentReceiptTableService): BinaryFileResponse
{
auth()->user()->addActivityComplete(1126);
$name = 'گزارش از خسارات وارده به ابنیه فنی و تاسیسات راه ' . verta()->now()->format('Y-m-d H-i') . '.xlsx';
$name = 'گزارش از خسارات وارده به ابنیه فنی و تاسیسات راه '.verta()->now()->format('Y-m-d H-i').'.xlsx';
$data = $accidentReceiptTableService->dataTable($request, true);
return Excel::download(new DataTableReport($data['data']), $name);
}
@@ -64,7 +65,7 @@ class AccidentReceiptController extends Controller
$city = City::query()->where('id', '=', $request->city_id)->first();
$accidentData = [
'is_foreign' => $request->is_foreign,
'is_foreign' => $request->is_foreign,
'province_id' => $province->id,
'province_fa' => $province->name_fa,
'city_id' => $city->id,
@@ -103,12 +104,12 @@ class AccidentReceiptController extends Controller
$sum += $item['amount'];
}
$ojrate_nasb = $sum/100*20;
$ojrate_nasb = $sum / 100 * 20;
$sum += $ojrate_nasb;
$accidentData['ojrate_nasb'] = $ojrate_nasb;
$accidentData['sum'] = $sum;
$accidentData['driver_share_amount'] = ($sum * $request->driver_rate)/100;
$accidentData['driver_share_amount'] = ($sum * $request->driver_rate) / 100;
$accident = Accident::query()->create($accidentData);
$accident->damage_picture1 = FileFacade::save($request->file('damage_picture1'), "receipts_files/{$accident->id}");
@@ -137,7 +138,7 @@ class AccidentReceiptController extends Controller
$city = City::query()->where('id', '=', $request->city_id)->first();
$accidentData = [
'is_foreign' => $request->is_foreign,
'is_foreign' => $request->is_foreign,
'province_id' => $province->id,
'province_fa' => $province->name_fa,
'city_id' => $city->id,
@@ -166,7 +167,9 @@ class AccidentReceiptController extends Controller
}
if ($request->has('police_file')) {
if ($accident->police_file) {FileFacade::delete($accident->police_file, true);}
if ($accident->police_file) {
FileFacade::delete($accident->police_file, true);
}
$accidentData['police_file'] = FileFacade::save($request->file('police_file'), "receipts_files/{$accident->id}/");
}
@@ -193,12 +196,12 @@ class AccidentReceiptController extends Controller
$sum += $item['amount'];
}
$ojrate_nasb = $sum/100*20;
$ojrate_nasb = $sum / 100 * 20;
$sum += $ojrate_nasb;
$accidentData['ojrate_nasb'] = $ojrate_nasb;
$accidentData['sum'] = $sum;
$accidentData['driver_share_amount'] = ($sum * $request->driver_rate)/100;
$accidentData['driver_share_amount'] = ($sum * $request->driver_rate) / 100;
$accident->update($accidentData);
@@ -246,7 +249,7 @@ class AccidentReceiptController extends Controller
return $this->successResponse([
$account_data,
$accident->load('damages')
$accident->load('damages'),
]);
}
@@ -254,7 +257,7 @@ class AccidentReceiptController extends Controller
{
DB::transaction(function () use ($request, $accident) {
$final_amount = $accident->driver_share_amount - ($request->deposit_insurance_amount + $request->deposit_daghi_amount);
$final_amount = $accident->driver_share_amount - ($request->deposit_insurance_amount + $request->deposit_daghi_amount);
throw_if($final_amount < 0, new ProhibitedAction('مبالغ داغی و بیمه از مبلغ کل بیشتر می باشد.'));
@@ -282,13 +285,13 @@ class AccidentReceiptController extends Controller
public function submitInvoice(Accident $accident, PaymentService $paymentService, SubmitInvoiceRequest $request): JsonResponse
{
$lock = Cache::lock("accidentPayment-{$accident->id}", 10);
throw_if(!$lock->get(), new ProhibitedAction('امکان درخواست مجدد تا 10 ثانیه دیگر وجود ندارد'));
throw_if(! $lock->get(), new ProhibitedAction('امکان درخواست مجدد تا 10 ثانیه دیگر وجود ندارد'));
$final_amount = $accident->final_amount;
$bill_code = $paymentService->invoiceBillApi($accident->driver_national_code, $final_amount);
DB::transaction(function () use ($bill_code, $final_amount, $accident) {
DB::transaction(function () use ($bill_code, $accident) {
$accident->update([
'bill_code' => $bill_code,
@@ -312,9 +315,9 @@ class AccidentReceiptController extends Controller
{
DB::transaction(function () use ($accident, $paymentService) {
$response = json_decode($paymentService->callPaymentStatusBillApi(explode("/", $accident->bill_code)[0]));
$response = json_decode($paymentService->callPaymentStatusBillApi(explode('/', $accident->bill_code)[0]));
throw_if(!$response->isPayed, new ProhibitedAction('پرداخت انجام نشده است'));
throw_if(! $response->isPayed, new ProhibitedAction('پرداخت انجام نشده است'));
$accident->update([
'status' => AccidentStates::PARDAKHT_FACTOR->value,
@@ -327,9 +330,9 @@ class AccidentReceiptController extends Controller
return $this->successResponse($accident);
}
public function generatePoliceDocument(Request $request, Accident $accident): JsonResponse
public function generatePoliceDocument(Accident $accident): JsonResponse
{
DB::transaction(function () use ($request, $accident) {
DB::transaction(function () use ($accident) {
$accident->update([
'status' => AccidentStates::SODOR_NAME_POLICE_RAH->value,

View File

@@ -22,6 +22,7 @@ class AccidentReceiptReportController extends Controller
public function countryReport(Request $request, AccidentReceiptTableService $accidentReceiptTableService): JsonResponse
{
$data = $accidentReceiptTableService->countryReport($request);
return $this->successResponse([
'activities' => $data['data'],
'provinces' => Province::all(['id', 'name_fa']),
@@ -31,6 +32,7 @@ class AccidentReceiptReportController extends Controller
public function provinceReport(Request $request, AccidentReceiptTableService $accidentReceiptTableService): JsonResponse
{
$data = $accidentReceiptTableService->provinceReport($request);
return $this->successResponse([
'activities' => $data['data'],
'cities' => City::query()->where('province_id', '=', $request->province_id)
@@ -46,7 +48,8 @@ class AccidentReceiptReportController extends Controller
public function countryExcelReport(Request $request, AccidentReceiptTableService $accidentReceiptTableService): BinaryFileResponse
{
$data = $accidentReceiptTableService->countryReport($request);
$name = 'گزارش از خسارات وارده به ابنیه فنی و تاسیسات راه ' . verta()->now()->format('Y-m-d H-i') . '.xlsx';
$name = 'گزارش از خسارات وارده به ابنیه فنی و تاسیسات راه '.verta()->now()->format('Y-m-d H-i').'.xlsx';
return Excel::download(new CountryReport($data), $name);
}
@@ -57,7 +60,8 @@ class AccidentReceiptReportController extends Controller
public function provinceExcelReport(Request $request, AccidentReceiptTableService $accidentReceiptTableService): BinaryFileResponse
{
$data = $accidentReceiptTableService->provinceReport($request);
$name = 'گزارش از خسارات وارده به ابنیه فنی و تاسیسات راه ' . verta()->now()->format('Y-m-d H-i') . '.xlsx';
$name = 'گزارش از خسارات وارده به ابنیه فنی و تاسیسات راه '.verta()->now()->format('Y-m-d H-i').'.xlsx';
return Excel::download(new ProvinceReport([
'report' => $data,
'cities' => City::query()->where('province_id', '=', $request->province_id)

View File

@@ -17,12 +17,13 @@ use Illuminate\Http\Request;
class AzmayeshController extends Controller
{
use ApiResponse;
/**
* Display a listing of the resource.
*/
public function index(Request $request): JsonResponse
{
$columns = array(
$columns = [
'id',
'request_date',
'report_date',
@@ -37,8 +38,8 @@ class AzmayeshController extends Controller
'updated_at',
'created_at',
'user_name',
'contract_subitem_id'
);
'contract_subitem_id',
];
$allowedFilters = $columns;
$allowedSortings = $columns;
@@ -81,7 +82,7 @@ class AzmayeshController extends Controller
'province_name' => $province->name_fa,
'user_id' => $user->id,
'user_name' => $user->name,
'contract_subitem_id' => $request->contract_subitem_id
'contract_subitem_id' => $request->contract_subitem_id,
]);
$user->addActivityComplete(1158);
@@ -121,7 +122,7 @@ class AzmayeshController extends Controller
'applicant' => $request->applicant ?? '-',
'province_id' => $province->id,
'province_name' => $province->name_fa,
'contract_subitem_id' => $request->contract_subitem_id
'contract_subitem_id' => $request->contract_subitem_id,
]);
auth()->user()->addActivityComplete(1159);
@@ -140,8 +141,7 @@ class AzmayeshController extends Controller
auth()->user()->addActivityComplete(1160);
return $this->successResponse();
}
catch (QueryException $exception) {
} catch (QueryException $exception) {
return $this->errorResponse('امکان حذف وجود ندارد');
}
}

View File

@@ -15,14 +15,15 @@ use Illuminate\Http\Request;
class AzmayeshSampleController extends Controller
{
use ApiResponse;
/**
* Display a listing of the resource.
*/
public function index(Request $request, string $azmayesh_id): JsonResponse
{
$columns = array(
'id', 'updated_at', 'created_at'
);
$columns = [
'id', 'updated_at', 'created_at',
];
$allowedFilters = $columns;
$allowedSortings = $columns;

View File

@@ -20,9 +20,9 @@ class AzmayeshTypeController extends Controller
public function index(Request $request): JsonResponse
{
$columns = array(
'id', 'name', 'updated_at', 'created_at'
);
$columns = [
'id', 'name', 'updated_at', 'created_at',
];
$allowedFilters = $columns;
$allowedSortings = $columns;
@@ -52,16 +52,14 @@ class AzmayeshTypeController extends Controller
public function store(StoreRequest $request): JsonResponse
{
DB::transaction(function () use ($request)
{
DB::transaction(function () use ($request) {
$azmayeshType = AzmayeshType::query()->create([
'name' => $request->name
'name' => $request->name,
]);
$fieldsID = [];
foreach ($request->fields as $field)
{
foreach ($request->fields as $field) {
$azmayeshField = AzmayeshField::query()->firstOrCreate($field, $field);
$fieldsID[] = $azmayeshField->id;
}
@@ -87,16 +85,14 @@ class AzmayeshTypeController extends Controller
*/
public function update(UpdateRequest $request, AzmayeshType $azmayeshType): JsonResponse
{
DB::transaction(function () use ($request, $azmayeshType)
{
DB::transaction(function () use ($request, $azmayeshType) {
$azmayeshType->update([
'name' => $request->name
'name' => $request->name,
]);
$fieldsID = [];
foreach ($request->fields as $field)
{
foreach ($request->fields as $field) {
$azmayeshField = AzmayeshField::query()->updateOrCreate($field, $field);
$fieldsID[] = $azmayeshField->id;
}
@@ -120,8 +116,7 @@ class AzmayeshTypeController extends Controller
auth()->user()->addActivityComplete(1164);
return $this->successResponse();
}
catch (QueryException $exception) {
} catch (QueryException $exception) {
return $this->errorResponse('امکان حذف وجود ندارد. ابتدا آزمایش های مرتبط با این نوع را حذف نمایید');
}
}

View File

@@ -0,0 +1,457 @@
<?php
namespace App\Http\Controllers\V3\Dashboard;
use App\Enums\AccidentWayGeoTypes;
use App\Enums\AccidentWeatherConditions;
use App\Enums\AxisTypes;
use App\Facades\DataTable\DataTableFacade;
use App\Facades\File\FileFacade;
use App\Http\Controllers\Controller;
use App\Http\Requests\V3\DailyAccident\StoreRequest;
use App\Http\Requests\V3\DailyAccident\SupervisorRequest;
use App\Http\Traits\ApiResponse;
use App\Models\DailyAccident;
use App\Models\DailyAccidentSettings;
use App\Models\Province;
use App\Services\NominatimService;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Throwable;
class DailyAccidentController extends Controller
{
use ApiResponse;
/**
* Display a listing of the resource.
*/
public function index(Request $request)
{
auth()->user()->addActivityComplete(1117);
$query = DailyAccident::query();
$dataTable = DataTableFacade::run(
$query,
$request,
allowedFilters: ['*'],
allowedSortings: ['*']
);
return response()->json($dataTable);
}
/**
* Store a newly created resource in storage.
* @throws Throwable
*/
public function store(StoreRequest $request, NominatimService $nominatimService)
{
$province = Province::query()->find($request->province_id);
$data = [
'province_id' => $province->id,
'province_fa' => $province->name_fa,
'axis_name' => $request->axis_name,
'axis_type' => $request->axis_type,
'axis_type_fa' => AxisTypes::name($request->axis_type),
'axis_start' => $request->axis_start,
'axis_end' => $request->axis_end,
'distance_axis_start' => $request->distance_axis_start,
'local_name' => $request->local_name,
'lat' => $request->lat,
'lng' => $request->lng,
'police_serial' => $request->police_serial,
'accident_date' => $request->accident_date,
'accident_time' => $request->accident_time,
'day_of_the_week' => $request->day_of_the_week,
'direction' => $request->direction,
'direction_fa' => $request->direction == 1 ? 'رفت' : 'برگشت',
'number_of_injured' => $request->number_of_injured,
'number_of_died' => $request->number_of_died,
'weather_condition' => $request->weather_condition,
'weather_condition_fa' => AccidentWeatherConditions::name($request->weather_condition),
'way_geometri' => $request->way_geometri,
'way_geometri_fa' => AccidentWayGeoTypes::name($request->way_geometri),
'collision_type' => $request->collision_type,
'collision_type_fa' => DailyAccidentSettings::query()
->where([
['type', '=', 'collision_type'],
['key', '=', $request->collision_type]
])->first()->value,
'participants_heavy_vehicle' => $request->participants_heavy_vehicle,
'participants_light_vehicle' => $request->participants_light_vehicle,
'participants_bicycle' => $request->participants_bicycle,
'accident_type' => $request->accident_type,
'accident_type_fa' => DailyAccidentSettings::query()
->where([
['type', '=', 'accident_type'],
['name', '=', $request->accident_type]
])->first()->value,
'legal_speed' => $request->legal_speed,
'avarage_speed' => $request->avarage_speed,
'increase_damage_reasons_feqdan_jodakonnande_dar_miyane_rah' => $request->increase_damage_reasons_feqdan_jodakonnande_dar_miyane_rah ?? 0,
'increase_damage_reasons_naqs_ya_adam_kefayat_hefaze_miyani' => $request->increase_damage_reasons_naqs_ya_adam_kefayat_hefaze_miyani ?? 0,
'increase_damage_reasons_naqs_ya_adam_kefayat_narde_pol' => $request->increase_damage_reasons_naqs_ya_adam_kefayat_narde_pol ?? 0,
'increase_damage_reasons_naqs_ya_adam_kefayat' => $request->increase_damage_reasons_naqs_ya_adam_kefayat ?? 0,
'increase_damage_reasons_naqs_dar_naheye_enteqali' => $request->increase_damage_reasons_naqs_dar_naheye_enteqali ?? 0,
'increase_damage_reasons_mane_solb_bedone_hefaz' => $request->increase_damage_reasons_mane_solb_bedone_hefaz ?? 0,
'increase_damage_reasons_sar_azad_hefaz' => $request->increase_damage_reasons_sar_azad_hefaz ?? 0,
'increase_damage_reasons_shirvani_tond_ya_partgah' => $request->increase_damage_reasons_shirvani_tond_ya_partgah ?? 0,
'accident_reason_dor_monaseb_dar_qus' => $request->accident_reason_dor_monaseb_dar_qus ?? 0,
'accident_reason_saraziri_tond' => $request->accident_reason_saraziri_tond ?? 0,
'accident_reason_nabod_dar_khat_sebqat_dar_sarbalaye' => $request->accident_reason_nabod_dar_khat_sebqat_dar_sarbalaye ?? 0,
'accident_reason_mantaqe_ba_rizesh_az_divar' => $request->accident_reason_mantaqe_ba_rizesh_az_divar ?? 0,
'accident_reason_mantaqe_ba_afzayesh_nagahani' => $request->accident_reason_mantaqe_ba_afzayesh_nagahani ?? 0,
'accident_reason_kahesh_na_monaseb_tedad' => $request->accident_reason_kahesh_na_monaseb_tedad ?? 0,
'accident_reason_mantaqe_ba_obor_heyvanat_ahli' => $request->accident_reason_mantaqe_ba_obor_heyvanat_ahli ?? 0,
'accident_reason_mantaqe_ba_tadakhol_terafiki' => $request->accident_reason_mantaqe_ba_tadakhol_terafiki ?? 0,
'accident_reason_arze_kam_savare_ro' => $request->accident_reason_arze_kam_savare_ro ?? 0,
'accident_reason_mantaqe_meh_gir' => $request->accident_reason_mantaqe_meh_gir ?? 0,
'accident_reason_adam_roshanaye_zarori_dar_noqte' => $request->accident_reason_adam_roshanaye_zarori_dar_noqte ?? 0,
'accident_reason_tabdil_na_monaseb_noe_rah' => $request->accident_reason_tabdil_na_monaseb_noe_rah ?? 0,
'accident_reason_oftadegi_dar_labe_asphalt' => $request->accident_reason_oftadegi_dar_labe_asphalt ?? 0,
'accident_reason_naqs_dar_ashkarsazi_navahi' => $request->accident_reason_naqs_dar_ashkarsazi_navahi ?? 0,
'accident_reason_mahal_na_monaseb_dastrasi' => $request->accident_reason_mahal_na_monaseb_dastrasi ?? 0,
'accident_reason_roye_na_monaseb' => $request->accident_reason_roye_na_monaseb ?? 0,
'accident_reason_naqs_dar_ashkar_sazi_shrayet_khas' => $request->accident_reason_naqs_dar_ashkar_sazi_shrayet_khas ?? 0,
'accident_reason_hendese_na_monaseb_vorodi_va_khoroji' => $request->accident_reason_hendese_na_monaseb_vorodi_va_khoroji ?? 0,
'accident_reason_adam_rayat_fasele_tooli' => $request->accident_reason_adam_rayat_fasele_tooli ?? 0,
'accident_reason_naqs_dar_alayem_ekhtari_va_entezami' => $request->accident_reason_naqs_dar_alayem_ekhtari_va_entezami ?? 0,
'accident_reason_qus_ofoqi_dar_saraziri_tond' => $request->accident_reason_qus_ofoqi_dar_saraziri_tond ?? 0,
'accident_reason_adam_rayat_obor' => $request->accident_reason_adam_rayat_obor ?? 0,
'accident_reason_naqs_dar_alayem_pish_agahi' => $request->accident_reason_naqs_dar_alayem_pish_agahi ?? 0,
'accident_reason_qarar_gire_qus_ofoqi' => $request->accident_reason_qarar_gire_qus_ofoqi ?? 0,
'accident_reason_adam_rayat_sebghat_mojaz' => $request->accident_reason_adam_rayat_sebghat_mojaz ?? 0,
'accident_reason_did_na_kafi' => $request->accident_reason_did_na_kafi ?? 0,
'accident_reason_qus_tond_qaem' => $request->accident_reason_qus_tond_qaem ?? 0,
'accident_reason_adam_rayat_sorat_mojaz' => $request->accident_reason_adam_rayat_sorat_mojaz ?? 0,
'accident_reason_ebham_dar_masir' => $request->accident_reason_ebham_dar_masir ?? 0,
'accident_reason_qus_tond_ofoghi' => $request->accident_reason_qus_tond_ofoghi ?? 0,
'way_id' => $nominatimService->get_way_id_from_nominatim($request->lat, $request->lng)
];
DB::transaction(function () use ($data, $request)
{
$accident = DailyAccident::query()->create($data);
$accident->first_image = $request->has('first_image') ? FileFacade::save($request->file('first_image'), "daily_accident_files/{$accident->id}") : null;
$accident->second_image = $request->has('second_image') ? FileFacade::save($request->file('second_image'), "daily_accident_files/{$accident->id}") : null;
$accident->police_file = $request->has('police_file') ? FileFacade::save($request->file('police_file'), "daily_accident_files/{$accident->id}") : null;
$accident->save();
auth()->user()->addActivityComplete(1118);
});
return $this->successResponse();
}
/**
* Display the specified resource.
*/
public function show(DailyAccident $dailyAccident)
{
return $this->successResponse($dailyAccident);
}
/**
* Update the specified resource in storage.
*/
public function update(Request $request, DailyAccident $dailyAccident)
{
//
}
/**
* Remove the specified resource from storage.
*/
public function destroy(DailyAccident $dailyAccident)
{
auth()->user()->addActivityComplete(1120, $dailyAccident);
FileFacade::deleteDirectory("daily_accident_files/{$dailyAccident->id}");
$dailyAccident->delete();
return $this->successResponse();
}
/**
* @throws Throwable
*/
public function supervise(DailyAccident $dailyAccident, SupervisorRequest $request)
{
DB::transaction(function () use ($request, $dailyAccident) {
$dailyAccident->update([
'state' => $request->state,
'state_fa' => $request->state == '1' ? 'تایید شده' : 'عدم تایید',
'message' => $request->message,
'state_updated_at' => now(),
]);
auth()->user()->addActivityComplete(1121, $dailyAccident);
});
return $this->successResponse();
}
public function map(Request $request)
{
$dataTable = DataTableFacade::run(
DailyAccident::query(),
$request,
allowedFilters: ['*'],
allowedSortings: ['*'],
allowedSelects: ['lat', 'lng', 'id']
);
return response()->json($dataTable);
}
public function poster(Request $request)
{
$request->validate([
'province_id' => 'numeric',
'from_date' => 'date_format:Y-m-d',
'to_date' => 'date_format:Y-m-d',
]);
$province_id = $request->province_id;
$from_date = $request->from_date;
$to_date = $request->to_date;
$data = [];
$data['payamad_tasadof'] = DailyAccident::when($province_id, function ($query, $province_id) {
$query->where('province_id', $province_id);
})
->when(($from_date && $to_date), function ($query) use ($from_date, $to_date) {
$query->whereBetween('accident_date', [$from_date . ' 00:00:00', $to_date . ' 23:59:59']);
})
->selectRaw('sum(number_of_died) as number_of_died, sum(number_of_injured) as number_of_injured, count(id) as number_of_accident')
->get();
// ACCIDENT REPORT -> PIE CHART
$accident_types_with_zero_accidents = DailyAccident::selectRaw('0 as cnt, accident_type, accident_type_fa, 0 as percentage')
->whereNotIn('accident_type_fa', function ($query) use ($province_id, $from_date, $to_date) {
$query->select('accident_type_fa')->distinct()
->from('daily_accidents')
->when($province_id, function ($query, $province_id) {
$query->where('province_id', $province_id);
})
->when(($from_date && $to_date), function ($query) use ($from_date, $to_date) {
$query->whereBetween('accident_date', [$from_date . ' 00:00:00', $to_date . ' 23:59:59']);
});
})
->groupBy('accident_type_fa');
$data['accident_report']['pie_chart'] = DailyAccident::when($province_id, function ($query, $province_id) {
$query->where('province_id', $province_id);
})
->when(($from_date && $to_date), function ($query) use ($from_date, $to_date) {
$query->whereBetween('accident_date', [$from_date . ' 00:00:00', $to_date . ' 23:59:59']);
})
->groupBy('accident_type_fa')
->selectRaw('count(accident_type) as cnt, accident_type, accident_type_fa, round(count(*) * 100 / sum(count(*)) over(), 1) as percentage')
->union($accident_types_with_zero_accidents)
// ->orderBy('accident_type', 'desc')
->get();
// END
// ACCIDENT REPORT -> schematic_map AND NUMBER OF ACCIDENTS PER PROVINCE
if(!$province_id){
$provinces_with_zero_accidents = Province::whereNotIn('id', function ($query) use ($from_date, $to_date) {
$query->select('province_id')
->distinct('province_id')
->from('daily_accidents')
->when(($from_date && $to_date), function ($query) use ($from_date, $to_date) {
$query->whereBetween('accident_date', [$from_date . ' 00:00:00', $to_date . ' 23:59:59']);
});
})->selectRaw('null, id, name_fa');
$data['accident_report']['schematic_map'] = DailyAccident::when(($from_date && $to_date), function ($query) use ($from_date, $to_date) {
$query->whereBetween('accident_date', [$from_date . ' 00:00:00', $to_date . ' 23:59:59']);
})
->groupBy('province_id')
->selectRaw('count(*) as cnt, province_id, province_fa')
->union($provinces_with_zero_accidents)
->orderBy('province_id', 'asc')
// ->orderBy('cnt', 'asc')
->get();
$data['number_of_accidents_per_province'] = $data['accident_report']['schematic_map'];
}
// END
// ACCIDENT REPORT -> bar chart
$way_geometries_with_zero_accidents = DailyAccident::selectRaw('0 as cnt, way_geometri, way_geometri_fa')
->whereNotIn('way_geometri', function ($query) use ($province_id, $from_date, $to_date) {
$query->select('way_geometri')->distinct()
->from('daily_accidents')
->when($province_id, function ($query, $province_id) {
$query->where('province_id', $province_id);
})
->when(($from_date && $to_date), function ($query) use ($from_date, $to_date) {
$query->whereBetween('accident_date', [$from_date . ' 00:00:00', $to_date . ' 23:59:59']);
});
})
->groupBy('way_geometri');
$data['accident_report']['bar_chart'] = DailyAccident::when($province_id, function ($query, $province_id) {
$query->where('province_id', $province_id);
})
->when(($from_date && $to_date), function ($query) use ($from_date, $to_date) {
$query->whereBetween('accident_date', [$from_date . ' 00:00:00', $to_date . ' 23:59:59']);
})
->groupBy('way_geometri')
->selectRaw('count(*) as cnt, way_geometri, way_geometri_fa')
->union($way_geometries_with_zero_accidents)
->orderBy('cnt', 'desc')
->get();
// END
// share_of_accidents_by_road_type
$share_by_road_type_data = DailyAccident::when($province_id, function ($query, $province_id) {
$query->where('province_id', $province_id);
})
->when(($from_date && $to_date), function ($query) use ($from_date, $to_date) {
$query->whereBetween('accident_date', [$from_date . ' 00:00:00', $to_date . ' 23:59:59']);
})
->groupBy('axis_type', 'accident_type')
->selectRaw('count(*) as cnt, axis_type, axis_type_fa, accident_type, accident_type_fa')
->get()->toArray();
$result = [
['accident_type_fa' => 'خسارتی', 'data' => [['axis_type_fa' => 'آزادراه', 'cnt' => 0], ['axis_type_fa' => 'بزرگراه', 'cnt' => 0], ['axis_type_fa' => 'اصلی', 'cnt' => 0], ['axis_type_fa' => 'فرعی', 'cnt' => 0]]],
['accident_type_fa' => 'جرحی', 'data' => [['axis_type_fa' => 'آزادراه', 'cnt' => 0], ['axis_type_fa' => 'بزرگراه', 'cnt' => 0], ['axis_type_fa' => 'اصلی', 'cnt' => 0], ['axis_type_fa' => 'فرعی', 'cnt' => 0]]],
['accident_type_fa' => 'فوتی', 'data' => [['axis_type_fa' => 'آزادراه', 'cnt' => 0], ['axis_type_fa' => 'بزرگراه', 'cnt' => 0], ['axis_type_fa' => 'اصلی', 'cnt' => 0], ['axis_type_fa' => 'فرعی', 'cnt' => 0]]],
];
foreach ($share_by_road_type_data as $item) {
$key = $item['accident_type'] - 1;
foreach ($result[$key]['data'] as $k => $axis_data) {
if ($axis_data['axis_type_fa'] == $item['axis_type_fa']) {
$result[$key]['data'][$k]['cnt'] = $item['cnt'];
break;
}
}
}
$data['share_of_accidents_by_road_type'] = $result;
// END
// share_of_accidents_by_road_geometry
$share_by_road_geometry_data = DailyAccident::when($province_id, function ($query, $province_id) {
$query->where('province_id', $province_id);
})
->when(($from_date && $to_date), function ($query) use ($from_date, $to_date) {
$query->whereBetween('accident_date', [$from_date . ' 00:00:00', $to_date . ' 23:59:59']);
})
->groupBy('way_geometri', 'axis_type')
->selectRaw('count(*) as cnt, way_geometri, way_geometri_fa, axis_type, axis_type_fa')
->get()->toArray();
$result = [
['way_geometri_fa' => 'تقاطع - دسترسی', 'data' => [['axis_type_fa' => 'آزادراه', 'cnt' => 0], ['axis_type_fa' => 'بزرگراه', 'cnt' => 0], ['axis_type_fa' => 'اصلی', 'cnt' => 0], ['axis_type_fa' => 'فرعی', 'cnt' => 0]]],
['way_geometri_fa' => 'قوس افقی یا قائم', 'data' => [['axis_type_fa' => 'آزادراه', 'cnt' => 0], ['axis_type_fa' => 'بزرگراه', 'cnt' => 0], ['axis_type_fa' => 'اصلی', 'cnt' => 0], ['axis_type_fa' => 'فرعی', 'cnt' => 0]]],
['way_geometri_fa' => 'پل', 'data' => [['axis_type_fa' => 'آزادراه', 'cnt' => 0], ['axis_type_fa' => 'بزرگراه', 'cnt' => 0], ['axis_type_fa' => 'اصلی', 'cnt' => 0], ['axis_type_fa' => 'فرعی', 'cnt' => 0]]],
['way_geometri_fa' => 'پل و قوس', 'data' => [['axis_type_fa' => 'آزادراه', 'cnt' => 0], ['axis_type_fa' => 'بزرگراه', 'cnt' => 0], ['axis_type_fa' => 'اصلی', 'cnt' => 0], ['axis_type_fa' => 'فرعی', 'cnt' => 0]]],
['way_geometri_fa' => 'تونل', 'data' => [['axis_type_fa' => 'آزادراه', 'cnt' => 0], ['axis_type_fa' => 'بزرگراه', 'cnt' => 0], ['axis_type_fa' => 'اصلی', 'cnt' => 0], ['axis_type_fa' => 'فرعی', 'cnt' => 0]]],
['way_geometri_fa' => 'میدان', 'data' => [['axis_type_fa' => 'آزادراه', 'cnt' => 0], ['axis_type_fa' => 'بزرگراه', 'cnt' => 0], ['axis_type_fa' => 'اصلی', 'cnt' => 0], ['axis_type_fa' => 'فرعی', 'cnt' => 0]]],
['way_geometri_fa' => 'دوربرگردان', 'data' => [['axis_type_fa' => 'آزادراه', 'cnt' => 0], ['axis_type_fa' => 'بزرگراه', 'cnt' => 0], ['axis_type_fa' => 'اصلی', 'cnt' => 0], ['axis_type_fa' => 'فرعی', 'cnt' => 0]]],
['way_geometri_fa' => 'بریدگی', 'data' => [['axis_type_fa' => 'آزادراه', 'cnt' => 0], ['axis_type_fa' => 'بزرگراه', 'cnt' => 0], ['axis_type_fa' => 'اصلی', 'cnt' => 0], ['axis_type_fa' => 'فرعی', 'cnt' => 0]]],
['way_geometri_fa' => 'تقاطع و قوس', 'data' => [['axis_type_fa' => 'آزادراه', 'cnt' => 0], ['axis_type_fa' => 'بزرگراه', 'cnt' => 0], ['axis_type_fa' => 'اصلی', 'cnt' => 0], ['axis_type_fa' => 'فرعی', 'cnt' => 0]]],
['way_geometri_fa' => 'نقطه عادی', 'data' => [['axis_type_fa' => 'آزادراه', 'cnt' => 0], ['axis_type_fa' => 'بزرگراه', 'cnt' => 0], ['axis_type_fa' => 'اصلی', 'cnt' => 0], ['axis_type_fa' => 'فرعی', 'cnt' => 0]]],
];
foreach ($share_by_road_geometry_data as $item) {
$key = $item['way_geometri'] - 1;
foreach ($result[$key]['data'] as $k => $axis_data) {
if ($axis_data['axis_type_fa'] == $item['axis_type_fa']) {
$result[$key]['data'][$k]['cnt'] = $item['cnt'];
break;
}
}
}
$data['share_of_accidents_by_road_geometry'] = $result;
// END
// collision type
$collision_types_with_zero_accidents = DailyAccident::selectRaw('0 as percentage, collision_type, collision_type_fa')
->whereNotIn('collision_type', function ($query) use ($province_id, $from_date, $to_date) {
$query->select('collision_type')->distinct()
->from('daily_accidents')
->when($province_id, function ($query, $province_id) {
$query->where('province_id', $province_id);
})
->when(($from_date && $to_date), function ($query) use ($from_date, $to_date) {
$query->whereBetween('accident_date', [$from_date . ' 00:00:00', $to_date . ' 23:59:59']);
});
})
->groupBy('collision_type');
// dd($collision_types_with_zero_accidents->get()) ;
$data['collision_type'] = DailyAccident::when($province_id, function ($query, $province_id) {
$query->where('province_id', $province_id);
})
->when(($from_date && $to_date), function ($query) use ($from_date, $to_date) {
$query->whereBetween('accident_date', [$from_date . ' 00:00:00', $to_date . ' 23:59:59']);
})
->whereNotNull(['collision_type', 'collision_type_fa'])
->groupBy('collision_type')
->selectRaw('round(count(*) * 100 / sum(count(*)) over(), 1) as percentage, collision_type, collision_type_fa')
->union($collision_types_with_zero_accidents)
->orderBy('percentage', 'desc')
->get();
// END
// per day
$where_province_exists = ($province_id) ? "province_id = $province_id and" : '';
$where_date_exists = ($from_date && $to_date) ? "accident_date BETWEEN '$from_date 00:00:00' and '$to_date 23:59:59' and" : '';
// dd($where_date_exists);
$per_day_array = DB::select("SELECT t1.*, round(sum(t1.cnt) over(PARTITION by day_part) * 100 / sum(t1.cnt) over(), 1) as day_percentage
from
(select count(*) as cnt, sum(count(*)) over() as total, round(count(*) * 100/ sum(count(*)) over(), 1) as percent, accident_type, accident_type_fa, 'day' as day_part
from daily_accidents da where $where_province_exists $where_date_exists accident_time BETWEEN '06:00:00' and '18:00:00' group by accident_type
UNION
select count(*) as cnt, sum(count(*)) over() as total, round(count(*) * 100/ sum(count(*)) over(), 1) as percent, accident_type, accident_type_fa, 'night' as day_part
from daily_accidents da where $where_province_exists $where_date_exists accident_time not BETWEEN '06:00:00' and '18:00:00' group by accident_type)t1
order by day_part");
// dd($per_day_array);
$per_day_result = [
['accident_type_fa' => 'خسارتی', 'night' => ['cnt' => 0, 'percent' => 0, 'total_percentage' => 0], 'day' => ['cnt' => 0, 'percent' => 0, 'total_percentage' => 0]],
['accident_type_fa' => 'جرحی', 'night' => ['cnt' => 0, 'percent' => 0, 'total_percentage' => 0], 'day' => ['cnt' => 0, 'percent' => 0, 'total_percentage' => 0]],
['accident_type_fa' => 'فوتی', 'night' => ['cnt' => 0, 'percent' => 0, 'total_percentage' => 0], 'day' => ['cnt' => 0, 'percent' => 0, 'total_percentage' => 0]]
];
$per_day_array = json_decode(json_encode($per_day_array), true);
foreach ($per_day_array as $item) {
$key = $item['accident_type'] - 1;
$per_day_result[$key][$item['day_part']]['cnt'] = $item['cnt'];
$per_day_result[$key][$item['day_part']]['percent'] = $item['percent'];
// $per_day_result[$key][$item['day_part']]['total_percentage'] = $item['day_percentage'];
for ($i=0; $i < count($per_day_result); $i++) {
$per_day_result[$i][$item['day_part']]['total_percentage'] = $item['day_percentage'];
}
}
$data['per_day'] = $per_day_result;
// END
return view('posters.DailyAccidentPoster', compact("data"));
}
}

View File

@@ -0,0 +1,33 @@
<?php
namespace App\Http\Controllers\V3\Dashboard\Harim;
use App\Exceptions\ProhibitedAction;
use App\Http\Controllers\Controller;
use App\Http\Traits\ApiResponse;
use App\Models\Harim;
use App\Models\HarimState;
use Illuminate\Http\JsonResponse;
use Throwable;
class DetailController extends Controller
{
use ApiResponse;
public function states(): JsonResponse
{
return $this->successResponse(HarimState::query()->get(['id', 'name']));
}
/**
* @throws Throwable
*/
public function histories(Harim $harim): JsonResponse
{
throw_if($harim->province_id != auth()->user()->province_id, new ProhibitedAction("شما دسترسی لازم جهت مشاهده ی این صفحه را ندارید"));
return $this->successResponse($harim->histories()
->orderBy('id', 'desc')
->get(['id', 'expert_description', 'action_name', 'previous_state_name']));
}
}

View File

@@ -8,14 +8,17 @@ use App\Events\V3\Dashboard\Harim\ConfirmGuaranteeLetterNeedEvent;
use App\Events\V3\Dashboard\Harim\ConfirmNoRoadAccessNeedEvent;
use App\Events\V3\Dashboard\Harim\ConfirmRoadAccessEditNeedEvent;
use App\Events\V3\Dashboard\Harim\ConfirmRoadAccessNeedEvent;
use App\Events\V3\Dashboard\Harim\PaymentExecutedEvent;
use App\Events\V3\Dashboard\Harim\RejectRequestEvent;
use App\Facades\DataTable\DataTableFacade;
use App\Http\Controllers\Controller;
use App\Http\Requests\V3\Dashboard\Harim\GeneralManager\ConfirmRoadAccessEditNeedRequest;
use App\Http\Requests\V3\Dashboard\Harim\GeneralManager\ConfirmRoadAccessNeedRequest;
use App\Http\Requests\V3\Dashboard\Harim\GeneralManager\ConfirmGuaranteeLetterNeedRequest;
use App\Http\Requests\V3\Dashboard\Harim\GeneralManager\ConfirmNoRoadAccessNeedRequest;
use App\Http\Requests\V3\Dashboard\Harim\GeneralManager\ConfirmPaymentRequest;
use App\Http\Requests\V3\Dashboard\Harim\GeneralManager\ConfirmRoadAccessEditNeedRequest;
use App\Http\Requests\V3\Dashboard\Harim\GeneralManager\ConfirmRoadAccessNeedRequest;
use App\Http\Requests\V3\Dashboard\Harim\GeneralManager\ReferFileRequest;
use App\Http\Requests\V3\Dashboard\Harim\GeneralManager\ReferPaymentRequest;
use App\Http\Requests\V3\Dashboard\Harim\GeneralManager\ReferRequest;
use App\Http\Requests\V3\Dashboard\Harim\GeneralManager\RejectRequest;
use App\Http\Requests\V3\Dashboard\Harim\GeneralManager\ShowRequest;
@@ -23,7 +26,7 @@ use App\Http\Traits\ApiResponse;
use App\Models\Harim;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Throwable;
class GeneralManagerController extends Controller
{
@@ -32,7 +35,15 @@ class GeneralManagerController extends Controller
public function index(Request $request): JsonResponse
{
$query = Harim::query()
->where('edareh_shahri_id', '=', auth()->user()->edarate_shahri_id);
->where('province_id', '=', auth()->user()->province_id)
->orderByRaw("
CASE state_id
WHEN 4 THEN 1
WHEN 7 THEN 2
WHEN 15 THEN 3
ELSE 4
END
");
$data = DataTableFacade::run(
$query,
@@ -44,201 +55,173 @@ class GeneralManagerController extends Controller
return response()->json($data);
}
/**
* @throws Throwable
*/
public function rejectRequest(RejectRequest $request, Harim $harim): JsonResponse
{
DB::transaction(function () use ($request, $harim)
{
$action = HarimAction::CONFIRM->value;
$harim->updateStateWithHistory(
action: HarimAction::CONFIRM->value,
description: $request->expert_description,
data: [
'state_id' => HarimStates::EMKAN_PAZIR_NEMEBASHAD->value,
'state_name' => HarimStates::EMKAN_PAZIR_NEMEBASHAD->label(),
]
);
$harim->histories()->create([
'expert_id' => auth()->user()->id,
'previous_state_id' => $harim->state_id,
'previous_state_name' => $harim->state_name,
'expert_description' => $request->expert_description,
'action_id' => $action,
'action_name' => HarimAction::name($action),
]);
$state = HarimStates::EMKAN_PAZIR_NEMEBASHAD->value;
$harim->update([
'state_id' => $state,
'state_name' => HarimStates::name($state),
]);
RejectRequestEvent::dispatch($harim);
});
RejectRequestEvent::dispatch($harim);
return $this->successResponse();
}
/**
* @throws Throwable
*/
public function referRequest(ReferRequest $request, Harim $harim): JsonResponse
{
DB::transaction(function () use ($request, $harim)
{
$action = HarimAction::REFER->value;
$harim->histories()->create([
'expert_id'=> auth()->user()->id,
'previous-state_id' => $harim->state_id,
'previous_state_name' => $harim->state_name,
'export_description' => $request->export_description,
'action_id' => $action,
'action_name' => HarimAction::name($action),
]);
$state = HarimStates::BARESI_TAVASOT_MOAVEN->value;
$harim->update([
'state_id' => $state,
'state_name' => HarimStates::name($state),
]);
});
$harim->updateStateWithHistory(
action: HarimAction::REFER->value,
description: $request->expert_description,
data: [
'state_id' => HarimStates::BARESI_TAVASOT_MOAVEN->value,
'state_name' => HarimStates::BARESI_TAVASOT_MOAVEN->label(),
]
);
return $this->successResponse();
}
/**
* @throws Throwable
*/
public function referFile(ReferFileRequest $request, Harim $harim): JsonResponse
{
DB::transaction(function () use ($request, $harim)
{
$action = HarimAction::REFER->value;
$harim->histories()->create([
'expert_id'=> auth()->user()->id,
'previous-state_id' => $harim->state_id,
'previous_state_name' => $harim->state_name,
'export_description' => $request->export_description,
'action_id' => $action,
'action_name' => HarimAction::name($action),
]);
$state = HarimStates::BARESI_FILE_APLODE_SHODE_TAVASOTE_MOAVEN->value;
$harim->update([
'state_id' => $state,
'state_name' => HarimStates::name($state),
]);
});
$harim->updateStateWithHistory(
action: HarimAction::REFER->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(),
]
);
return $this->successResponse();
}
/**
* @throws Throwable
*/
public function confirmRoadAccessNeed(ConfirmRoadAccessNeedRequest $request, Harim $harim): JsonResponse
{
DB::transaction(function () use ($request, $harim)
{
$action = HarimAction::CONFIRM->value;
$harim->updateStateWithHistory(
action: HarimAction::CONFIRM->value,
description: $request->expert_description,
data: [
'state_id' => HarimStates::ERSAL_BE_PANJAREH_VAHED_NIAZ_BE_RAH_DASTRASI->value,
'state_name' => HarimStates::ERSAL_BE_PANJAREH_VAHED_NIAZ_BE_RAH_DASTRASI->label(),
]
);
$harim->histories()->create([
'expert_id' => auth()->user()->id,
'previous_state_id' => $harim->state_id,
'previous_state_name' => $harim->state_name,
'expert_description' => $request->expert_description,
'action_id' => $action,
'action_name' => HarimAction::name($action),
]);
$state = HarimStates::ERSAL_BE_PANJAREH_VAHED_NIAZ_BE_RAH_DASTRASI->value;
$harim->update([
'state_id' => $state,
'state_name' => HarimStates::name($state),
]);
ConfirmRoadAccessNeedEvent::dispatch($harim);
});
ConfirmRoadAccessNeedEvent::dispatch($harim);
return $this->successResponse();
}
/**
* @throws Throwable
*/
public function confirmNoRoadAccessNeed(ConfirmNoRoadAccessNeedRequest $request, Harim $harim): JsonResponse
{
DB::transaction(function () use ($request, $harim)
{
$action = HarimAction::CONFIRM->value;
$harim->updateStateWithHistory(
action: HarimAction::CONFIRM->value,
description: $request->expert_description,
data: [
'state_id' => HarimStates::ERSAL_BE_PANJAREH_VAHED_BEDONEH_NIAZ_BE_RAH_DASTRASI->value,
'state_name' => HarimStates::ERSAL_BE_PANJAREH_VAHED_BEDONEH_NIAZ_BE_RAH_DASTRASI->label(),
]
);
$harim->histories()->create([
'expert_id' => auth()->user()->id,
'previous_state_id' => $harim->state_id,
'previous_state_name' => $harim->state_name,
'expert_description' => $request->expert_description,
'action_id' => $action,
'action_name' => HarimAction::name($action),
]);
$state = HarimStates::ERSAL_BE_PANJAREH_VAHED_BEDONEH_NIAZ_BE_RAH_DASTRASI->value;
$harim->update([
'state_id' => $state,
'state_name' => HarimStates::name($state),
]);
ConfirmNoRoadAccessNeedEvent::dispatch($harim);
});
ConfirmNoRoadAccessNeedEvent::dispatch($harim);
return $this->successResponse();
}
/**
* @throws Throwable
*/
public function confirmRoadAccessEditNeed(ConfirmRoadAccessEditNeedRequest $request, Harim $harim): JsonResponse
{
DB::transaction(function () use ($request, $harim)
{
$action = HarimAction::CONFIRM->value;
$harim->updateStateWithHistory(
action: HarimAction::CONFIRM->value,
description: $request->expert_description,
data: [
'state_id' => HarimStates::UPDATE_RAHE_DASTRASI_BARGOZARE_SHODE->value,
'state_name' => HarimStates::UPDATE_RAHE_DASTRASI_BARGOZARE_SHODE->label(),
]
);
$harim->histories()->create([
'expert_id' => auth()->user()->id,
'previous_state_id' => $harim->state_id,
'previous_state_name' => $harim->state_name,
'expert_description' => $request->expert_description,
'action_id' => $action,
'action_name' => HarimAction::name($action),
]);
$state = HarimStates::UPDATE_FILE_BARGOZARE_SHODE->value;
$harim->update([
'state_id' => $state,
'state_name' => HarimStates::name($state),
]);
ConfirmRoadAccessEditNeedEvent::dispatch($harim);
});
ConfirmRoadAccessEditNeedEvent::dispatch($harim);
return $this->successResponse();
}
/**
* @throws Throwable
*/
public function confirmGuaranteeLetterNeed(ConfirmGuaranteeLetterNeedRequest $request, Harim $harim): JsonResponse
{
DB::transaction(function () use ($request, $harim)
{
$action = HarimAction::CONFIRM->value;
$harim->updateStateWithHistory(
action: HarimAction::CONFIRM->value,
description: $request->expert_description,
data: [
'state_id' => HarimStates::DARYAFTE_ARSE_VA_AYAN_NAHAI->value,
'state_name' => HarimStates::DARYAFTE_ARSE_VA_AYAN_NAHAI->label(),
]
);
$harim->histories()->create([
'expert_id' => auth()->user()->id,
'previous_state_id' => $harim->state_id,
'previous_state_name' => $harim->state_name,
'expert_description' => $request->expert_description,
'action_id' => $action,
'action_name' => HarimAction::name($action),
]);
$state = HarimStates::ERSAL_ZEMANAT_NAME_TAVASOTE_KARBAR->value;
$harim->update([
'state_id' => $state,
'state_name' => HarimStates::name($state),
]);
ConfirmGuaranteeLetterNeedEvent::dispatch($harim);
});
ConfirmGuaranteeLetterNeedEvent::dispatch($harim);
return $this->successResponse();
}
public function show(ShowRequest $request, Harim $harim): JsonResponse
{
return $this->successResponse($harim->load('histories'));
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_MOAVEN->value,
'state_name' => HarimStates::BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_MOAVEN->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::ETMAM_FARAYAND->value,
'state_name' => HarimStates::ETMAM_FARAYAND->label(),
]
);
PaymentExecutedEvent::dispatch();
return $this->successResponse();
}
}

View File

@@ -6,27 +6,37 @@ 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\FileRejectedRequest;
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\NeedRoadAccessRequest;
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 Illuminate\Support\Facades\DB;
use Throwable;
class HarimOfficeController extends Controller
{
use ApiResponse ;
use ApiResponse;
public function index(Request $request): JsonResponse
{
$query = Harim::query()
->where('edareh_shahri_id', '=', auth()->user()->edarate_shahri_id);
->where('province_id', '=', auth()->user()->province_id)
->orderByRaw("
CASE state_id
WHEN 2 THEN 1
WHEN 5 THEN 2
WHEN 13 THEN 3
ELSE 4
END
");
$data = DataTableFacade::run(
$query,
@@ -38,137 +48,120 @@ class HarimOfficeController extends Controller
return response()->json($data);
}
/**
* @throws Throwable
*/
public function rejectRequest(RejectRequest $request, Harim $harim): JsonResponse
{
DB::transaction(function () use ($request, $harim) {
$action = HarimAction::NO->value;
$harim->histories()->create([
'expert_id' => auth()->user()->id,
'previous_state_id' => $harim->state_id,
'previous_state_name' => $harim->state_name,
'expert_description' => $request->expert_description,
'action_id' => $action,
'action_name' => HarimAction::name($action),
]);
$state = HarimStates::BARESI_TAVASOT_MOAVEN->value;
$harim->update([
'state_id' => $state,
'state_name' => HarimStates::name($state),
$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
{
DB::transaction(function () use ($request,$harim) {
$action = HarimAction::YES->value;
$harim->histories()->create([
'expert_id' => auth()->user()->id,
'previous_state_id' => $harim->state_id,
'previous_state_name' => $harim->state_name,
'expert_description' => $request->expert_description,
'action_id' => $action,
'action_name' => HarimAction::name($action),
]);
$state = HarimStates::BARESI_TAVASOT_MOAVEN->value;
$harim ->update([
'state_id' => $state,
'state_name' => HarimStates::name($state),
$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
]);
});
'need_payment' => $request->need_payment,
]
);
return $this->successResponse();
}
/**
* @throws Throwable
*/
public function withoutRoadAccess(WithoutRoadAccessRequest $request, Harim $harim): JsonResponse
{
DB::transaction(function () use ($request,$harim) {
$action = HarimAction::YES->value;
$harim->histories()->create([
'expert_id' => auth()->user()->id,
'previous_state_id' => $harim->state_id,
'previous_state_name' => $harim->state_name,
'expert_description' => $request->expert_description,
'action_id' => $action,
'action_name' => HarimAction::name($action),
]);
$state = HarimStates::BARESI_TAVASOT_MOAVEN->value;
$harim ->update([
'state_id' => $state,
'state_name' => HarimStates::name($state),
$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
]);
});
'need_payment' => $request->need_payment,
]
);
return $this->successResponse();
}
/**
* @throws Throwable
*/
public function fileAccepted(FileAcceptedRequest $request, Harim $harim): JsonResponse
{
DB::transaction(function () use ($request,$harim) {
$action = HarimAction::YES->value;
$harim->histories()->create([
'expert_id' => auth()->user()->id,
'previous_state_id' => $harim->state_id,
'previous_state_name' => $harim->state_name,
'expert_description' => $request->expert_description,
'action_id' => $action,
'action_name' => HarimAction::name($action),
]);
$state = HarimStates::BARESI_FILE_APLODE_SHODE_TAVASOTE_MOAVEN->value;
$harim ->update([
'state_id' => $state,
'state_name' => HarimStates::name($state),
$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
{
DB::transaction(function () use ($request,$harim) {
$action = HarimAction::NO->value;
$harim->histories()->create([
'expert_id' => auth()->user()->id,
'previous_state_id' => $harim->state_id,
'previous_state_name' => $harim->state_name,
'expert_description' => $request->expert_description,
'action_id' => $action,
'action_name' => HarimAction::name($action),
]);
$state = HarimStates::BARESI_FILE_APLODE_SHODE_TAVASOTE_MOAVEN->value;
$harim ->update([
'state_id' => $state,
'state_name' => HarimStates::name($state),
$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->load('histories'));
return $this->successResponse($harim);
}
public function referToCity(Request $request, Harim $harim)
@@ -181,4 +174,27 @@ class HarimOfficeController extends Controller
'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();
}
}

View File

@@ -11,109 +11,125 @@ use App\Http\Requests\V3\Dashboard\Harim\PanjareVahed\ReceiveNewRequest;
use App\Http\Traits\ApiResponse;
use App\Models\City;
use App\Models\Harim;
use Illuminate\Database\Eloquent\ModelNotFoundException;
use Illuminate\Http\JsonResponse;
use Illuminate\Support\Facades\DB;
class PanjareVahedController extends Controller
{
use ApiResponse;
public function receiveNewRequest(ReceiveNewRequest $request)
public function receiveNewRequest(ReceiveNewRequest $request): JsonResponse
{
$wkt = 'POLYGON((' . implode(',', array_map(fn($c) => "{$c[0]} {$c[1]}", $request->primary_area['coordinates'])) . '))';
$result = DB::selectOne("SELECT ST_AsText(ST_PointOnSurface(ST_GeomFromText(?, 4326))) AS point", [$wkt]);
$wkt = 'POLYGON(('.implode(',', array_map(fn ($c) => "{$c[0]} {$c[1]}", $request->primary_area['coordinates'])).'))';
$result = DB::selectOne('SELECT ST_AsText(ST_PointOnSurface(ST_GeomFromText(?, 4326))) AS point', [$wkt]);
preg_match('/POINT\(([^ ]+) ([^ ]+)\)/', $result->point, $matches);
try {
$city = City::query()
->whereRaw("ST_Contains(
geometry,
ST_GeomFromText('POINT($matches[1] $matches[2])', 4326))"
)
->firstOrFail(['id', 'name_fa', 'province_id']);
}
catch (ModelNotFoundException $exception){
$city = City::query()
->orderByRaw("ST_Distance(
geometry,
ST_GeomFromText('POINT($matches[1] $matches[2])', 4326)) ASC"
)
->first(['id', 'name_fa', 'province_id']);
}
$city = City::findCityWithLatLng(lat:$matches[2], lng: $matches[1]);
$state = HarimStates::BARESI_EDARE_SHAHRESTAN->value;
$harim = Harim::query()->firstOrCreate(['panjare_vahed_id' => $request->request_id],
[
'state_id' => HarimStates::BARESI_EDARE_SHAHRESTAN->value,
'state_name' => HarimStates::BARESI_EDARE_SHAHRESTAN->label(),
'panjare_vahed_id' => $request->request_id,
'national_id' => $request->national_id,
'phone_number' => $request->phone_number,
'request_date' => $request->request_date,
'province_id' => $city->province_id,
'province_name' => $city->province()->first()->name_fa,
'city_id' => $city->id,
'city_name' => $city->name_fa,
'edareh_shahri_id' => $city->edarateShahri()->first()->id,
'requested_organization' => $request->requested_organization,
'plan_group' => $request->plan_group,
'plan_title' => $request->plan_title,
'worksheet_id' => $request->worksheet,
'response_options' => json_encode($request->response_options),
'isic' => $request->isic,
'primary_area' => json_encode($request->primary_area),
'data' => $request->data,
]
);
Harim::query()->create([
'state_id' => $state,
'state_name' => HarimStates::name($state),
'panjare_vahed_id' => $request->request_id,
'national_id' => $request->national_id,
'phone_number' => $request->phone_number,
'request_date' => $request->request_date,
'province_id' => $city->province_id,
'province_name' => $city->province()->first()->name_fa,
'city_id' => $city->id,
'city_name' => $city->name_fa,
'edareh_shahri_id' => $city->edarateShahri()->first()->id,
'requested_organization' => $request->requested_organization,
'plan_group' => $request->plan_group,
'plan_title' => $request->plan_title,
'worksheet_id' => $request->worksheet,
'response_options' => json_encode($request->response_options),
'isic' => $request->isic,
'primary_area' => json_encode($request->primary_area),
$harim->panjarehVahedHistories()->create([
'harim_id' => $harim->id,
'data' => $request->data,
]);
return $this->successResponse([
return response()->json([
'id' => $harim->id,
'city' => $city->edarateShahri()->first()->name_fa,
'province' => $city->province()->first()->name_fa,
'statusCode' => 200,
'message' => 'successful',
]);
}
public function getAccessRoad(GetAccessRoadRequest $request)
public function getAccessRoad(GetAccessRoadRequest $request): JsonResponse
{
$state = HarimStates::BARESI_FILE_APLODE_SHODE_TAVASOTE_DAFTAR_HARIM->value;
$harim = Harim::query()->firstWhere('panjare_vahed_id', '=', $request->request_id);
Harim::query()
->firstWhere('panjare_vahed_id', '=', $request->request_id)
->update([
'state_id' => $state,
'state_name' => HarimStates::name($state),
$harim->panjarehVahedHistories()->create([
'harim_id' => $harim->id,
'data' => $harim->data,
]);
$harim->update([
'state_id' => HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_DAFTAR_HARIM->value,
'state_name' => HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_DAFTAR_HARIM->label(),
'access_road' => json_encode($request->access_road),
'data' => $request->data,
]);
return $this->successResponse();
return response()->json([
'id' => $harim->id,
'statusCode' => 200,
'message' => 'successful',
]);
}
public function getRejectRequest(GetRejectRequest $request)
public function getRejectRequest(GetRejectRequest $request): JsonResponse
{
$state = HarimStates::MOKHALEFAT_BA_DASTGAH->value;
$harim = Harim::query()->firstWhere('panjare_vahed_id', '=', $request->request_id);
Harim::query()
->firstWhere('panjare_vahed_id', '=', $request->request_id)
->update([
'state_id' => $state,
'state_name' => HarimStates::name($state),
]);
$harim->panjarehVahedHistories()->create([
'harim_id' => $harim->id,
'data' => $harim->data,
]);
return $this->successResponse();
$harim->update([
'state_id' => HarimStates::MOKHALEFAT_BA_DASTGAH->value,
'state_name' => HarimStates::MOKHALEFAT_BA_DASTGAH->label(),
'data' => $request->data,
]);
return response()->json([
'id' => $harim->id,
'statusCode' => 200,
'message' => 'successful',
]);
}
public function getFinalPolygons(GetFinalPolygonsRequest $request)
public function getFinalPolygons(GetFinalPolygonsRequest $request): JsonResponse
{
$state = HarimStates::TAEDE_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_DAFTAR_HARIM->value;
$harim = Harim::query()->firstWhere('panjare_vahed_id', '=', $request->request_id);
Harim::query()
->firstWhere('panjare_vahed_id', '=', $request->request_id)
->update([
'state_id' => $state,
'state_name' => HarimStates::name($state),
'final_area' => json_encode($request->final_area),
'final_plan' => json_encode($request->final_plan),
]);
$harim->panjarehVahedHistories()->create([
'harim_id' => $harim->id,
'data' => $harim->data,
]);
return $this->successResponse();
$harim->update([
'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(),
'final_area' => json_encode($request->final_area),
'final_plan' => json_encode($request->final_plan),
'data' => $request->data,
]);
return response()->json([
'id' => $harim->id,
'statusCode' => 200,
'message' => 'successful',
]);
}
}

View File

@@ -12,7 +12,7 @@ use App\Http\Traits\ApiResponse;
use App\Models\Harim;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Throwable;
class ProvinceOfficeController extends Controller
{
@@ -22,7 +22,13 @@ class ProvinceOfficeController extends Controller
{
$user = auth()->user();
$query = Harim::query()
->where('edareh_shahri_id', '=', $user->edarate_shahri_id);
->where('edareh_shahri_id', '=', $user->edarate_shahri_id)
->orderByRaw("
CASE state_id
WHEN 1 THEN 1
ELSE 2
END
");
$data = DataTableFacade::run(
$query,
@@ -30,31 +36,25 @@ class ProvinceOfficeController extends Controller
allowedFilters: ['*'],
allowedSortings: ['*'],
);
return response()->json($data);
return response()->json($data);
}
/**
* @throws Throwable
*/
public function feedback(FeedBackRequest $request, Harim $harim): JsonResponse
{
DB::transaction(function () use ($request,$harim) {
$action = HarimAction::FEEDBACK->value;
$harim->histories()->create([
'expert_id' => auth()->user()->id,
'previous_state_id' => $harim->state_id,
'previous_state_name' => $harim->state_name,
'expert_description' => $request->expert_description,
'action_id' => $action,
'action_name' => HarimAction::name($action),
]);
$state = HarimStates::BARESI_TAVASOT_DAFTAR_HARIM->value;
$harim ->update([
'state_id' => $state,
'state_name' => HarimStates::name($state),
$harim->updateStateWithHistory(
action: HarimAction::FEEDBACK->value,
description: $request->expert_description,
data: [
'state_id' => HarimStates::BARESI_TAVASOT_DAFTAR_HARIM->value,
'state_name' => HarimStates::BARESI_TAVASOT_DAFTAR_HARIM->label(),
'forbidden_area' => $request->input('forbidden_area'),
]);
});
]
);
return $this->successResponse();
}

View File

@@ -6,8 +6,10 @@ 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;
@@ -15,122 +17,139 @@ use App\Http\Traits\ApiResponse;
use App\Models\Harim;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Throwable;
class TechnicalDeputyController extends Controller
{
use ApiResponse;
public function index(Request $request): JsonResponse
{
$query = Harim::query()
->where('edareh_shahri_id', '=', auth()->user()->edarate_shahri_id);
->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: ['*'],
$query,
$request,
allowedFilters: ['*'],
allowedSortings: ['*'],
);
return response()->json($data);
}
/**
* @throws Throwable
*/
public function confirmRequest(ConfirmRequest $request, Harim $harim): JsonResponse
{
DB::transaction(function () use ($request,$harim) {
$action = HarimAction::CONFIRM->value;
$harim->histories()->create([
'expert_id' => auth()->user()->id,
'previous_state_id' => $harim->state_id,
'previous_state_name' => $harim->state_name,
'expert_description' => $request->expert_description,
'action_id' => $action,
'action_name' => HarimAction::name($action),
]);
$state = HarimStates::BARESI_TAVASOT_MODIR_KOL->value;
$harim ->update([
'state_id' => $state,
'state_name' => HarimStates::name($state),
]);
});
$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
{
DB::transaction(function () use ($request,$harim) {
$action = HarimAction::REFER->value;
$harim->histories()->create([
'expert_id' => auth()->user()->id,
'previous_state_id' => $harim->state_id,
'previous_state_name' => $harim->state_name,
'expert_description' => $request->expert_description,
'action_id' => $action,
'action_name' => HarimAction::name($action),
]);
$state = HarimStates::BARESI_TAVASOT_DAFTAR_HARIM->value;
$harim->update([
'state_id' => $state,
'state_name' => HarimStates::name($state),
]);
});
$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
{
DB::transaction(function () use ($request, $harim) {
$action = HarimAction::CONFIRM->value;
$harim->histories()->create([
'expert_id' => auth()->user()->id,
'previous_state_id' => $harim->state_id,
'previous_state_name' => $harim->state_name,
'expert_description' => $request->expert_description,
'action_id' => $action,
'action_name' => HarimAction::name($action),
]);
$state = HarimStates::BARESI_FILE_APLODE_SHODE_TAVASOTE_MODIR_KOL->value;
$harim->update([
'state_id' => $state,
'state_name' => HarimStates::name($state),
]);
});
$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
{
DB::transaction(function () use ($request, $harim) {
$action = HarimAction::REFER->value;
$harim->histories()->create([
'expert_id' => auth()->user()->id,
'previous_state_id' => $harim->state_id,
'previous_state_name' => $harim->state_name,
'expert_description' => $request->expert_description,
'action_id' => $action,
'action_name' => HarimAction::name($action),
]);
$state = HarimStates::BARESI_FILE_APLODE_SHODE_TAVASOTE_DAFTAR_HARIM->value;
$harim->update([
'state_id' => $state,
'state_name' => HarimStates::name($state),
]);
});
$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->load('histories'));
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();
}
}

View File

@@ -14,18 +14,23 @@ use App\Services\Cartables\Mission\ControlUnitService;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Throwable;
class ControlUnitController extends Controller
{
use ApiResponse;
public function index(Request $request, ControlUnitService $controlUnitService): JsonResponse
{
return response()->json($controlUnitService->datatable($request));
}
/**
* @throws Throwable
*/
public function start(StartRequest $request, Mission $mission): JsonResponse
{
DB::transaction(function () use ($request, $mission) {
DB::transaction(function () use ($mission, $request) {
$mission->histories()->create([
'user_id' => auth()->user()->id,
'previous_state_id' => $mission->state_id,
@@ -36,16 +41,20 @@ class ControlUnitController extends Controller
$mission->update([
'state_id' => $state,
'state_name' => MissionStates::name($state),
'start_time' => now()
'start_time' => now(),
'km' => $request->km,
]);
});
return $this->successResponse();
}
/**
* @throws Throwable
*/
public function finish(FinishRequest $request, Mission $mission): JsonResponse
{
DB::transaction(function () use ($request, $mission) {
DB::transaction(function () use ($mission) {
$mission->histories()->create([
'user_id' => auth()->user()->id,
'previous_state_id' => $mission->state_id,
@@ -63,7 +72,7 @@ class ControlUnitController extends Controller
});
if ($mission->category_id == 2) {
$rpc = new OperatorController();
$rpc = new OperatorController;
$rpc->store($mission);
}

View File

@@ -6,7 +6,6 @@ use App\Http\Controllers\Controller;
use App\Http\Traits\ApiResponse;
use App\Models\Mission;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class DetailController extends Controller
{
@@ -14,7 +13,7 @@ class DetailController extends Controller
public function machines(Mission $mission): JsonResponse
{
return $this->successResponse($mission->machines()->get(['cmms_machines.id', 'cmms_machines.machine_code', 'cmms_machines.car_name', 'cmms_machines.plak_number']));
return $this->successResponse($mission->machine()->get(['id', 'machine_code', 'car_name']));
}
public function rahdaran(Mission $mission): JsonResponse
@@ -28,7 +27,7 @@ class DetailController extends Controller
'code' => $rahdar->code,
'is_driver' => (bool) $rahdar->pivot->is_driver,
];
});
});
return $this->successResponse($rahdaran);
}

View File

@@ -8,11 +8,12 @@ use App\Enums\MissionTypes;
use App\Enums\MissionZones;
use App\Http\Controllers\Controller;
use App\Http\Controllers\V3\Dashboard\RoadPatrol\OperatorController;
use App\Http\Requests\V3\Mission\RequestPortal\NoProcessRequest;
use App\Http\Requests\V3\Mission\RequestPortal\ContinueMissionRequest;
use App\Http\Requests\V3\Mission\RequestPortal\NoProcessRequest;
use App\Http\Requests\V3\Mission\RequestPortal\StoreRequest;
use App\Http\Requests\V3\Mission\RequestPortal\UpdateRequest;
use App\Http\Traits\ApiResponse;
use App\Models\CMMSMachine;
use App\Models\Mission;
use App\Models\RoadObserved;
use App\Services\Cartables\Mission\RequestPortalService;
@@ -20,6 +21,7 @@ use Carbon\Carbon;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Throwable;
class RequestPortalController extends Controller
{
@@ -30,6 +32,9 @@ class RequestPortalController extends Controller
return response()->json($requestPortalService->datatable($request));
}
/**
* @throws Throwable
*/
public function store(StoreRequest $request): JsonResponse
{
DB::transaction(function () use ($request) {
@@ -65,13 +70,6 @@ class RequestPortalController extends Controller
]);
$mission->rahdaran()->sync($request->rahdaran);
if ($category == 3){
RoadObserved::query()
->find($request->road_observed_id)
->missions()
->attach($mission->id);
}
});
return $this->successResponse();
@@ -82,11 +80,14 @@ class RequestPortalController extends Controller
return $this->successResponse($mission);
}
public function continueMission(ContinueMissionRequest $request , Mission $mission): JsonResponse
/**
* @throws Throwable
*/
public function continueMission(ContinueMissionRequest $request, Mission $mission): JsonResponse
{
DB::transaction(function () use ($request, $mission) {
$user = auth()->user();
$mission->update([
'finish_time' => now(),
'state_id' => MissionStates::END_MISSION->value,
@@ -95,6 +96,7 @@ class RequestPortalController extends Controller
$state = MissionStates::START_MISSION->value;
$category = $request->category_id;
$machine = CMMSMachine::query()->find($request->machine_id);
$newMission = Mission::query()->create([
'user_id' => $user->id,
@@ -118,24 +120,21 @@ class RequestPortalController extends Controller
'category_id' => $category,
'category_name' => MissionCategory::name($category),
'explanation' => $request->explanation,
'start_time' => now()
'start_time' => now(),
'machine_id' => $machine->id,
'machine_code' => $machine->machine_code,
]);
$newMission->rahdaran()->sync($request->rahdaran);
$newMission->machines()->attach($request->machines);
$newMission->rahdaran()->attach($request->driver, ['is_driver' => true]);
if ($category == 3){
RoadObserved::query()
->find($request->road_observed_id)
->missions()
->attach( $newMission->id);
}
$newMission->rahdaran()->sync($request->rahdaran);
$newMission->rahdaran()->attach($request->driver, ['is_driver' => true]);
});
return $this->successResponse();
}
/**
* @throws Throwable
*/
public function update(UpdateRequest $request, Mission $mission): JsonResponse
{
DB::transaction(function () use ($mission, $request) {
@@ -159,33 +158,35 @@ class RequestPortalController extends Controller
]);
$mission->rahdaran()->sync($request->rahdaran);
if ($request->category_id == 3){
RoadObserved::query()
->find($request->road_observed_id)
->missions()
->sync($mission->id);
}
});
return $this->successResponse();
}
/**
* @throws Throwable
*/
public function destroy(Mission $mission): JsonResponse
{
DB::transaction(function () use ($mission) {
$mission->rahdaran()->detach();
$mission->delete();
});
return $this->successResponse();
}
/**
* @throws Throwable
*/
public function noProcess(NoProcessRequest $request): JsonResponse
{
DB::transaction(function () use ($request) {
$start = Carbon::parse($request->start_date);
$end = Carbon::parse($request->end_date);
$type = $start->diffInMinutes($end) > 480 ? MissionTypes::NO_PROCESS_ROZANE->value : MissionTypes::NO_PROCESS_SAATY->value;
$user = auth()->user();
$zone= $request->zone;
$zone = $request->zone;
$state = MissionStates::END_MISSION->value;
$mission = Mission::query()->create([
@@ -218,7 +219,7 @@ class RequestPortalController extends Controller
$mission->rahdaran()->attach($request->driver, ['is_driver' => true]);
if ($mission->category_id == 2) {
$rpc = new OperatorController();
$rpc = new OperatorController;
$rpc->store($mission);
}
});

View File

@@ -2,6 +2,7 @@
namespace App\Http\Controllers\V3\Dashboard\Mission;
use App\Enums\CmmsMachineStatus;
use App\Enums\MissionStates;
use App\Http\Controllers\Controller;
use App\Http\Requests\V3\Mission\TransportaionUnit\AllocateRequest;
@@ -13,6 +14,7 @@ use App\Services\Cartables\Mission\TransportationUnitService;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Throwable;
class TransportationUnitController extends Controller
{
@@ -23,37 +25,47 @@ class TransportationUnitController extends Controller
return response()->json($transportationUnitService->dataTable($request));
}
/**
* @throws Throwable
*/
public function allocate(AllocateRequest $request, Mission $mission): JsonResponse
{
DB::transaction(function () use ($request, $mission) {
$mission->machines()->attach($request->machines);
$mission->rahdaran()->attach($request->driver, ['is_driver'=>true]);
$mission->rahdaran()->attach($request->driver, ['is_driver' => true]);
$mission->histories()->create([
'user_id' => auth()->user()->id,
'previous_state_id' => $mission->state_id,
'previous_state_name' => $mission->state_name
'previous_state_name' => $mission->state_name,
]);
$state = MissionStates::PENDING_CONFIRMATION->value;
$machine = CMMSMachine::query()->find($request->machine_id);
$mission->update([
'state_id' => $state,
'state_name' => MissionStates::name($state),
'km' => $request->km
'machine_id' => $machine->id,
'machine_code' => $machine->machine_code,
]);
});
return $this->successResponse();
}
/**
* @throws Throwable
*/
public function deallocate(DeallocateRequest $request, Mission $mission): JsonResponse
{
DB::transaction(function () use ($request, $mission) {
$mission->rahdaran()->wherePivot('is_driver', '=', true)->detach();
$mission->histories()->create([
'user_id' => auth()->user()->id,
'previous_state_id' => $mission->state_id,
'previous_state_name' => $mission->state_name,
'user_description' => $request->description
'user_description' => $request->description,
]);
$state = MissionStates::REJECT_BY_TRANSPORTATION->value;
@@ -61,7 +73,9 @@ class TransportationUnitController extends Controller
$mission->update([
'state_id' => $state,
'state_name' => MissionStates::name($state),
'description' => $request->description
'description' => $request->description,
'machine_id' => null,
'machine_code' => null,
]);
});
@@ -73,6 +87,7 @@ class TransportationUnitController extends Controller
return $this->successResponse(
CMMSMachine::query()
->where('car_type', '=', $mission->car_type)
// ->where('status', '<>', CmmsMachineStatus::DAR_MAMORIAT->value)
->get(['machine_code', 'id', 'plak_number', 'car_name'])
);
}

View File

@@ -0,0 +1,79 @@
<?php
namespace App\Http\Controllers\V3\Dashboard\Mission;
use App\Enums\MissionCategory;
use App\Enums\MissionStates;
use App\Enums\MissionTypes;
use App\Enums\MissionZones;
use App\Http\Controllers\Controller;
use App\Http\Controllers\V3\Dashboard\RoadPatrol\OperatorController;
use App\Http\Requests\V3\Mission\RequestPortal\NoProcessRequest;
use App\Http\Traits\ApiResponse;
use App\Models\Mission;
use App\Services\Cartables\Mission\DailyMoveMachineService;
use Carbon\Carbon;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class ViolationManagementController extends Controller
{
use ApiResponse;
public function index(Request $request, DailyMoveMachineService $dailyMoveMachineService): JsonResponse
{
$data = $dailyMoveMachineService->dataTable($request);
return response()->json($data);
}
public function noProcess(NoProcessRequest $request): JsonResponse
{
DB::transaction(function () use ($request) {
$start = Carbon::parse($request->start_date);
$end = Carbon::parse($request->end_date);
$type = $start->diffInMinutes($end) > 480 ? MissionTypes::NO_PROCESS_ROZANE->value : MissionTypes::NO_PROCESS_SAATY->value;
$user = auth()->user();
$zone = $request->zone;
$state = MissionStates::END_MISSION->value;
$mission = Mission::query()->create([
'user_id' => $user->id,
'username' => $user->username,
'province_id' => $user->province_id,
'province_name' => $user->province_fa,
'edare_shahri_id' => $user->edarate_shahri_id ?? null,
'edare_shahri_name' => $user->edarate_shahri_name ?? null,
'zone' => $zone,
'zone_fa' => MissionZones::name($zone),
'type' => $type,
'type_fa' => MissionTypes::name($type),
'start_date' => $request->start_date,
'end_date' => $request->end_date,
'end_point' => $request->end_point,
'area' => json_encode($request->area),
'category_id' => $request->category_id,
'category_name' => MissionCategory::name($request->category_id),
'start_time' => $request->start_date,
'finish_time' => $request->end_date,
'state_id' => $state,
'state_name' => MissionStates::name($state),
'explanation' => $request->explanation,
'request_date' => now(),
]);
$mission->rahdaran()->sync($request->rahdaran);
$mission->machines()->attach($request->machines);
$mission->rahdaran()->attach($request->driver, ['is_driver' => true]);
if ($mission->category_id == 2) {
$rpc = new OperatorController;
$rpc->store($mission);
}
});
return $this->successResponse();
}
}

View File

@@ -16,6 +16,7 @@ use Illuminate\Validation\ValidationException;
class ObservedItemController extends Controller
{
use ApiResponse;
public function show(ObservedItem $observedItem): JsonResponse
{
return $this->successResponse($observedItem);
@@ -23,9 +24,9 @@ class ObservedItemController extends Controller
public function filter(Request $request): JsonResponse
{
$columns = array(
$columns = [
'id', 'item_id', 'road_patrol_id', 'roadPatrol.start_time', 'roadPatrol.end_time',
);
];
$allowedFilters = $columns;
$allowedSortings = $columns;
@@ -76,7 +77,7 @@ class ObservedItemController extends Controller
$item_end_coordinates = null;
if ($info_item->needs_end_point) {
if (!isset($item['end_point'])) {
if (! isset($item['end_point'])) {
throw ValidationException::withMessages([
"observed_items.$index.end_point" => __('validation.required', ['attribute' => 'end_point']),
]);

View File

@@ -7,7 +7,6 @@ use App\Http\Controllers\Controller;
use App\Http\Requests\V3\Otp\GetOtpTokenRequest;
use App\Http\Traits\ApiResponse;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class OtpManagementController extends Controller
{

View File

@@ -6,7 +6,6 @@ use App\Http\Controllers\Controller;
use App\Http\Traits\ApiResponse;
use App\Models\RoadItemsProject;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class DetailController extends Controller
{

View File

@@ -11,12 +11,10 @@ use App\Http\Requests\V3\RoadItem\Operator\UpdateRequest;
use App\Http\Traits\ApiResponse;
use App\Models\EdarateShahri;
use App\Models\InfoItem;
use App\Models\Mission;
use App\Models\ObservedItem;
use App\Models\RoadItemsProject;
use App\Services\Cartables\RoadItem\OperatorService;
use App\Services\NominatimService;
use Carbon\Carbon;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
@@ -29,24 +27,28 @@ use Throwable;
class OperatorController extends Controller
{
use ApiResponse;
/**
* Display a listing of the resource.
*/
public function index(Request $request, OperatorService $operatorService): JsonResponse
{
$data = $operatorService->dataTable($request);
return response()->json($data);
}
public function excel(Request $request, OperatorService $operatorService): BinaryFileResponse
{
$name = 'گزارش از کارتابل عملیات فعالیت روزانه ' . verta()->now()->format('Y-m-d H:i') . '.xlsx';
$name = 'گزارش از کارتابل عملیات فعالیت روزانه '.verta()->now()->format('Y-m-d H:i').'.xlsx';
$data = $operatorService->dataTable($request, true);
return Excel::download(new OperatorCartableReport($data['data']), $name);
}
/**
* Store a newly created resource in storage.
*
* @throws Throwable
*/
public function store(StoreRequest $request, NominatimService $nominatimService): JsonResponse
@@ -55,13 +57,13 @@ class OperatorController extends Controller
->where('sub_item', $request->sub_item_id)
->firstOrFail();
if ($info_item->needs_end_point && !$request->end_point) {
if ($info_item->needs_end_point && ! $request->end_point) {
throw ValidationException::withMessages([
'end_point' => __('validation.required', ['attribute' => 'end_point']),
]);
}
if ((!$request->before_image || !$request->after_image) && $info_item->needs_image) {
if ((! $request->before_image || ! $request->after_image) && $info_item->needs_image) {
throw ValidationException::withMessages([
'before_image' => __('validation.required', ['attribute' => 'before_image']),
'after_image' => __('validation.required', ['attribute' => 'after_image']),
@@ -72,8 +74,7 @@ class OperatorController extends Controller
$end_coordinates = $info_item->needs_end_point ? explode(',', $request->end_point) : null;
DB::transaction(function () use ($request, $nominatimService,
$start_coordinates, $end_coordinates, $info_item)
{
$start_coordinates, $end_coordinates, $info_item) {
$user = auth()->user();
$road_item = RoadItemsProject::query()->create([
'user_id' => $user->id,
@@ -103,7 +104,7 @@ class OperatorController extends Controller
'edarat_name' => $user->edarate_shahri_name,
'activity_date' => $request->activity_date,
'activity_time' => $request->activity_time,
'activity_date_time' => $request->activity_date." ".$request->activity_time,
'activity_date_time' => $request->activity_date.' '.$request->activity_time,
'is_new' => 1,
'mission_id' => $request->mission_id,
]);
@@ -111,13 +112,13 @@ class OperatorController extends Controller
if ($request->has('after_image')) {
$road_item->files()->create([
'path' => FileFacade::save($request->file('after_image'),
"/road_items_projects_new/{$road_item->id}/after")
"/road_items_projects_new/{$road_item->id}/after"),
]);
}
if ($request->has('before_image')) {
$road_item->files()->create([
'path' => FileFacade::save($request->file('before_image'),
"/road_items_projects_new/{$road_item->id}/before")
"/road_items_projects_new/{$road_item->id}/before"),
]);
}
@@ -152,7 +153,7 @@ class OperatorController extends Controller
$end_coordinates = null;
if ($info_item->needs_end_point) {
if (!$request->end_point) {
if (! $request->end_point) {
throw ValidationException::withMessages([
'end_point' => __('validation.required', ['attribute' => 'end_point']),
]);
@@ -166,14 +167,14 @@ class OperatorController extends Controller
FileFacade::delete($roadItemsProject->files[0]->path, true);
$roadItemsProject->files[0]->update([
'path' => FileFacade::save($request->file('after_image'),
"/road_items_projects_new/{$roadItemsProject->id}/after")
"/road_items_projects_new/{$roadItemsProject->id}/after"),
]);
}
if ($request->has('before_image')) {
FileFacade::delete($roadItemsProject->files[1]->path, true);
$roadItemsProject->files[1]->update([
'path' => FileFacade::save($request->file('before_image'),
"/road_items_projects_new/{$roadItemsProject->id}/before")
"/road_items_projects_new/{$roadItemsProject->id}/before"),
]);
}
}
@@ -193,7 +194,6 @@ class OperatorController extends Controller
$roadItemsProject->cmmsMachines()->sync($request->machines_id);
$roadItemsProject->missions()->sync($request->mission_id);
auth()->user()->addActivityComplete(1155);
});

View File

@@ -94,8 +94,9 @@ class ReportController extends Controller
public function countryActivityExcelPerItem(Request $request, ReportService $reportService): BinaryFileResponse
{
auth()->user()->addActivityComplete(1034);
$name = 'گزارش کشوری از فعالیت روزانه و جاری - جدول 1 ' . verta()->now()->format('Y-m-d H-i') . '.xlsx';
$name = 'گزارش کشوری از فعالیت روزانه و جاری - جدول 1 '.verta()->now()->format('Y-m-d H-i').'.xlsx';
$activities = $reportService->countryActivityPerItem($request);
return Excel::download(new CountryActivityPerItemReport([
'activities' => $activities,
'provinces' => Province::all(['id', 'name_fa']),
@@ -106,8 +107,9 @@ class ReportController extends Controller
public function provinceActivityExcelPerItem(Request $request, ReportService $reportService): BinaryFileResponse
{
auth()->user()->addActivityComplete(1034);
$name = 'گزارش استانی از فعالیت روزانه و جاری - جدول 1 ' . verta()->now()->format('Y-m-d H-i') . '.xlsx';
$name = 'گزارش استانی از فعالیت روزانه و جاری - جدول 1 '.verta()->now()->format('Y-m-d H-i').'.xlsx';
$activities = $reportService->provinceActivityPerItem($request);
return Excel::download(new ProvinceActivityPerItemReport([
'activities' => $activities,
'edarateShahri' => EdarateShahri::query()->where('province_id', '=', $request->province_id)->get(['id', 'name_fa']),
@@ -118,7 +120,7 @@ class ReportController extends Controller
public function countryActivityExcelPerSubItem(Request $request, ReportService $reportService): BinaryFileResponse
{
auth()->user()->addActivityComplete(1034);
$name = "گزارش کشوری از فعالیت روزانه و جاری - جدول 2 " . verta()->now()->format('Y-m-d H-i') . '.xlsx';
$name = 'گزارش کشوری از فعالیت روزانه و جاری - جدول 2 '.verta()->now()->format('Y-m-d H-i').'.xlsx';
$activities = $reportService->countryActivityPerSubItem($request);
$subItems = InfoItem::query()
->where('item', $request->item)
@@ -127,7 +129,7 @@ class ReportController extends Controller
return Excel::download(new CountryActivityPerSubItemReport([
'activities' => $activities,
'provinces' => Province::all(['id', 'name_fa']),
'subItems' => $subItems
'subItems' => $subItems,
]), $name);
}
@@ -135,7 +137,7 @@ class ReportController extends Controller
{
auth()->user()->addActivityComplete(1034);
$activities = $reportService->provinceActivityPerSubItem($request);
$name = "گزارش استانی از فعالیت روزانه و جاری - جدول 2 " . verta()->now()->format('Y-m-d H-i') . '.xlsx';
$name = 'گزارش استانی از فعالیت روزانه و جاری - جدول 2 '.verta()->now()->format('Y-m-d H-i').'.xlsx';
$subItems = InfoItem::query()
->where('item', $request->item)
->get(['id', 'item', 'item_str', 'sub_item_str', 'sub_item_unit', 'sub_item']);
@@ -154,16 +156,16 @@ class ReportController extends Controller
$subId = $request->sub_id;
$item = $request->item;
$status = $request->status;
$dateFrom = $request->date_from ? $request->date_from . ' 00:00:00' : now()->startOfDay()->toDateTimeString();
$dateTo = $request->date_to ? $request->date_to . ' 23:59:59' : now()->addDay()->startOfDay()->toDateTimeString();
$dateFrom = $request->date_from ? $request->date_from.' 00:00:00' : now()->startOfDay()->toDateTimeString();
$dateTo = $request->date_to ? $request->date_to.' 23:59:59' : now()->addDay()->startOfDay()->toDateTimeString();
$data = RoadItemsProject::query()
->where('is_new', '=', 1)
->when($provinceId, fn($query, $provinceId) => $query->where('road_items_projects.province_id', '=', $provinceId))
->when($cityId, fn($query, $cityId) => $query->where('road_items_projects.city_id', '=', $cityId))
->when($subId, fn($query, $subId) => $query->where('sub_items', 'like', '%' . $subId . '%'))
->when($item, fn($query, $item) => $query->where('item', '=', $item))
->when(!is_null($status), fn($query, $status) => $query->where('status', '=', $status))
->when($provinceId, fn ($query, $provinceId) => $query->where('road_items_projects.province_id', '=', $provinceId))
->when($cityId, fn ($query, $cityId) => $query->where('road_items_projects.city_id', '=', $cityId))
->when($subId, fn ($query, $subId) => $query->where('sub_items', 'like', '%'.$subId.'%'))
->when($item, fn ($query, $item) => $query->where('item', '=', $item))
->when(! is_null($status), fn ($query, $status) => $query->where('status', '=', $status))
->leftJoin('users', 'users.id', '=', 'road_items_projects.user_id')
->whereBetween('road_items_projects.activity_date', [$dateFrom, $dateTo])
->select('road_items_projects.id as i', 'start_lat as l', 'start_lng as g', 'status')

View File

@@ -7,11 +7,9 @@ use App\Exports\V3\RoadItemsProjects\SupervisorCartableReport;
use App\Http\Controllers\Controller;
use App\Http\Requests\V3\RoadItem\Supervisor\ConfirmRequest;
use App\Http\Requests\V3\RoadItem\Supervisor\RejectRequest;
use App\Http\Requests\V3\RoadItem\VerifyBySupervisorRequest;
use App\Http\Traits\ApiResponse;
use App\Models\RoadItemsProject;
use App\Services\Cartables\RoadItem\SupervisorService;
use App\Services\Cartables\RoadItemTableService;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
@@ -47,8 +45,9 @@ class SupervisorController extends Controller
*/
public function excel(Request $request, SupervisorService $supervisorService): BinaryFileResponse
{
$name = 'گزارش از کارتابل ارزیابی فعالیت روزانه ' . verta()->now()->format('Y-m-d H:i') . '.xlsx';
$name = 'گزارش از کارتابل ارزیابی فعالیت روزانه '.verta()->now()->format('Y-m-d H:i').'.xlsx';
$data = $supervisorService->dataTable($request, true);
return Excel::download(new SupervisorCartableReport($data['data']), $name);
}
@@ -107,7 +106,7 @@ class SupervisorController extends Controller
'supervisor_id' => null,
'supervisor_description' => null,
'supervising_time' => null,
'supervisor_name' => null,
'supervisor_name' => null,
]);
auth()->user()->addActivityComplete(1150);
});

View File

@@ -13,9 +13,8 @@ use App\Models\City;
use App\Models\Province;
use App\Models\RahdariPoint;
use App\Models\RahdariPointHistory;
use Illuminate\Http\Request;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class RoadMaintenanceStationController extends Controller
{
@@ -27,7 +26,7 @@ class RoadMaintenanceStationController extends Controller
$user->addActivityComplete(1019);
$query = RahdariPoint::query()
->when($user->hasPermissionTo('show-tollhouse-province') && !$user->hasPermissionTo('show-tollhouse'),
->when($user->hasPermissionTo('show-tollhouse-province') && ! $user->hasPermissionTo('show-tollhouse'),
fn ($query) => $query->where('province_id', $user->province_id)
);
@@ -56,7 +55,7 @@ class RoadMaintenanceStationController extends Controller
'name' => $request->name,
'status' => $request->status,
'type' => $request->type,
'type_fa' =>RoadMaintenanceStationTypes::name($request->type),
'type_fa' => RoadMaintenanceStationTypes::name($request->type),
'team_num' => $request->team_num,
'staff_num' => $request->staff_num,
'phone' => $request->phone,
@@ -85,7 +84,7 @@ class RoadMaintenanceStationController extends Controller
foreach ($uploadPaths as $field => $path) {
if ($request->hasFile($field)) {
$station->files()->create([
'path' => FileFacade::save($request->$field, $path)
'path' => FileFacade::save($request->$field, $path),
]);
}
}
@@ -112,17 +111,17 @@ class RoadMaintenanceStationController extends Controller
RahdariPointHistory::query()->create([
'user_id' => $request->user()->id,
'point_id' => $rahdariPoint->id,
'previous_province_id' => $province->id,
'previous_province_name' => $province->name_fa,
'previous_city_id' => $city->id,
'previous_city_name' => $city->name_fa,
'previous_name' => $rahdariPoint->name,
'previous_status' => $rahdariPoint->status,
'previous_type' => $rahdariPoint->type,
'point_id' => $rahdariPoint->id,
'previous_province_id' => $rahdariPoint->province_id,
'previous_province_name' => $rahdariPoint->province_name,
'previous_city_id' => $rahdariPoint->city_id,
'previous_city_name' => $rahdariPoint->city_name,
'previous_name' => $rahdariPoint->name,
'previous_status' => $rahdariPoint->status,
'previous_type' => $rahdariPoint->type,
'previous_team_num' => $rahdariPoint->team_num,
'previous_staff_num' => $rahdariPoint->staff_num,
'previous_phone' => $rahdariPoint->phone,
'previous_phone' => $rahdariPoint->phone,
'previous_responsible_name' => $rahdariPoint->responsible_name,
'previous_responsible_mobile' => $rahdariPoint->responsible_mobile,
'previous_successor_name' => $rahdariPoint->successor_name,
@@ -130,21 +129,21 @@ class RoadMaintenanceStationController extends Controller
'previous_machines_light' => $rahdariPoint->machines_light,
'previous_machines_sheavy' => $rahdariPoint->machines_sheavy,
'previous_machines_heavy' => $rahdariPoint->machines_heavy,
'previous_lat' => $rahdariPoint->lat,
'previous_lng' => $rahdariPoint->lng,
'previous_lat' => $rahdariPoint->lat,
'previous_lng' => $rahdariPoint->lng,
'new_files' => json_encode($rahdariPoint->files),
'area' => json_encode($rahdariPoint->area),
]);
$rahdariPoint->update([
$rahdariPoint->update([
'province_id' => $province->id,
'province_name' => $province->name_fa,
'city_id' => $city->id,
'city_name' => $city->name_fa,
'name' => $request->input('name'),
'status' => $request->input('status'),
'type' => $request->input('type',),
'type_fa' => RoadMaintenanceStationTypes::name($request->type) ?? $rahdariPoint->type_fa,
'type' => $request->input('type'),
'type_fa' => RoadMaintenanceStationTypes::name($request->type) ?? $rahdariPoint->type_fa,
'team_num' => $request->input('team_num'),
'staff_num' => $request->input('staff_num'),
'phone' => $request->input('phone'),
@@ -224,4 +223,9 @@ class RoadMaintenanceStationController extends Controller
allowedSelects: ['id', 'lat', 'lng', 'status', 'type'],
));
}
public function giveListToFms(): JsonResponse
{
return $this->successResponse(RahdariPoint::all(['id', 'name', 'lat', 'lng', 'area']));
}
}

View File

@@ -36,8 +36,9 @@ class OperatorController
public function cartableReport(Request $request, OperatorService $operatorService): BinaryFileResponse
{
$name = 'گزارش از کارتابل عملیات واکنش سریع ' . verta()->now()->format('Y-m-d H:i') . '.xlsx';
$name = 'گزارش از کارتابل عملیات واکنش سریع '.verta()->now()->format('Y-m-d H:i').'.xlsx';
$data = $operatorService->cartableIndex($request);
return Excel::download(new OperatorCartableReport($data['data']), $name);
}
@@ -54,8 +55,9 @@ class OperatorController
*/
public function complaintsReport(Request $request, OperatorService $operatorService): BinaryFileResponse
{
$name = 'گزارش از رسیدگی به شکایات واکنش سریع ' . verta()->now()->format('Y-m-d H:i') . '.xlsx';
$name = 'گزارش از رسیدگی به شکایات واکنش سریع '.verta()->now()->format('Y-m-d H:i').'.xlsx';
$data = $operatorService->complaintsIndex($request);
return Excel::download(new ComplaintsReport($data['data']), $name);
}
@@ -79,7 +81,7 @@ class OperatorController
'previous_rms_start_latlng' => $roadObserved->rms_start_latlng,
'previous_rms_end_latlng' => $roadObserved->rms_end_latlng,
'previous_rms_description' => $roadObserved->rms_description,
'new_files' => json_encode([])
'new_files' => json_encode([]),
];
$files_path = [];
@@ -132,7 +134,7 @@ class OperatorController
'previous_rms_start_latlng' => $roadObserved->rms_start_latlng,
'previous_rms_end_latlng' => $roadObserved->rms_end_latlng,
'previous_rms_description' => $roadObserved->rms_description,
'new_files' => json_encode([])
'new_files' => json_encode([]),
];
if ($request->rms_status == 1) {
@@ -195,7 +197,7 @@ class OperatorController
'from_edareh' => $roadObserved->edarate_shahri_id,
'to_edareh' => $request->edarate_shahri_id,
'from_province' => $roadObserved->province_id,
'to_province' => $province->id
'to_province' => $province->id,
]);
$roadObserved->update([
@@ -218,7 +220,7 @@ class OperatorController
->orderBy('created_at', 'desc')
->get([
'created_at', 'description', 'from_edareh', 'to_edareh',
'from_province', 'to_province', 'user_id'
'from_province', 'to_province', 'user_id',
]);
foreach ($data as $key => $value) {
@@ -227,8 +229,9 @@ class OperatorController
$data[$key]->from_province = Province::query()->find($value->from_province)->name_fa ?? null;
$data[$key]->to_province = Province::query()->find($value->to_province)->name_fa ?? null;
$user = User::query()->find($value->user_id);
$data[$key]->user = $user->first_name . ' ' . $user->last_name;
$data[$key]->user = $user->first_name.' '.$user->last_name;
}
return $this->successResponse($data);
}
}
}

View File

@@ -8,7 +8,6 @@ use App\Exports\V3\RoadObservation\ProvinceCartableReport;
use App\Facades\DataTable\DataTableFacade;
use App\Http\Traits\ApiResponse;
use App\Models\EdarateShahri;
use App\Models\Province;
use App\Models\RoadObserved;
use App\Services\Cartables\RoadObservation\ReportService;
use App\Services\Cartables\SafetyAndPrivacy\OperatorService;
@@ -24,13 +23,15 @@ class ReportController
public function index(Request $request, ReportService $reportService): JsonResponse
{
$data = $reportService->index($request);
return response()->json($data['data']);
}
public function excel(Request $request, ReportService $reportService): BinaryFileResponse
{
$name = 'گزارش رسیدگی به شکایات واکنش سریع ' . verta()->now()->format('Y-m-d H:i') . '.xlsx';
$name = 'گزارش رسیدگی به شکایات واکنش سریع '.verta()->now()->format('Y-m-d H:i').'.xlsx';
$data = $reportService->index($request);
return Excel::download(new ReportComplaintsExport($data), $name);
}
@@ -48,6 +49,7 @@ class ReportController
public function countryActivity(Request $request, ReportService $reportService): JsonResponse
{
$data = $reportService->countryActivity($request);
return $this->successResponse($data);
}
@@ -59,22 +61,26 @@ class ReportController
return $this->successResponse([
'activities' => $data,
'edarateShahri' => EdarateShahri::where('province_id', $request->province_id)->get(['id', 'name_fa']),
'edarateShahri' => EdarateShahri::query()->where('province_id', $request->province_id)->get(['id', 'name_fa']),
]);
}
public function countryActivityExcel(Request $request, OperatorService $operatorService): BinaryFileResponse
public function countryActivityExcel(Request $request, ReportService $reportService): BinaryFileResponse
{
$data = $operatorService->countryActivity($request);
$name = 'گزارش رسیدگی به شکایات واکنش سریع' . verta()->now()->format('Y-m-d H-i') . '.xlsx';
$data = $reportService->countryActivity($request);
$name = 'گزارش رسیدگی به شکایات واکنش سریع'.verta()->now()->format('Y-m-d H-i').'.xlsx';
return Excel::download(new CountryCartableReport($data), $name);
}
public function provinceActivityExcel(Request $request, OperatorService $operatorService): BinaryFileResponse
public function provinceActivityExcel(Request $request, ReportService $reportService): BinaryFileResponse
{
$data = $operatorService->provinceActivity(
$data = $reportService->provinceActivity(
province_id: $request->input('province_id')
);
$name = 'گزارش رسیدگی به شکایات واکنش سریع' . verta()->now()->format('Y-m-d H-i') . '.xlsx';
return Excel::download(new ProvinceCartableReport($data, $request), $name);
$name = 'گزارش رسیدگی به شکایات واکنش سریع'.verta()->now()->format('Y-m-d H-i').'.xlsx';
return Excel::download(new ProvinceCartableReport($data), $name);
}
}

View File

@@ -10,7 +10,6 @@ use App\Http\Traits\ApiResponse;
use App\Models\RoadObservationHistory;
use App\Models\RoadObserved;
use App\Services\Cartables\RoadObservation\SupervisorService;
use App\Services\Cartables\RoadObservationTableService;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
@@ -48,7 +47,7 @@ class SupervisorController
public function report(Request $request, SupervisorService $supervisorService): BinaryFileResponse
{
$name = 'گزارش از کارتابل ارزیابی واکنش سریع '. verta()->now()->format('Y-m-d H:i') . '.xlsx';
$name = 'گزارش از کارتابل ارزیابی واکنش سریع '.verta()->now()->format('Y-m-d H:i').'.xlsx';
$data = $supervisorService->index($request);
return Excel::download(new SupervisorCartableReport($data['data']), $name);
@@ -89,4 +88,4 @@ class SupervisorController
return $this->successResponse();
}
}
}

View File

@@ -9,12 +9,11 @@ use App\Models\RoadPatrol;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class DetailController extends Controller
{
use ApiResponse;
public function map(Request $request): JsonResponse
public function map(Request $request): JsonResponse
{
$province = $request->province_id;
$edare_shahri = $request->edare_shahri_id;
@@ -25,12 +24,12 @@ class DetailController extends Controller
$date_from = $request->from_date.' 00:00:00';
$date_to = $request->date_to.' 23:59:59';
} else {
$date_from = Date('Y-m-d');
$date_from = date('Y-m-d');
$date_to = new \DateTime('tomorrow');
$date_to = $date_to->format('Y-m-d');
}
$projects = RoadObserved::query()->select(['id', 'lng', 'lat','status'])
$projects = RoadObserved::query()->select(['id', 'lng', 'lat', 'status'])
->whereBetween('created_at', [$date_from, $date_to])
->when($province, function ($query) use ($province) {
return $query->where('province_id', '=', $province);
@@ -49,6 +48,7 @@ class DetailController extends Controller
return $query->where('status', '=', $status);
})
->get();
return $this->successResponse($projects);
}

View File

@@ -2,9 +2,7 @@
namespace App\Http\Controllers\V3\Dashboard\RoadPatrol;
use App\Exports\V3\RoadPatrols\OperatorCartableReport;
use App\Facades\Sms\Sms;
use App\Http\Controllers\Controller;
use App\Http\Requests\V3\RoadPatrol\DeleteRequest;
use App\Http\Traits\ApiResponse;
@@ -18,7 +16,6 @@ use Illuminate\Support\Facades\Storage;
use Maatwebsite\Excel\Facades\Excel;
use Symfony\Component\HttpFoundation\BinaryFileResponse;
class OperatorController extends Controller
{
use ApiResponse;
@@ -26,12 +23,15 @@ class OperatorController extends Controller
public function index(Request $request, OperatorService $operatorService): JsonResponse
{
$data = $operatorService->dataTable($request);
return response()->json($data);
}
public function excel(Request $request, OperatorService $operatorService): BinaryFileResponse
{
$name = 'گزارش از کارتابل عملیات گشت راهداری ' . verta()->now()->format('Y-m-d H:i') . '.xlsx';
$name = 'گزارش از کارتابل عملیات گشت راهداری '.verta()->now()->format('Y-m-d H:i').'.xlsx';
$data = $operatorService->dataTable($request, true);
return Excel::download(new OperatorCartableReport($data['data']), $name);
}
@@ -42,15 +42,15 @@ class OperatorController extends Controller
$road_patrol = RoadPatrol::query()->create([
'operator_id' => $user->id,
'status' => 0,
'status_fa' => 'در حال بررسی',
'status' => 0,
'status_fa' => 'در حال بررسی',
'province_id' => $mission->province_id,
'province_fa' => $mission->province_name,
'edare_id' => $mission->edare_shahri_id,
'edare_name' => $mission->edare_shahri_name,
'start_time' => $mission->start_time,
'end_time' => $mission->finish_time,
'mission_id' => $mission->id,
'edare_id' => $mission->edare_shahri_id,
'edare_name' => $mission->edare_shahri_name,
'start_time' => $mission->start_time,
'end_time' => $mission->finish_time,
'mission_id' => $mission->id,
]);
auth()->user()->addActivityComplete(1147);
@@ -74,8 +74,8 @@ class OperatorController extends Controller
$road_item = $observed_item->roadItemProject;
if ($road_item->files()->exists()) {
Storage::delete('public/' . $road_item->files[0]->path);
Storage::delete('public/' . $road_item->files[1]->path);
Storage::delete('public/'.$road_item->files[0]->path);
Storage::delete('public/'.$road_item->files[1]->path);
$road_item->files()->delete();
}

View File

@@ -18,16 +18,17 @@ use Symfony\Component\HttpFoundation\BinaryFileResponse;
class ReportController extends Controller
{
use ApiResponse;
public function activitiesOnMap(Request $request): JsonResponse
{
$date_from = $request->from_date ? $request->from_date .' 00:00:00' : now()->startOfDay()->toDateTimeString();
$date_from = $request->from_date ? $request->from_date.' 00:00:00' : now()->startOfDay()->toDateTimeString();
$date_to = $request->date_to ? $request->date_to.' 23:59:59' : now()->addDay()->startOfDay()->toDateTimeString();
$provinceId = $request->province_id;
$edareId = $request->edare_id;
$data = RoadPatrol::query()
->when($provinceId, fn($query, $provinceId) => $query->where('province_id', '=', $provinceId))
->when($edareId, fn($query, $edareId) => $query->where('edare_id', '=', $edareId))
->when($provinceId, fn ($query, $provinceId) => $query->where('province_id', '=', $provinceId))
->when($edareId, fn ($query, $edareId) => $query->where('edare_id', '=', $edareId))
->whereBetween('created_at', [$date_from, $date_to])
->select('id', 'start_lat', 'start_lon')
->get();
@@ -51,11 +52,11 @@ class ReportController extends Controller
'officer_name' => $roadPatrol->officer_name,
'officer_plaque' => $roadPatrol->officer_plaque,
'officer_phone_number' => $roadPatrol->officer_phone_number,
'created_at' => $roadPatrol->created_at
'created_at' => $roadPatrol->created_at,
];
$observed_items = array();
if($roadPatrol->observedItems) {
$observed_items = [];
if ($roadPatrol->observedItems) {
foreach ($roadPatrol->observedItems as $index => $observed_item) {
$observed_items[] = [
'item' => $observed_item->item_name,
@@ -68,8 +69,10 @@ class ReportController extends Controller
}
$data['observed_items'] = $observed_items;
return $this->successResponse($data);
}
public function countryPatrolActivity(Request $request, ReportService $reportService): JsonResponse
{
$activities = $reportService->countryActivity($request);
@@ -78,13 +81,13 @@ class ReportController extends Controller
return $this->successResponse([
'activities' => $activities['data'],
'provinces' => $provinces
'provinces' => $provinces,
]);
}
public function provincePatrolActivity(Request $request, ReportService $reportService): JsonResponse
{
$request->validate(["province_id" => "required",]);
$request->validate(['province_id' => 'required']);
$activities = $reportService->provinceActivity($request);
@@ -101,7 +104,7 @@ class ReportController extends Controller
$activities = $reportService->countryActivity($request);
$provinces = Province::all(['id', 'name_fa']);
$name = 'گزارش از گشت راهداری و ترابری ' . verta()->now()->format('Y-m-d H-i') . '.xlsx';
$name = 'گزارش از گشت راهداری و ترابری '.verta()->now()->format('Y-m-d H-i').'.xlsx';
return Excel::download(new CountryActivity([
'activities' => $activities,
@@ -114,7 +117,7 @@ class ReportController extends Controller
$activities = $reportService->provinceActivity($request);
$edarateShahri = EdarateShahri::query()->where('province_id', '=', $request->province_id)->get(['id', 'name_fa']);
$name = 'گزارش از گشت راهداری و ترابری ' . verta()->now()->format('Y-m-d H-i') . '.xlsx';
$name = 'گزارش از گشت راهداری و ترابری '.verta()->now()->format('Y-m-d H-i').'.xlsx';
return Excel::download(new ProvinceActivity([
'activities' => $activities,

View File

@@ -40,8 +40,9 @@ class SupervisorController extends Controller
*/
public function excel(Request $request, SupervisorService $supervisorService): BinaryFileResponse
{
$name = 'گزارش از کارتابل ارزیابی گشت راهداری ' . verta()->now()->format('Y-m-d H:i') . '.xlsx';
$name = 'گزارش از کارتابل ارزیابی گشت راهداری '.verta()->now()->format('Y-m-d H:i').'.xlsx';
$data = $supervisorService->dataTable($request, true);
return Excel::download(new SupervisorCartableReport($data['data']), $name);
}
}

View File

@@ -0,0 +1,88 @@
<?php
namespace App\Http\Controllers\V3\Dashboard;
use App\Facades\DataTable\DataTableFacade;
use App\Http\Controllers\Controller;
use App\Http\Requests\V3\Dashboard\RoleManageMent\StoreRequest;
use App\Http\Requests\V3\Dashboard\RoleManageMent\UpdateRequest;
use App\Http\Traits\ApiResponse;
use App\Models\Role;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Throwable;
class RoleManagementController extends Controller
{
use ApiResponse;
public function index(Request $request): JsonResponse
{
$data = DataTableFacade::run(
Role::query(),
$request,
allowedFilters: ['*'],
allowedSortings: ['*'],
allowedSelects: ['id', 'name', 'name_fa', 'description']
);
return response()->json($data);
}
/**
* @throws Throwable
*/
public function store(StoreRequest $request): JsonResponse
{
auth()->user()->addActivityComplete(1043);
$role = DB::transaction(function () use ($request) {
$role = Role::create([
'name' => $request->name,
'name_fa' => $request->name_fa,
'description' => $request->description,
'guard_name' => 'web',
]);
$role->givePermissionTo($request->permissions);
});
return $this->successResponse($role);
}
/**
* @throws Throwable
*/
public function update(UpdateRequest $request, Role $role): JsonResponse
{
auth()->user()->addActivityComplete(1044);
DB::transaction(function () use ($request, $role) {
$role->update([
'name' => $request->name,
'name_fa' => $request->name_fa,
'description' => $request->description,
'guard_name' => 'web',
]);
$role->syncPermissions($request->permissions);
});
return $this->successResponse();
}
public function show(Role $role): JsonResponse
{
return $this->successResponse($role);
}
public function destroy(Role $role): JsonResponse
{
auth()->user()->addActivityComplete(1045);
$role->delete();
return $this->successResponse();
}
}

View File

@@ -44,8 +44,9 @@ class OperatorController extends Controller
*/
public function excelReport(Request $request, OperatorService $operatorService): BinaryFileResponse
{
$name = 'گزارش از نگهداری حریم راه ' . verta()->now()->format('Y-m-d H-i') . '.xlsx';
$name = 'گزارش از نگهداری حریم راه '.verta()->now()->format('Y-m-d H-i').'.xlsx';
$data = $operatorService->datatable($request);
return Excel::download(new OperatorCartableReport($data['data']), $name);
}
@@ -59,8 +60,7 @@ class OperatorController extends Controller
->where('item', 17)
->firstOrFail();
DB::transaction(function () use ($request, $coordinates, $item, $nominatimService, $user)
{
DB::transaction(function () use ($request, $coordinates, $item, $nominatimService, $user) {
$step = SafetyAndPrivacySteps::SHENASAEI->value;
$safety_and_privacy = SafetyAndPrivacy::query()->create([
'lat' => $coordinates[0],
@@ -73,7 +73,7 @@ class OperatorController extends Controller
'info_fa' => $item->sub_item_str,
'city_id' => $user->city_id,
'city_fa' => $user->city_fa,
'activity_date_time' => $request->activity_date." ".$request->activity_time,
'activity_date_time' => $request->activity_date.' '.$request->activity_time,
'edare_shahri_id' => $user->edarate_shahri_id,
'edare_shahri_name' => $user->edarate_shahri_name,
'way_id' => $nominatimService->get_way_id_from_nominatim($coordinates[0], $coordinates[1]),
@@ -145,13 +145,13 @@ class OperatorController extends Controller
'step_fa' => SafetyAndPrivacySteps::name($step),
'status' => $status_id,
'status_fa' => SafetyAndPrivacyStatus::name($status_id),
'action_picture' => FileFacade::save($request->action_picture, "safety_and_privacy/{$safetyAndPrivacy->id}/action_picture"),
'finish_picture' => FileFacade::save($request->finish_picture, "safety_and_privacy/{$safetyAndPrivacy->id}/finish_picture"),
'action_picture' => FileFacade::save($request->action_picture, "safety_and_privacy/{$safetyAndPrivacy->id}/action_picture"),
'finish_picture' => FileFacade::save($request->finish_picture, "safety_and_privacy/{$safetyAndPrivacy->id}/finish_picture"),
'evidence_picture' => FileFacade::save($request->evidence_picture, "safety_and_privacy/{$safetyAndPrivacy->id}/evidence_picture"),
'action_picture_document_upload_date' => now(),
'action_date' => $request->action_date,
'is_finished' => true,
'final_description' => 'پیام سیستمی : این عملیات پس از طی تمامی گام ها خاتمه یافت'
'final_description' => 'پیام سیستمی : این عملیات پس از طی تمامی گام ها خاتمه یافت',
]);
$user->addActivityComplete(1136);
@@ -183,8 +183,7 @@ class OperatorController extends Controller
{
FileFacade::deleteDirectory("safety_and_privacy/{$safetyAndPrivacy->id}");
DB::transaction(function () use ($safetyAndPrivacy)
{
DB::transaction(function () use ($safetyAndPrivacy) {
auth()->user()->addActivityComplete(1155);
$safetyAndPrivacy->delete();
});

View File

@@ -41,10 +41,12 @@ class AccessRoadActivityController extends Controller
'edarateShahri' => EdarateShahri::where('province_id', $request->province_id)->get(['id', 'name_fa']),
]);
}
public function countryExcelActivity(Request $request, OperatorService $operatorService): BinaryFileResponse
{
$data = $operatorService->countryActivity(90, $request);
$name = 'گزارش نگهداری حریم راه برای راه دسترسی غیر مجاز ' . verta()->now()->format('Y-m-d H-i') . '.xlsx';
$name = 'گزارش نگهداری حریم راه برای راه دسترسی غیر مجاز '.verta()->now()->format('Y-m-d H-i').'.xlsx';
return Excel::download(new ExcelReport($data), $name);
}
@@ -54,8 +56,8 @@ class AccessRoadActivityController extends Controller
$request,
90,
);
$name = 'گزارش نگهداری حریم راه برای راه دسترسی غیر مجاز ' . verta()->now()->format('Y-m-d H-i') . '.xlsx';
$name = 'گزارش نگهداری حریم راه برای راه دسترسی غیر مجاز '.verta()->now()->format('Y-m-d H-i').'.xlsx';
return Excel::download(new AccessRoadReport($data, $request), $name);
}
}

View File

@@ -18,6 +18,7 @@ use Symfony\Component\HttpFoundation\BinaryFileResponse;
class ConstructionActivityController extends Controller
{
use ApiResponse;
public function countryActivity(Request $request, OperatorService $operatorService): JsonResponse
{
$data = $operatorService->countryActivity(89, $request);
@@ -27,7 +28,8 @@ class ConstructionActivityController extends Controller
'provinces' => Province::all(['id', 'name_fa']),
]);
}
public function provinceActivity(Request $request, OperatorService $operatorService,): JsonResponse
public function provinceActivity(Request $request, OperatorService $operatorService): JsonResponse
{
$data = $operatorService->provinceActivity(
$request,
@@ -47,7 +49,7 @@ class ConstructionActivityController extends Controller
public function countryExcelActivity(Request $request, OperatorService $operatorService): BinaryFileResponse
{
$data = $operatorService->countryActivity(89, $request);
$name = ' گزارش نگهداری حریم راه برای ساخت و ساز غیر مجاز' . verta()->now()->format('Y-m-d H-i') . '.xlsx';
$name = ' گزارش نگهداری حریم راه برای ساخت و ساز غیر مجاز'.verta()->now()->format('Y-m-d H-i').'.xlsx';
return Excel::download(new ExcelReport($data), $name);
}
@@ -62,7 +64,7 @@ class ConstructionActivityController extends Controller
$request,
89,
);
$name = ' گزارش نگهداری حریم راه برای ساخت و ساز غیر مجاز' . verta()->now()->format('Y-m-d H-i') . '.xlsx';
$name = ' گزارش نگهداری حریم راه برای ساخت و ساز غیر مجاز'.verta()->now()->format('Y-m-d H-i').'.xlsx';
return Excel::download(new ConstructionReport($data, $request), $name);
}

View File

@@ -27,6 +27,7 @@ class UtilityPassingActivityController extends Controller
'provinces' => Province::all(['id', 'name_fa']),
]);
}
public function provinceActivity(Request $request, OperatorService $operatorService): JsonResponse
{
$data = $operatorService->provinceActivity(
@@ -39,11 +40,13 @@ class UtilityPassingActivityController extends Controller
'edarateShahri' => EdarateShahri::where('province_id', $request->province_id)->get(['id', 'name_fa']),
]);
}
public function countryExcelActivity(Request $request, OperatorService $operatorService): BinaryFileResponse
{
$data = $operatorService->countryActivity(91, $request);
$name = 'گزارش نگهداری حریم راه برای عبور تاسیسات زیربنایی غیر مجاز ' . verta()->now()->format('Y-m-d H-i') . '.xlsx';
$name = 'گزارش نگهداری حریم راه برای عبور تاسیسات زیربنایی غیر مجاز '.verta()->now()->format('Y-m-d H-i').'.xlsx';
return Excel::download(new ExcelReport($data), $name);
}
@@ -53,7 +56,7 @@ class UtilityPassingActivityController extends Controller
$request,
91,
);
$name = 'گزارش نگهداری حریم راه برای عبور تاسیسات زیربنایی غیر مجاز ' . verta()->now()->format('Y-m-d H-i') . '.xlsx';
$name = 'گزارش نگهداری حریم راه برای عبور تاسیسات زیربنایی غیر مجاز '.verta()->now()->format('Y-m-d H-i').'.xlsx';
return Excel::download(new UtilityPassingReport($data, $request), $name);
}

View File

@@ -9,7 +9,6 @@ use App\Http\Requests\V3\SafetyAndPrivacy\RejectRequest;
use App\Http\Traits\ApiResponse;
use App\Models\SafetyAndPrivacy;
use App\Services\Cartables\SafetyAndPrivacy\SupervisorService;
use App\Services\Cartables\SafetyAndPrivacyTableService;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Maatwebsite\Excel\Facades\Excel;
@@ -33,8 +32,9 @@ class SupervisorController extends Controller
*/
public function excelReport(Request $request, SupervisorService $supervisorService): BinaryFileResponse
{
$name = 'گزارش از نگهداری حریم راه ' . verta()->now()->format('Y-m-d H-i') . '.xlsx';
$name = 'گزارش از نگهداری حریم راه '.verta()->now()->format('Y-m-d H-i').'.xlsx';
$data = $supervisorService->dataTable($request);
return Excel::download(new SupervisorCartableReport($data['data']), $name);
}

View File

@@ -2,21 +2,8 @@
namespace App\Http\Controllers\V3\Dashboard\SafetyAndPrivacy;
use App\Enums\SafetyAndPrivacyStatus;
use App\Exports\V3\SafetyAndPrivacy\CountryActivityReport;
use App\Exports\V3\SafetyAndPrivacy\ProvinceActivityReport;
use App\Exports\V3\SafetyAndPrivacy\SupervisorCartableReport;
use App\Http\Controllers\Controller;
use App\Http\Requests\V3\SafetyAndPrivacy\RejectRequest;
use App\Http\Traits\ApiResponse;
use App\Models\EdarateShahri;
use App\Models\Province;
use App\Models\SafetyAndPrivacy;
use App\Services\Cartables\SafetyAndPrivacyTableService;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Maatwebsite\Excel\Facades\Excel;
use Symfony\Component\HttpFoundation\BinaryFileResponse;
class SupervisorReportController extends Controller
{

View File

@@ -19,12 +19,13 @@ class FMSVehicleManagementController extends Controller
public function getActivity(Request $request, GetVehicleActivityService $getVehicleActivityService): JsonResponse
{
$getVehicleActivityService->setInputParameters([
"machineCode" => $request->machineCode,
"startDT" => $request->startDT,
"endDT" => $request->endDT,
'machineCode' => $request->machineCode,
'startDT' => $request->startDT,
'endDT' => $request->endDT,
]);
$data = $getVehicleActivityService->run();
return $this->successResponse($data);
}
}

View File

@@ -2,14 +2,13 @@
namespace App\Http\Controllers\V3\Harim;
use App\Facades\DataTable\DataTableFacade;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\Harim\Divarkeshi;
use App\Http\Requests\V3\Harim\Divarkeshi\StoreRequest;
use App\Http\Traits\ApiResponse;
use App\Models\Harim\Divarkeshi;
use Illuminate\Http\JsonResponse;
use App\Facades\DataTable\DataTableFacade;
use Illuminate\Http\Request;
class DivarkeshiController extends Controller
{
@@ -17,7 +16,7 @@ class DivarkeshiController extends Controller
public function index(Request $request): JsonResponse
{
$columns = array(
$columns = [
'dabirkhaneh_number',
'nameh_date',
'nameh_date_fa',
@@ -72,7 +71,7 @@ class DivarkeshiController extends Controller
'shomare_daftarkhaneh',
'description',
'ronevesht',
);
];
$allowedFilters = $columns;
$allowedSortings = $columns;
@@ -160,5 +159,4 @@ class DivarkeshiController extends Controller
{
return $this->successResponse($divarkeshi);
}
}

View File

@@ -8,8 +8,8 @@ use App\Http\Requests\V3\LogList\StoreRequest;
use App\Http\Requests\V3\LogList\UpdateRequest;
use App\Http\Traits\ApiResponse;
use App\Models\LogList;
use Illuminate\Http\Request;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class LogListManagementController extends Controller
{
@@ -52,12 +52,14 @@ class LogListManagementController extends Controller
'log_unique_code' => $request->log_unique_code,
'action_type' => $request->action_type,
]);
return $this->successResponse();
}
public function destroy(LogList $logList): JsonResponse
{
$logList->delete();
return $this->successResponse();
}
}

View File

@@ -11,7 +11,6 @@ use App\Models\Mission;
use App\Models\RoadItemsProject;
use App\Models\RoadObserved;
use App\Models\SafetyAndPrivacy;
use App\Models\User;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Throwable;
@@ -22,6 +21,7 @@ class NotificationController extends Controller
/**
* Handle the incoming request.
*
* @throws Throwable
*/
public function __invoke(Request $request): JsonResponse
@@ -41,7 +41,7 @@ class NotificationController extends Controller
{
$user = auth()->user();
$road_items = [
'total' => 0
'total' => 0,
];
if ($user->hasPermissionTo('create-road-item')) {
@@ -60,9 +60,8 @@ class NotificationController extends Controller
->count();
$road_items['total'] += $road_items['supervise_cnt'];
}
elseif ($user->hasPermissionTo('supervise-road-item-province')) {
throw_if(is_null($user->province_id) || !$user->province_id, new ProhibitedAction('استانی برای شما در سامانه ثبت نشده است!'));
} elseif ($user->hasPermissionTo('supervise-road-item-province')) {
throw_if(is_null($user->province_id) || ! $user->province_id, new ProhibitedAction('استانی برای شما در سامانه ثبت نشده است!'));
$road_items['supervise_cnt'] = RoadItemsProject::query()
->where('is_new', '=', 1)
@@ -71,20 +70,20 @@ class NotificationController extends Controller
->count();
$road_items['total'] += $road_items['supervise_cnt'];
}
elseif ($user->hasPermissionTo('supervise-road-item-by-edareostani')) {
throw_if(is_null($user->edarate_ostani_id) || !$user->edarate_ostani_id, new ProhibitedAction('اداره ای برای شما در سامانه ثبت نشده است!'));
} elseif ($user->hasPermissionTo('supervise-road-item-by-edareostani')) {
throw_if(is_null($user->edarate_ostani_id) || ! $user->edarate_ostani_id, new ProhibitedAction('اداره ای برای شما در سامانه ثبت نشده است!'));
$confirmableItems = EdarateOstani::query()->where('id', '=', $user->edarate_ostani_id)->value('items_for_confirm');
$road_items['supervise_cnt'] = RoadItemsProject::query()
->where('is_new', '=', 1)
->where('province_id', '=', $user->province_id)
->whereIn('item', explode(",", $confirmableItems))
->whereIn('item', explode(',', $confirmableItems))
->where('status', '=', 0)
->count();
$road_items['total'] += $road_items['supervise_cnt'];
}
return $road_items;
}
@@ -94,15 +93,14 @@ class NotificationController extends Controller
private function safetyAndPrivacyNotifications(): JsonResponse|array
{
$user = auth()->user();
$safety_and_privacy = array();
$safety_and_privacy = [];
if ($user->hasPermissionTo('show-safety-and-privacy-operator-cartable')) {
$safety_and_privacy['supervise_cnt'] = SafetyAndPrivacy::query()
->where('is_finished', '=', 1)
->where('status', '=', 0)
->count();
}
elseif ($user->hasPermissionTo('show-safety-and-privacy-operator-cartable-province')) {
} elseif ($user->hasPermissionTo('show-safety-and-privacy-operator-cartable-province')) {
throw_if(is_null($user->province_id), new ProhibitedAction('استانی برای شما در سامانه ثبت نشده است!'));
$safety_and_privacy['supervise_cnt'] = SafetyAndPrivacy::query()
@@ -110,8 +108,7 @@ class NotificationController extends Controller
->where('is_finished', '=', 1)
->where('status', '=', 0)
->count();
}
elseif ($user->hasPermissionTo('show-safety-and-privacy-operator-cartable-edarate-shahri')) {
} elseif ($user->hasPermissionTo('show-safety-and-privacy-operator-cartable-edarate-shahri')) {
throw_if(is_null($user->edarate_shahri_id), new ProhibitedAction('اداره ای برای شما در سامانه ثبت نشده است!'));
$activity = SafetyAndPrivacy::query()
@@ -142,45 +139,43 @@ class NotificationController extends Controller
'total' => 0,
'operation_cnt' => 0,
'complaint_cnt' => 0,
'supervise_cnt' => 0
'supervise_cnt' => 0,
];
if ($user->hasPermissionTo('show-fast-react')) {
$road_observations['supervise_cnt'] = RoadObserved::query()->where([
['rms_status', '<>', 0],
['status', '=', 0]
['status', '=', 0],
])->count();
$road_observations['complaint_cnt'] = RoadObserved::query()->where('rms_status', '=', 0)
->whereNotNull('edarate_shahri_id')
->count();
}
elseif ($user->hasPermissionTo('show-fast-react-province')) {
} elseif ($user->hasPermissionTo('show-fast-react-province')) {
throw_if(is_null($user->province_id), new ProhibitedAction('استانی برای شما در سامانه ثبت نشده است!'));
$road_observations['supervise_cnt'] = RoadObserved::query()->where([
['rms_status', '<>', 0],
['status', '=', 0],
['province_id', '=', $user->province_id]
['province_id', '=', $user->province_id],
])->count();
$road_observations['complaint_cnt'] = RoadObserved::query()->where([
['rms_status', '=', 0],
['province_id', '=', $user->province_id]
['province_id', '=', $user->province_id],
])->count();
}
elseif ($user->hasPermissionTo('show-fast-react-edarate-shahri')) {
} elseif ($user->hasPermissionTo('show-fast-react-edarate-shahri')) {
throw_if(is_null($user->edarate_shahri_id), new ProhibitedAction('اداره ای برای شما در سامانه ثبت نشده است!'));
$road_observations['operation_cnt'] = RoadObserved::query()->where([
['rms_status', '<>', 0],
['status', '=', 2],
['edarate_shahri_id', '=', $user->edarate_shahri_id]
['edarate_shahri_id', '=', $user->edarate_shahri_id],
])->count();
$road_observations['complaint_cnt'] = RoadObserved::query()->where([
['rms_status', '=', 0],
['edarate_shahri_id', '=', $user->edarate_shahri_id]
['edarate_shahri_id', '=', $user->edarate_shahri_id],
])->count();
}
@@ -196,7 +191,7 @@ class NotificationController extends Controller
'request_portal' => Mission::query()
->where([
['state_id', '=', MissionStates::REJECT_BY_TRANSPORTATION->value],
['user_id', '=', $user->id]
['user_id', '=', $user->id],
])->count(),
'transportation' => 0,
'control' => 0,
@@ -205,13 +200,13 @@ class NotificationController extends Controller
if ($user->hasPermissionTo('manage-transportation-unit')) {
$missions['transportation'] = Mission::query()->where([
['state_id', '=', MissionStates::REQUEST_CREATED->value],
['edare_shahri_id', '=', $user->edarate_shahri_id]
['edare_shahri_id', '=', $user->edarate_shahri_id],
])->count();
}
if ($user->hasPermissionTo('manage-control-unit')) {
$missions['control'] = Mission::query()->where([
['state_id', '=', MissionStates::PENDING_CONFIRMATION->value],
['edare_shahri_id', '=', $user->edarate_shahri_id]
['edare_shahri_id', '=', $user->edarate_shahri_id],
])->count();
}

View File

@@ -14,6 +14,7 @@ use Illuminate\Http\Request;
class PermissionManagementController extends Controller
{
use ApiResponse;
/**
* Display a listing of the resource.
*/
@@ -78,6 +79,7 @@ class PermissionManagementController extends Controller
public function destroy(Permission $permission): JsonResponse
{
$permission->delete();
return $this->successResponse();
}
}

View File

@@ -2,21 +2,20 @@
namespace App\Http\Controllers\V3;
use App\Facades\File\FileFacade;
use App\Http\Controllers\Controller;
use App\Http\Requests\V3\Profile\ChangePasswordRequest;
use App\Http\Requests\V3\Profile\EditRequest;
use App\Http\Traits\ApiResponse;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Storage;
class ProfileController extends Controller
{
use ApiResponse;
public function info(): JsonResponse
{
$user = Auth::user();
@@ -32,7 +31,7 @@ class ProfileController extends Controller
'degree' => $user->degree,
'mobile' => $user->mobile,
'province_id' => $user->province_id,
'avatar' => $user->avatarUrl()
'avatar' => $user->avatarUrl(),
]);
}
@@ -40,16 +39,15 @@ class ProfileController extends Controller
{
$user = Auth::user();
if ($request->has('avatar'))
{
if ($request->has('avatar')) {
if ($user->avatar) {
File::delete($user->avatar);
}
$destinationPath = 'avatar/' . $user->username;
$filename = time() .".". $request->file('avatar')->getClientOriginalExtension();
$destinationPath = 'avatar/'.$user->username;
$filename = time().'.'.$request->file('avatar')->getClientOriginalExtension();
$request->file('avatar')->storeAs($destinationPath, $filename, 'public');
$avatar = 'storage/'.$destinationPath ."/". $filename;
$avatar = 'storage/'.$destinationPath.'/'.$filename;
}
$user->update([
@@ -58,7 +56,7 @@ class ProfileController extends Controller
'major' => $request->major,
'degree' => $request->degree,
'mobile' => $request->mobile,
'avatar' => $avatar ?? $user->avatar
'avatar' => $avatar ?? $user->avatar,
]);
return $this->successResponse();
@@ -68,13 +66,12 @@ class ProfileController extends Controller
{
$user = Auth::user();
if (! Hash::check($request->current_password, $user->password))
{
if (! Hash::check($request->current_password, $user->password)) {
return $this->errorResponse(__('messages.incorrect_current_password'));
}
$user->update([
'password' => Hash::make($request->new_password)
'password' => Hash::make($request->new_password),
]);
return $this->successResponse();
@@ -84,6 +81,7 @@ class ProfileController extends Controller
public function addActivity(Request $request): JsonResponse
{
auth()->user()->addActivityComplete($request->activityCode);
return $this->successResponse();
}
}

View File

@@ -67,9 +67,9 @@ class RahdaranController extends Controller
$edareh = EdarateShahri::query()->find($request->input('edareh_shahri_id'));
$rahdaran->update([
'name' =>$request->name,
'code' =>$request->code,
'mobile' =>$request->mobile,
'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,
@@ -84,9 +84,9 @@ class RahdaranController extends Controller
{
try {
$rahdaran->delete();
return $this->successResponse();
}
catch (QueryException $exception) {
} catch (QueryException $exception) {
return $this->errorResponse('امکان حذف وجود ندارد');
}
}

View File

@@ -11,6 +11,7 @@ use Illuminate\Http\JsonResponse;
class RoadItemController extends Controller
{
use ApiResponse;
public function index(IndexRequest $request): JsonResponse
{
$fromDate = $request->from_date;

View File

@@ -7,7 +7,6 @@ use App\Http\Requests\V3\WebServices\RoadMaintenanceStation\IndexRequest;
use App\Http\Traits\ApiResponse;
use App\Models\RahdariPoint;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class RoadMaintenanceStationController extends Controller
{
@@ -22,11 +21,11 @@ class RoadMaintenanceStationController extends Controller
$data = RahdariPoint::query()
->when($status, fn ($query, $status) => $query->where('status', $status))
->when($type, fn ($query, $type) => $query->where('type', $type))
->when($province, fn($query, $province) => $query->where('province_id', $province))
->when($province, fn ($query, $province) => $query->where('province_id', $province))
->get([
'id', 'province_name', 'city_name', 'name', 'status', 'type_fa', 'phone',
'code', 'lat', 'lng',
]);
'id', 'province_name', 'city_name', 'name', 'status', 'type_fa', 'phone',
'code', 'lat', 'lng',
]);
return $this->successResponse($data);
}

View File

@@ -2,11 +2,9 @@
namespace App\Http\Requests\V3\AccidentReceipt;
use App\Enums\AccidentStates;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Facades\Auth;
use Illuminate\Validation\Rule;
class ChangeStatusRequest extends FormRequest
{
@@ -15,7 +13,7 @@ class ChangeStatusRequest extends FormRequest
*/
public function authorize(): bool
{
return Auth::user()->hasPermissionTo('change-accident-status');
return Auth::user()->hasPermissionTo('change-accident-status');
}
/**

View File

@@ -3,7 +3,7 @@
namespace App\Http\Requests\V3\AccidentReceipt;
use App\Enums\AccidentStates;
use App\Models\Accident;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest;
class ConfirmPaymentInfoRequest extends FormRequest
@@ -14,14 +14,16 @@ class ConfirmPaymentInfoRequest extends FormRequest
public function authorize(): bool
{
return in_array($this->accident->status,
[AccidentStates::SODOR_NAME_BIME_VA_DAGHI->value, AccidentStates::SABT_FISH->value]
);
[
AccidentStates::SODOR_NAME_BIME_VA_DAGHI->value,
AccidentStates::SABT_FISH->value
]);
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
* @return array<string, ValidationRule|array|string>
*/
public function rules(): array
{

View File

@@ -2,8 +2,7 @@
namespace App\Http\Requests\V3\AccidentReceipt;
use App\Enums\AccidentStates;
use App\Models\DailyAccidentSettings;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest;
class StoreRequest extends FormRequest
@@ -19,7 +18,7 @@ class StoreRequest extends FormRequest
/**
* Get the validation rules that apply to the request.
*
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
* @return array<string, ValidationRule|array|string>
*/
public function rules(): array
{

View File

@@ -3,6 +3,7 @@
namespace App\Http\Requests\V3\AccidentReceipt;
use App\Enums\AccidentStates;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest;
class SubmitInvoiceRequest extends FormRequest
@@ -18,7 +19,7 @@ class SubmitInvoiceRequest extends FormRequest
/**
* Get the validation rules that apply to the request.
*
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
* @return array<string, ValidationRule|array|string>
*/
public function rules(): array
{

View File

@@ -3,6 +3,7 @@
namespace App\Http\Requests\V3\AccidentReceipt;
use App\Enums\AccidentStates;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest;
class UpdateRequest extends FormRequest
@@ -18,7 +19,7 @@ class UpdateRequest extends FormRequest
/**
* Get the validation rules that apply to the request.
*
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
* @return array<string, ValidationRule|array|string>
*/
public function rules(): array
{

View File

@@ -2,6 +2,7 @@
namespace App\Http\Requests\V3\Azmayesh;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest;
class StoreRequest extends FormRequest
@@ -17,7 +18,7 @@ class StoreRequest extends FormRequest
/**
* Get the validation rules that apply to the request.
*
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
* @return array<string, ValidationRule|array|string>
*/
public function rules(): array
{

View File

@@ -2,6 +2,7 @@
namespace App\Http\Requests\V3\Azmayesh;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest;
class UpdateRequest extends FormRequest
@@ -17,7 +18,7 @@ class UpdateRequest extends FormRequest
/**
* Get the validation rules that apply to the request.
*
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
* @return array<string, ValidationRule|array|string>
*/
public function rules(): array
{

View File

@@ -2,6 +2,7 @@
namespace App\Http\Requests\V3\AzmayeshSample;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest;
class StoreRequest extends FormRequest
@@ -17,7 +18,7 @@ class StoreRequest extends FormRequest
/**
* Get the validation rules that apply to the request.
*
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
* @return array<string, ValidationRule|array|string>
*/
public function rules(): array
{

View File

@@ -2,6 +2,7 @@
namespace App\Http\Requests\V3\AzmayeshSample;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest;
class UpdateRequest extends FormRequest
@@ -17,7 +18,7 @@ class UpdateRequest extends FormRequest
/**
* Get the validation rules that apply to the request.
*
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
* @return array<string, ValidationRule|array|string>
*/
public function rules(): array
{

View File

@@ -2,6 +2,7 @@
namespace App\Http\Requests\V3\AzmayeshType;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest;
class StoreRequest extends FormRequest
@@ -17,7 +18,7 @@ class StoreRequest extends FormRequest
/**
* Get the validation rules that apply to the request.
*
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
* @return array<string, ValidationRule|array|string>
*/
public function rules(): array
{

View File

@@ -2,6 +2,7 @@
namespace App\Http\Requests\V3\AzmayeshType;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest;
class UpdateRequest extends FormRequest
@@ -17,7 +18,7 @@ class UpdateRequest extends FormRequest
/**
* Get the validation rules that apply to the request.
*
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
* @return array<string, ValidationRule|array|string>
*/
public function rules(): array
{

View File

@@ -0,0 +1,94 @@
<?php
namespace App\Http\Requests\V3\DailyAccident;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest;
class StoreRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, ValidationRule|array|string>
*/
public function rules(): array
{
return [
'province_id' => 'required|integer|exists:provinces,id',
'axis_name' => 'required|string|max:255',
'axis_type' => '',
'axis_start' => '',
'axis_end' => '',
'distance_axis_start' => '',
'local_name' => '',
'lat' => '',
'lng' => '',
'police_serial' => '',
'accident_date' => '',
'accident_time' => '',
'day_of_the_week' => '',
'direction' => '',
'number_of_injured' => '',
'number_of_died' => '',
'weather_condition' => '',
'way_geometri' => '',
'collision_type' => '',
'participants_heavy_vehicle' => '',
'participants_light_vehicle' => '',
'participants_bicycle' => '',
'accident_type' => '',
'legal_speed' => '',
'avarage_speed' => '',
'increase_damage_reasons_feqdan_jodakonnande_dar_miyane_rah' => '',
'increase_damage_reasons_naqs_ya_adam_kefayat_hefaze_miyani' => '',
'increase_damage_reasons_naqs_ya_adam_kefayat_narde_pol' => '',
'increase_damage_reasons_naqs_ya_adam_kefayat' => '',
'increase_damage_reasons_naqs_dar_naheye_enteqali' => '',
'increase_damage_reasons_mane_solb_bedone_hefaz' => '',
'increase_damage_reasons_sar_azad_hefaz' => '',
'increase_damage_reasons_shirvani_tond_ya_partgah' => '',
'accident_reason_dor_monaseb_dar_qus' => '',
'accident_reason_saraziri_tond' => '',
'accident_reason_nabod_dar_khat_sebqat_dar_sarbalaye' => '',
'accident_reason_mantaqe_ba_rizesh_az_divar' => '',
'accident_reason_mantaqe_ba_afzayesh_nagahani' => '',
'accident_reason_kahesh_na_monaseb_tedad' => '',
'accident_reason_mantaqe_ba_obor_heyvanat_ahli' => '',
'accident_reason_mantaqe_ba_tadakhol_terafiki' => '',
'accident_reason_arze_kam_savare_ro' => '',
'accident_reason_mantaqe_meh_gir' => '',
'accident_reason_adam_roshanaye_zarori_dar_noqte' => '',
'accident_reason_tabdil_na_monaseb_noe_rah' => '',
'accident_reason_oftadegi_dar_labe_asphalt' => '',
'accident_reason_naqs_dar_ashkarsazi_navahi' => '',
'accident_reason_mahal_na_monaseb_dastrasi' => '',
'accident_reason_roye_na_monaseb' => '',
'accident_reason_naqs_dar_ashkar_sazi_shrayet_khas' => '',
'accident_reason_hendese_na_monaseb_vorodi_va_khoroji' => '',
'accident_reason_adam_rayat_fasele_tooli' => '',
'accident_reason_naqs_dar_alayem_ekhtari_va_entezami' => '',
'accident_reason_qus_ofoqi_dar_saraziri_tond' => '',
'accident_reason_adam_rayat_obor' => '',
'accident_reason_naqs_dar_alayem_pish_agahi' => '',
'accident_reason_qarar_gire_qus_ofoqi' => '',
'accident_reason_adam_rayat_sebghat_mojaz' => '',
'accident_reason_did_na_kafi' => '',
'accident_reason_qus_tond_qaem' => '',
'accident_reason_adam_rayat_sorat_mojaz' => '',
'accident_reason_ebham_dar_masir' => '',
'accident_reason_qus_tond_ofoghi' => '',
'first_image' => '',
'second_image' => '',
'police_file' => '',
];
}
}

View File

@@ -0,0 +1,30 @@
<?php
namespace App\Http\Requests\V3\DailyAccident;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest;
class SupervisorRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, ValidationRule|array|string>
*/
public function rules(): array
{
return [
'state' => 'required|in:0,1',
'message' => 'required_if:state,2|string',
];
}
}

View File

@@ -2,6 +2,7 @@
namespace App\Http\Requests\V3\Damage;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest;
class StoreRequest extends FormRequest
@@ -17,14 +18,14 @@ class StoreRequest extends FormRequest
/**
* Get the validation rules that apply to the request.
*
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
* @return array<string, ValidationRule|array|string>
*/
public function rules(): array
{
return [
'title' =>'required|string|max:255|unique:damages,title',
'unit' =>'required|string|max:255',
'base_price' =>'required|integer',
'title' => 'required|string|max:255|unique:damages,title',
'unit' => 'required|string|max:255',
'base_price' => 'required|integer',
];
}
}

View File

@@ -23,9 +23,9 @@ class UpdateRequest extends FormRequest
public function rules(): array
{
return [
'title' =>['required', 'string', 'max:255',Rule::unique('damages','title')->ignore($this->damage->id)],
'unit' =>'required|string',
'base_price' =>'required|integer',
'title' => ['required', 'string', 'max:255', Rule::unique('damages', 'title')->ignore($this->damage->id)],
'unit' => 'required|string',
'base_price' => 'required|integer',
];
}
}

View File

@@ -0,0 +1,31 @@
<?php
namespace App\Http\Requests\V3\Dashboard\Harim\Deputy;
use App\Enums\HarimStates;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest;
class ConfirmPaymentRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return $this->harim->province_id == auth()->user()->province_id &&
$this->harim->state_id == HarimStates::BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_MOAVEN->value;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, ValidationRule|array|string>
*/
public function rules(): array
{
return [
'expert_description' => 'required|string',
];
}
}

View File

@@ -3,6 +3,7 @@
namespace App\Http\Requests\V3\Dashboard\Harim\Deputy;
use App\Enums\HarimStates;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest;
class ConfirmRequest extends FormRequest
@@ -12,14 +13,14 @@ class ConfirmRequest extends FormRequest
*/
public function authorize(): bool
{
return $this->harim->edareh_shahri_id == auth()->user()->edarate_shahri_id &&
return $this->harim->province_id == auth()->user()->province_id &&
$this->harim->state_id == HarimStates::BARESI_TAVASOT_MOAVEN->value;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
* @return array<string, ValidationRule|array|string>
*/
public function rules(): array
{

View File

@@ -13,8 +13,8 @@ class ConfirmRoadAccessRequest extends FormRequest
*/
public function authorize(): bool
{
return $this->harim->edareh_shahri_id == auth()->user()->edarate_shahri_id &&
$this->harim->state_id == HarimStates::BARESI_FILE_APLODE_SHODE_TAVASOTE_MOAVEN->value;
return $this->harim->province_id == auth()->user()->province_id &&
$this->harim->state_id == HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MOAVEN->value;
}
/**

View File

@@ -0,0 +1,31 @@
<?php
namespace App\Http\Requests\V3\Dashboard\Harim\Deputy;
use App\Enums\HarimStates;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest;
class ReferPaymentRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return $this->harim->province_id == auth()->user()->province_id &&
$this->harim->state_id == HarimStates::BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_MOAVEN->value;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, ValidationRule|array|string>
*/
public function rules(): array
{
return [
'expert_description' => 'required|string',
];
}
}

View File

@@ -3,6 +3,7 @@
namespace App\Http\Requests\V3\Dashboard\Harim\Deputy;
use App\Enums\HarimStates;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest;
class ReferRequest extends FormRequest
@@ -12,14 +13,14 @@ class ReferRequest extends FormRequest
*/
public function authorize(): bool
{
return $this->harim->edareh_shahri_id == auth()->user()->edarate_shahri_id &&
return $this->harim->province_id == auth()->user()->province_id &&
$this->harim->state_id == HarimStates::BARESI_TAVASOT_MOAVEN->value;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
* @return array<string, ValidationRule|array|string>
*/
public function rules(): array
{

View File

@@ -3,6 +3,7 @@
namespace App\Http\Requests\V3\Dashboard\Harim\Deputy;
use App\Enums\HarimStates;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest;
class ReferRoadAccessRequest extends FormRequest
@@ -12,14 +13,14 @@ class ReferRoadAccessRequest extends FormRequest
*/
public function authorize(): bool
{
return $this->harim->edareh_shahri_id == auth()->user()->edarate_shahri_id &&
$this->harim->state_id == HarimStates::BARESI_FILE_APLODE_SHODE_TAVASOTE_MOAVEN->value;
return $this->harim->province_id == auth()->user()->province_id &&
$this->harim->state_id == HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MOAVEN->value;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
* @return array<string, ValidationRule|array|string>
*/
public function rules(): array
{

View File

@@ -2,7 +2,7 @@
namespace App\Http\Requests\V3\Dashboard\Harim\Deputy;
use App\Enums\HarimStates;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest;
class ShowRequest extends FormRequest
@@ -12,13 +12,13 @@ class ShowRequest extends FormRequest
*/
public function authorize(): bool
{
return $this->harim->edareh_shahri_id == auth()->user()->edarate_shahri_id;
return $this->harim->province_id == auth()->user()->province_id;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
* @return array<string, ValidationRule|array|string>
*/
public function rules(): array
{

View File

@@ -3,6 +3,7 @@
namespace App\Http\Requests\V3\Dashboard\Harim\GeneralManager;
use App\Enums\HarimStates;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest;
class ConfirmGuaranteeLetterNeedRequest extends FormRequest
@@ -12,14 +13,14 @@ class ConfirmGuaranteeLetterNeedRequest extends FormRequest
*/
public function authorize(): bool
{
return $this->harim->edareh_shahri_id == auth()->user()->edarate_shahri_id &&
return $this->harim->province_id == auth()->user()->province_id &&
$this->harim->state_id == HarimStates::BARESI_TAVASOT_MODIR_KOL->value;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
* @return array<string, ValidationRule|array|string>
*/
public function rules(): array
{

View File

@@ -3,6 +3,7 @@
namespace App\Http\Requests\V3\Dashboard\Harim\GeneralManager;
use App\Enums\HarimStates;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest;
class ConfirmNoRoadAccessNeedRequest extends FormRequest
@@ -12,14 +13,14 @@ class ConfirmNoRoadAccessNeedRequest extends FormRequest
*/
public function authorize(): bool
{
return $this->harim->edareh_shahri_id == auth()->user()->edarate_shahri_id &&
return $this->harim->province_id == auth()->user()->province_id &&
$this->harim->state_id == HarimStates::BARESI_TAVASOT_MODIR_KOL->value;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
* @return array<string, ValidationRule|array|string>
*/
public function rules(): array
{

View File

@@ -0,0 +1,31 @@
<?php
namespace App\Http\Requests\V3\Dashboard\Harim\GeneralManager;
use App\Enums\HarimStates;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest;
class ConfirmPaymentRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return $this->harim->province_id == auth()->user()->province_id &&
$this->harim->state_id == HarimStates::BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_MODIR_KOL->value;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, ValidationRule|array|string>
*/
public function rules(): array
{
return [
'expert_description' => 'required|string',
];
}
}

View File

@@ -3,6 +3,7 @@
namespace App\Http\Requests\V3\Dashboard\Harim\GeneralManager;
use App\Enums\HarimStates;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest;
class ConfirmRoadAccessEditNeedRequest extends FormRequest
@@ -12,14 +13,14 @@ class ConfirmRoadAccessEditNeedRequest extends FormRequest
*/
public function authorize(): bool
{
return $this->harim->edareh_shahri_id == auth()->user()->edarate_shahri_id &&
$this->harim->state_id == HarimStates::BARESI_FILE_APLODE_SHODE_TAVASOTE_MODIR_KOL->value;
return $this->harim->province_id == auth()->user()->province_id &&
$this->harim->state_id == HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MODIR_KOL->value;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
* @return array<string, ValidationRule|array|string>
*/
public function rules(): array
{

View File

@@ -3,6 +3,7 @@
namespace App\Http\Requests\V3\Dashboard\Harim\GeneralManager;
use App\Enums\HarimStates;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest;
class ConfirmRoadAccessNeedRequest extends FormRequest
@@ -12,14 +13,14 @@ class ConfirmRoadAccessNeedRequest extends FormRequest
*/
public function authorize(): bool
{
return $this->harim->edareh_shahri_id == auth()->user()->edarate_shahri_id &&
return $this->harim->province_id == auth()->user()->province_id &&
$this->harim->state_id == HarimStates::BARESI_TAVASOT_MODIR_KOL->value;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
* @return array<string, ValidationRule|array|string>
*/
public function rules(): array
{

View File

@@ -3,6 +3,7 @@
namespace App\Http\Requests\V3\Dashboard\Harim\GeneralManager;
use App\Enums\HarimStates;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest;
class ReferFileRequest extends FormRequest
@@ -12,14 +13,14 @@ class ReferFileRequest extends FormRequest
*/
public function authorize(): bool
{
return $this->harim->edareh_shahri_id == auth()->user()->edarate_shahri_id &&
$this->harim->state_id == HarimStates::BARESI_FILE_APLODE_SHODE_TAVASOTE_MODIR_KOL->value;
return $this->harim->province_id == auth()->user()->province_id &&
$this->harim->state_id == HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MODIR_KOL->value;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
* @return array<string, ValidationRule|array|string>
*/
public function rules(): array
{

View File

@@ -0,0 +1,31 @@
<?php
namespace App\Http\Requests\V3\Dashboard\Harim\GeneralManager;
use App\Enums\HarimStates;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest;
class ReferPaymentRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return $this->harim->province_id == auth()->user()->province_id &&
$this->harim->state_id == HarimStates::BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_MODIR_KOL->value;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, ValidationRule|array|string>
*/
public function rules(): array
{
return [
'expert_description' => 'required|string',
];
}
}

View File

@@ -3,6 +3,7 @@
namespace App\Http\Requests\V3\Dashboard\Harim\GeneralManager;
use App\Enums\HarimStates;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest;
class ReferRequest extends FormRequest
@@ -12,14 +13,14 @@ class ReferRequest extends FormRequest
*/
public function authorize(): bool
{
return $this->harim->edareh_shahri_id == auth()->user()->edarate_shahri_id &&
return $this->harim->province_id == auth()->user()->province_id &&
$this->harim->state_id == HarimStates::BARESI_TAVASOT_MODIR_KOL->value;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
* @return array<string, ValidationRule|array|string>
*/
public function rules(): array
{

Some files were not shown because too many files have changed in this diff Show More