Merge branch 'develop' into 'main'
Develop See merge request witelgroup/rms_v2!59
This commit is contained in:
@@ -17,7 +17,12 @@ class CampController extends Controller
|
||||
public function index(Request $request)
|
||||
{
|
||||
$province = $request->province ?? null;
|
||||
$blockageDate = $request->blockage_date ?? null;
|
||||
$city = $request->city ?? null;
|
||||
$blockageStartDate = $request->blockage_start_date ?? null;
|
||||
$blockageEndDate = $request->blockage_end_date ?? null;
|
||||
$blockageDate = $blockageStartDate && $blockageEndDate ?
|
||||
[$blockageStartDate . ' 00:00:00', $blockageEndDate . ' 23:59:59'] :
|
||||
null;
|
||||
$axisType = $request->axis_type ?? null;
|
||||
$blockageReason = $request->blockage ?? null;
|
||||
|
||||
@@ -28,8 +33,11 @@ class CampController extends Controller
|
||||
->when($province, function ($query, $province) {
|
||||
return $query->where('province_id', $province);
|
||||
})
|
||||
->when($city, function ($query, $city) {
|
||||
return $query->where('city_id', $city);
|
||||
})
|
||||
->when($blockageDate, function ($query, $blockageDate) {
|
||||
return $query->whereBetween('submited_at', [$blockageDate . ' 00:00:00', $blockageDate . ' 23:59:59']);
|
||||
return $query->whereBetween('submited_at', $blockageDate);
|
||||
})
|
||||
->when($axisType, function ($query, $axisType) {
|
||||
return $query->where('axis_type', $axisType);
|
||||
@@ -48,6 +56,9 @@ class CampController extends Controller
|
||||
->when($blockageDate, function ($query, $blockageDate) {
|
||||
return $query->whereBetween('submited_at', [$blockageDate . ' 00:00:00', $blockageDate . ' 23:59:59']);
|
||||
})
|
||||
->when($city, function ($query, $city) {
|
||||
return $query->where('city_id', $city);
|
||||
})
|
||||
->when($axisType, function ($query, $axisType) {
|
||||
return $query->where('axis_type', $axisType);
|
||||
})
|
||||
|
||||
@@ -14,7 +14,7 @@ class CMMSMachinesController extends Controller
|
||||
|
||||
public function list(): JsonResponse
|
||||
{
|
||||
$machinesList = CMMSMachine::query()->get(['machine_code', 'id']);
|
||||
$machinesList = CMMSMachine::query()->get(['machine_code', 'id', 'plak_number', 'car_name']);
|
||||
|
||||
return $this->successResponse($machinesList);
|
||||
}
|
||||
@@ -23,7 +23,7 @@ class CMMSMachinesController extends Controller
|
||||
{
|
||||
$matchedSearchedMachines = CMMSMachine::query()
|
||||
->where('machine_code', 'LIKE', "%{$request->machine_code}%")
|
||||
->get(['machine_code', 'id']);
|
||||
->get(['machine_code', 'id', 'plak_number', 'car_name']);
|
||||
|
||||
return $this->successResponse($matchedSearchedMachines);
|
||||
}
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\V3\Azmayesh;
|
||||
namespace App\Http\Controllers\V3\Dashboard\Azmayesh;
|
||||
|
||||
use App\Facades\DataTable\DataTableFacade;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\V3\Azmayesh\StoreRequest;
|
||||
use App\Http\Requests\V3\Azmayesh\UpdateRequest;
|
||||
use App\Http\Traits\ApiResponse;
|
||||
use App\Models\Azmayesh;
|
||||
use App\Models\AzmayeshType;
|
||||
@@ -11,8 +13,6 @@ use App\Models\Province;
|
||||
use Illuminate\Database\QueryException;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use App\Http\Requests\V3\Azmayesh\StoreRequest;
|
||||
use App\Http\Requests\V3\Azmayesh\UpdateRequest;
|
||||
|
||||
class AzmayeshController extends Controller
|
||||
{
|
||||
@@ -84,6 +84,8 @@ class AzmayeshController extends Controller
|
||||
'contract_subitem_id' => $request->contract_subitem_id
|
||||
]);
|
||||
|
||||
$user->addActivityComplete(1158);
|
||||
|
||||
return $this->successResponse();
|
||||
}
|
||||
|
||||
@@ -122,6 +124,8 @@ class AzmayeshController extends Controller
|
||||
'contract_subitem_id' => $request->contract_subitem_id
|
||||
]);
|
||||
|
||||
auth()->user()->addActivityComplete(1159);
|
||||
|
||||
return $this->successResponse();
|
||||
}
|
||||
|
||||
@@ -133,6 +137,8 @@ class AzmayeshController extends Controller
|
||||
try {
|
||||
$azmayesh->delete();
|
||||
|
||||
auth()->user()->addActivityComplete(1160);
|
||||
|
||||
return $this->successResponse();
|
||||
}
|
||||
catch (QueryException $exception) {
|
||||
@@ -1,18 +1,16 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\V3\Azmayesh;
|
||||
namespace App\Http\Controllers\V3\Dashboard\Azmayesh;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Facades\DataTable\DataTableFacade;
|
||||
use App\Http\Traits\ApiResponse;
|
||||
use App\Models\Azmayesh;
|
||||
use App\Models\AzmayeshType;
|
||||
use App\Models\AzmayeshSample;
|
||||
use App\Models\Province;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\V3\AzmayeshSample\StoreRequest;
|
||||
use App\Http\Requests\V3\AzmayeshSample\UpdateRequest;
|
||||
use App\Http\Traits\ApiResponse;
|
||||
use App\Models\Azmayesh;
|
||||
use App\Models\AzmayeshSample;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class AzmayeshSampleController extends Controller
|
||||
{
|
||||
@@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\V3\Azmayesh;
|
||||
namespace App\Http\Controllers\V3\Dashboard\Azmayesh;
|
||||
|
||||
use App\Facades\DataTable\DataTableFacade;
|
||||
use App\Http\Controllers\Controller;
|
||||
@@ -67,6 +67,8 @@ class AzmayeshTypeController extends Controller
|
||||
}
|
||||
|
||||
$azmayeshType->azmayeshFields()->attach($fieldsID);
|
||||
|
||||
auth()->user()->addActivityComplete(1162);
|
||||
});
|
||||
|
||||
return $this->successResponse();
|
||||
@@ -100,6 +102,8 @@ class AzmayeshTypeController extends Controller
|
||||
}
|
||||
|
||||
$azmayeshType->azmayeshFields()->sync($fieldsID);
|
||||
|
||||
auth()->user()->addActivityComplete(1163);
|
||||
});
|
||||
|
||||
return $this->successResponse();
|
||||
@@ -113,6 +117,8 @@ class AzmayeshTypeController extends Controller
|
||||
try {
|
||||
$azmayeshType->delete();
|
||||
|
||||
auth()->user()->addActivityComplete(1164);
|
||||
|
||||
return $this->successResponse();
|
||||
}
|
||||
catch (QueryException $exception) {
|
||||
40
app/Http/Controllers/V3/Dashboard/ObservedItemController.php
Normal file
40
app/Http/Controllers/V3/Dashboard/ObservedItemController.php
Normal file
@@ -0,0 +1,40 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\V3\Dashboard;
|
||||
|
||||
use App\Facades\DataTable\DataTableFacade;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Traits\ApiResponse;
|
||||
use App\Models\ObservedItem;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class ObservedItemController extends Controller
|
||||
{
|
||||
use ApiResponse;
|
||||
public function show(ObservedItem $observedItem): JsonResponse
|
||||
{
|
||||
return $this->successResponse($observedItem);
|
||||
}
|
||||
|
||||
public function filter(Request $request): JsonResponse
|
||||
{
|
||||
$columns = array(
|
||||
'id', 'item_id', 'road_patrol_id', 'roadPatrol.start_time', 'roadPatrol.end_time',
|
||||
);
|
||||
|
||||
$allowedFilters = $columns;
|
||||
$allowedSortings = $columns;
|
||||
|
||||
$data = ObservedItem::query()->whereNull('road_item_id');
|
||||
|
||||
$dataTable = DataTableFacade::run(
|
||||
$data,
|
||||
$request,
|
||||
allowedFilters: $allowedFilters,
|
||||
allowedSortings: $allowedSortings
|
||||
);
|
||||
|
||||
return response()->json($dataTable);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,261 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\V3\Dashboard\Reports;
|
||||
|
||||
use App\Exports\Activities\One\AllSheets as OneSheet;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Traits\ApiResponse;
|
||||
use App\Models\EdarateShahri;
|
||||
use App\Models\InfoItem;
|
||||
use App\Models\Province;
|
||||
use App\Models\RoadItemsProject;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Maatwebsite\Excel\Facades\Excel;
|
||||
use Symfony\Component\HttpFoundation\BinaryFileResponse;
|
||||
|
||||
class RoadItemsReportController extends Controller
|
||||
{
|
||||
use ApiResponse;
|
||||
public function getSubItems(): JsonResponse
|
||||
{
|
||||
$data = InfoItem::all();
|
||||
$items = InfoItem::query()->groupBy('item')->get();
|
||||
|
||||
return $this->successResponse([
|
||||
'items' => $items,
|
||||
'data' => $data,
|
||||
]);
|
||||
}
|
||||
|
||||
public function provinceActivityPerSubItem(Request $request): JsonResponse
|
||||
{
|
||||
$fromDate = $request->from_date ? $request->from_date . ' 00:00:00' : now()->startOfDay()->toDateTimeString();
|
||||
$toDate = $request->date_to ? $request->date_to . ' 23:59:59' : now()->endOfDay()->toDateTimeString();
|
||||
$item = $request->item;
|
||||
|
||||
$provinceRoadItemsPerSubItem = RoadItemsProject::query()->selectRaw('
|
||||
sub_item AS t,
|
||||
COUNT(*) AS c,
|
||||
CAST(SUM(CASE WHEN sub_item_data > 0 THEN sub_item_data ELSE ABS(sub_item_data) END) AS UNSIGNED) AS s,
|
||||
province_id AS p')
|
||||
->where('item', '=', $item)
|
||||
->whereBetween('activity_date_time', [$fromDate, $toDate])
|
||||
->where('status', '=', 1)
|
||||
->groupBy('province_id', 'sub_item')
|
||||
->get();
|
||||
|
||||
$countryRoadItemsPerSubItem = RoadItemsProject::query()->selectRaw('
|
||||
sub_item AS t,
|
||||
COUNT(*) AS c,
|
||||
CAST(SUM(CASE WHEN sub_item_data > 0 THEN sub_item_data ELSE ABS(sub_item_data) END) AS UNSIGNED) AS s,
|
||||
-1 AS p')
|
||||
->where('item', '=', $item)
|
||||
->whereBetween('activity_date_time', [$fromDate, $toDate])
|
||||
->where('status', '=', 1)
|
||||
->groupBy('sub_item')
|
||||
->get();
|
||||
|
||||
|
||||
$activities = $provinceRoadItemsPerSubItem->push(...$countryRoadItemsPerSubItem);
|
||||
$provinces = Province::all(['id', 'name_fa']);
|
||||
$subItems = InfoItem::query()
|
||||
->where('item', $item)
|
||||
->get(['id', 'item', 'item_str', 'sub_item_str', 'sub_item_unit', 'sub_item']);
|
||||
|
||||
return $this->successResponse([
|
||||
'activities' => $activities,
|
||||
'sub_items' => $subItems,
|
||||
'provinces' => $provinces,
|
||||
]);
|
||||
}
|
||||
|
||||
public function cityActivityPerSubItem(Request $request): JsonResponse
|
||||
{
|
||||
$fromDate = $request->from_date ? $request->from_date . ' 00:00:00' : now()->startOfDay()->toDateTimeString();
|
||||
$toDate = $request->date_to ? $request->date_to . ' 23:59:59' : now()->endOfDay()->toDateTimeString();
|
||||
$item = $request->item;
|
||||
$province = $request->province_id;
|
||||
|
||||
$cityRoadItemsPerSubItem = RoadItemsProject::query()->selectRaw('
|
||||
sub_item AS t,
|
||||
COUNT(*) AS c,
|
||||
CAST(SUM(CASE WHEN sub_item_data > 0 THEN sub_item_data ELSE ABS(sub_item_data) END) AS UNSIGNED) AS s,
|
||||
province_id AS p,
|
||||
edarat_id AS ci
|
||||
')
|
||||
->where('item', '=', $item)
|
||||
->where('province_id', '=', $province)
|
||||
->whereBetween('activity_date_time', [$fromDate, $toDate])
|
||||
->where('status', '=', 1)
|
||||
->groupBy('edarat_id', 'sub_item')
|
||||
->get();
|
||||
|
||||
$provinceRoadItemsPerSubItem = RoadItemsProject::query()->selectRaw('
|
||||
sub_item AS t,
|
||||
COUNT(*) AS c,
|
||||
CAST(SUM(CASE WHEN sub_item_data > 0 THEN sub_item_data ELSE ABS(sub_item_data) END) AS UNSIGNED) AS s,
|
||||
province_id AS p,
|
||||
-1 AS ci
|
||||
')
|
||||
->where('item', '=', $item)
|
||||
->where('province_id', '=', $province)
|
||||
->whereBetween('activity_date_time', [$fromDate, $toDate])
|
||||
->where('status', '=', 1)
|
||||
->groupBy('sub_item')
|
||||
->get();
|
||||
|
||||
|
||||
$edarateShahri = EdarateShahri::query()->where('province_id', '=', $province)->get(['id', 'name_fa']);
|
||||
$activities = $cityRoadItemsPerSubItem->push(...$provinceRoadItemsPerSubItem);
|
||||
$subItems = InfoItem::query()
|
||||
->where('item', $item)
|
||||
->get(['id', 'item', 'item_str', 'sub_item_str', 'sub_item_unit', 'sub_item']);
|
||||
|
||||
return $this->successResponse([
|
||||
'activities' => $activities,
|
||||
'edarateShahri' => $edarateShahri,
|
||||
'sub_items' => $subItems,
|
||||
]);
|
||||
}
|
||||
|
||||
public function provinceActivityPerItem(Request $request): JsonResponse
|
||||
{
|
||||
if (auth()->check()) {
|
||||
auth()->user()->addActivityComplete(1033);
|
||||
}
|
||||
|
||||
$fromDate = $request->from_date ? $request->from_date . ' 00:00:00' : now()->startOfDay()->toDateTimeString();
|
||||
$toDate = $request->date_to ? $request->date_to . ' 23:59:59' : now()->endOfDay()->toDateTimeString();
|
||||
$user = auth()->user();
|
||||
// $isSpecialUser = in_array($user->username, ['witel', 'drdanesh']);
|
||||
$isSpecialUser = $user->hasPermissionTo("show-road-item-supervise-cartable");
|
||||
$provinceId = $isSpecialUser ? null : $user->province_id;
|
||||
|
||||
$provinceActivity = RoadItemsProject::query()
|
||||
->selectRaw('COUNT(*) AS s, province_id AS p, item AS i')
|
||||
->where('status', 1)
|
||||
->whereBetween('activity_date_time', [$fromDate, $toDate])
|
||||
->when(!$isSpecialUser, function ($query) use ($provinceId) {
|
||||
$query->where('province_id', $provinceId);
|
||||
})
|
||||
->groupBy('province_id', 'item');
|
||||
|
||||
$countryActivity = RoadItemsProject::query()
|
||||
->selectRaw('COUNT(*) AS s, -1 AS p, item AS i')
|
||||
->where('status', 1)
|
||||
->whereBetween('activity_date_time', [$fromDate, $toDate])
|
||||
->when(!$isSpecialUser, function ($query) use ($provinceId) {
|
||||
$query->where('province_id', $provinceId);
|
||||
})
|
||||
->groupBy('item');
|
||||
|
||||
$activities = $provinceActivity
|
||||
->unionAll($countryActivity)
|
||||
->get();
|
||||
|
||||
$provinces = Province::all(['id', 'name_fa']);
|
||||
|
||||
return $this->successResponse([
|
||||
'activities' => $activities,
|
||||
'provinces' => $provinces,
|
||||
]);
|
||||
}
|
||||
|
||||
public function cityActivityPerItem(Request $request): JsonResponse
|
||||
{
|
||||
$provinceId = $request->province_id;
|
||||
$fromDate = $request->from_date ? $request->from_date . ' 00:00:00' : now()->startOfDay()->toDateTimeString();
|
||||
$toDate = $request->date_to ? $request->date_to . ' 23:59:59' : now()->endOfDay()->toDateTimeString();
|
||||
|
||||
$edarehActivity = RoadItemsProject::query()
|
||||
->selectRaw('
|
||||
COUNT(*) AS s,
|
||||
edarat_id AS c,
|
||||
item AS i')
|
||||
->where('status', '=', 1)
|
||||
->whereBetween('activity_date_time', [$fromDate, $toDate])
|
||||
->where('province_id', $provinceId)
|
||||
->groupBy('item', 'edarat_id');
|
||||
|
||||
$cityActivity = RoadItemsProject::query()
|
||||
->selectRaw('
|
||||
COUNT(*) AS s,
|
||||
-1 AS c,
|
||||
item AS i')
|
||||
->where('status', '=', 1)
|
||||
->whereBetween('activity_date_time', [$fromDate, $toDate])
|
||||
->where('province_id', $provinceId)
|
||||
->groupBy('item');
|
||||
|
||||
$activities = $edarehActivity
|
||||
->unionAll($cityActivity)
|
||||
->get();
|
||||
|
||||
$edarateShahri = EdarateShahri::query()->where('province_id', '=', $provinceId)->get(['id', 'name_fa']);
|
||||
|
||||
return $this->successResponse([
|
||||
'activities' => $activities,
|
||||
'edarateShahri' => $edarateShahri,
|
||||
]);
|
||||
}
|
||||
|
||||
public function map(Request $request): JsonResponse
|
||||
{
|
||||
$provinceId = $request->province_id;
|
||||
$cityId = $request->city_id;
|
||||
$subId = $request->sub_id;
|
||||
$item = $request->item;
|
||||
$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) => $query->where('province_id', '=', $provinceId))
|
||||
->when($cityId, fn($query) => $query->where('city_id', '=', $cityId))
|
||||
->when($subId, fn($query) => $query->where('sub_items', 'like', '%' . $subId . '%'))
|
||||
->when($item, fn($query) => $query->where('item', '=', $item))
|
||||
->when(!is_null($request->status), fn($query) => $query->where('status', '=', $request->status))
|
||||
->whereBetween('activity_date', [$dateFrom, $dateTo])
|
||||
->leftJoin('users', 'users.id', '=', 'road_items_projects.user_id')
|
||||
->select('road_items_projects.id as i', 'start_lat as l', 'start_lng as g', 'status')
|
||||
->get();
|
||||
|
||||
return $this->successResponse($data);
|
||||
}
|
||||
|
||||
public function activityExcelPerItem(Request $request): BinaryFileResponse
|
||||
{
|
||||
auth()->user()->addActivityComplete(1034);
|
||||
$name = 'گزارش از فعالیت روزانه و جاری - جدول 1 ' . verta()->now()->format('Y-m-d H-i') . '.xlsx';
|
||||
return Excel::download(new OneSheet($request->fromDate, $request->toDate, $request->province), $name);
|
||||
}
|
||||
|
||||
public function activityExcelPerSubItem(Request $request)
|
||||
{
|
||||
$url_correction = $request->province ? "&province={$request->province}" : "";
|
||||
|
||||
return match ($request->type) {
|
||||
1 => redirect("/reports/two/maremat?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction),
|
||||
2 => redirect("/reports/two/paksazi?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction),
|
||||
3 => redirect("/reports/two/alaem?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction),
|
||||
4 => redirect("/reports/two/hefaz?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction),
|
||||
5 => redirect("/reports/two/roshanaei?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction),
|
||||
6 => redirect("/reports/two/khatkeshi?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction),
|
||||
7 => redirect("/reports/two/rangamizi?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction),
|
||||
8 => redirect("/reports/two/shosteshoo?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction),
|
||||
9 => redirect("/reports/two/imensazi?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction),
|
||||
10 => redirect("/reports/two/harim?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction),
|
||||
11 => redirect("/reports/two/pol?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction),
|
||||
12 => redirect("/reports/two/toonel?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction),
|
||||
13 => redirect("/reports/two/zemestani?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction),
|
||||
14 => redirect("/reports/two/mashinalat?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction),
|
||||
15 => redirect("/reports/two/rahdar?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction),
|
||||
16 => redirect("/reports/two/ezterari?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction),
|
||||
20 => redirect("/reports/two/bazrasi?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction),
|
||||
default => response()->json([
|
||||
'error' => '404'
|
||||
], 404),
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,154 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\V3\Dashboard\Reports;
|
||||
|
||||
use App\Exports\V2\RoadPatrol\RoadPatrolTable\AllSheets as RoadPatrolTable;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Traits\ApiResponse;
|
||||
use App\Models\EdarateShahri;
|
||||
use App\Models\Province;
|
||||
use App\Models\RoadPatrolProject;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Maatwebsite\Excel\Facades\Excel;
|
||||
use Symfony\Component\HttpFoundation\BinaryFileResponse;
|
||||
|
||||
class RoadPatrolReportController extends Controller
|
||||
{
|
||||
use ApiResponse;
|
||||
public function provincePatrolActivity(Request $request): JsonResponse
|
||||
{
|
||||
$fromDate = $request->from_date ? $request->from_date . ' 00:00:00' : now()->startOfDay()->toDateTimeString();
|
||||
$dateTo = $request->date_to ? $request->date_to . ' 23:59:59' : now()->endOfDay()->toDateTimeString();
|
||||
|
||||
$activities = DB::select('SELECT
|
||||
"کشوری" as province_fa,
|
||||
-1 as province_id,
|
||||
COUNT(*) tedade,
|
||||
SUM(tedad_mavarede_moshede_shode_adi) as tedad_mavarede_moshede_shode_adi,
|
||||
SUM(tedad_mavarede_moshede_shode_fori) as tedad_mavarede_moshede_shode_fori,
|
||||
SUM(tedad_mavarede_moshede_shode_ani) as tedad_mavarede_moshede_shode_ani,
|
||||
SUM(tedad_mavarede_peygiri_shode) as tedad_mavarede_peygiri_shode,
|
||||
SUM(tedad_faliyat_sabt_shode) as tedad_faliyat_sabt_shode,
|
||||
ROUND(SUM(distance)) as masafat_tey_shode
|
||||
FROM (SELECT
|
||||
province_id,
|
||||
province_fa,
|
||||
distance,
|
||||
(SELECT COUNT(*) FROM `observed_items` oi WHERE rp.`id`= oi.road_patrol_id AND priority = 1) AS tedad_mavarede_moshede_shode_adi,
|
||||
(SELECT COUNT(*) FROM `observed_items` oi WHERE rp.`id`= oi.road_patrol_id AND priority = 2) AS tedad_mavarede_moshede_shode_fori,
|
||||
(SELECT COUNT(*) FROM `observed_items` oi WHERE rp.`id`= oi.road_patrol_id AND priority = 3) AS tedad_mavarede_moshede_shode_ani,
|
||||
(SELECT COUNT(*) FROM `observed_items` oii WHERE rp.`id`= oii.road_patrol_id AND oii.road_item_id IS NOT NULL AND priority IS NOT NULL) AS tedad_mavarede_peygiri_shode,
|
||||
(SELECT COUNT(*) FROM `observed_items` oii WHERE rp.`id`= oii.road_patrol_id AND oii.road_item_id IS NOT NULL AND priority IS NULL) AS tedad_faliyat_sabt_shode
|
||||
FROM `road_patrols` rp where rp.start_time BETWEEN "'.$fromDate.'" AND "'.$dateTo.'") temp
|
||||
union
|
||||
SELECT
|
||||
province_fa,
|
||||
province_id,
|
||||
COUNT(*) tedade,
|
||||
SUM(tedad_mavarede_moshede_shode_adi) as tedad_mavarede_moshede_shode_adi,
|
||||
SUM(tedad_mavarede_moshede_shode_fori) as tedad_mavarede_moshede_shode_fori,
|
||||
SUM(tedad_mavarede_moshede_shode_ani) as tedad_mavarede_moshede_shode_ani,
|
||||
SUM(tedad_mavarede_peygiri_shode) as tedad_mavarede_peygiri_shode,
|
||||
SUM(tedad_faliyat_sabt_shode) as tedad_faliyat_sabt_shode,
|
||||
ROUND(SUM(distance)) as masafat_tey_shode
|
||||
FROM (SELECT
|
||||
province_id,
|
||||
province_fa,
|
||||
distance,
|
||||
(SELECT COUNT(*) FROM `observed_items` oi WHERE rp.`id`= oi.road_patrol_id AND priority = 1) AS tedad_mavarede_moshede_shode_adi,
|
||||
(SELECT COUNT(*) FROM `observed_items` oi WHERE rp.`id`= oi.road_patrol_id AND priority = 2) AS tedad_mavarede_moshede_shode_fori,
|
||||
(SELECT COUNT(*) FROM `observed_items` oi WHERE rp.`id`= oi.road_patrol_id AND priority = 3) AS tedad_mavarede_moshede_shode_ani,
|
||||
(SELECT COUNT(*) FROM `observed_items` oii WHERE rp.`id`= oii.road_patrol_id AND oii.road_item_id IS NOT NULL AND priority IS NOT NULL) AS tedad_mavarede_peygiri_shode,
|
||||
(SELECT COUNT(*) FROM `observed_items` oii WHERE rp.`id`= oii.road_patrol_id AND oii.road_item_id IS NOT NULL AND priority IS NULL) AS tedad_faliyat_sabt_shode
|
||||
FROM `road_patrols` rp where rp.start_time BETWEEN "'.$fromDate.'" AND "'.$dateTo.'") temp
|
||||
GROUP BY province_id'
|
||||
);
|
||||
|
||||
$provinces = Province::all(['id', 'name_fa']);
|
||||
|
||||
return $this->successResponse([
|
||||
'activities' => $activities,
|
||||
'provinces' => $provinces
|
||||
]);
|
||||
}
|
||||
|
||||
public function cityPatrolActivity(Request $request): JsonResponse
|
||||
{
|
||||
$request->validate(["province_id" => "required",]);
|
||||
$fromDate = $request->from_date ? $request->from_date . ' 00:00:00' : now()->startOfDay()->toDateTimeString();
|
||||
$dateTo = $request->date_to ? $request->date_to . ' 23:59:59' : now()->endOfDay()->toDateTimeString();
|
||||
$provinceId = $request->province_id;
|
||||
|
||||
$activities = DB::select(
|
||||
'SELECT
|
||||
province_fa,
|
||||
province_id,
|
||||
-1 AS edare_id,
|
||||
"استانی" AS edare_name,
|
||||
COUNT(*) tedade,
|
||||
SUM(tedad_mavarede_moshede_shode_adi) as tedad_mavarede_moshede_shode_adi,
|
||||
SUM(tedad_mavarede_moshede_shode_fori) as tedad_mavarede_moshede_shode_fori,
|
||||
SUM(tedad_mavarede_moshede_shode_ani) as tedad_mavarede_moshede_shode_ani,
|
||||
SUM(tedad_mavarede_peygiri_shode) as tedad_mavarede_peygiri_shode,
|
||||
SUM(tedad_faliyat_sabt_shode) as tedad_faliyat_sabt_shode,
|
||||
ROUND(SUM(distance)) as masafat_tey_shode
|
||||
FROM (SELECT
|
||||
province_id,
|
||||
province_fa,
|
||||
edare_id,
|
||||
edare_name,
|
||||
distance,
|
||||
(SELECT COUNT(*) FROM `observed_items` oi WHERE rp.`id`= oi.road_patrol_id AND priority = 1) AS tedad_mavarede_moshede_shode_adi,
|
||||
(SELECT COUNT(*) FROM `observed_items` oi WHERE rp.`id`= oi.road_patrol_id AND priority = 2) AS tedad_mavarede_moshede_shode_fori,
|
||||
(SELECT COUNT(*) FROM `observed_items` oi WHERE rp.`id`= oi.road_patrol_id AND priority = 3) AS tedad_mavarede_moshede_shode_ani,
|
||||
(SELECT COUNT(*) FROM `observed_items` oii WHERE rp.`id`= oii.road_patrol_id AND oii.road_item_id IS NOT NULL AND priority IS NOT NULL) AS tedad_mavarede_peygiri_shode,
|
||||
(SELECT COUNT(*) FROM `observed_items` oii WHERE rp.`id`= oii.road_patrol_id AND oii.road_item_id IS NOT NULL AND priority IS NULL) AS tedad_faliyat_sabt_shode
|
||||
FROM `road_patrols` rp where rp.province_id = "'.$provinceId.'" AND rp.start_time BETWEEN "'.$fromDate.'" AND "'.$dateTo.'") temp
|
||||
UNION
|
||||
SELECT
|
||||
province_fa,
|
||||
province_id,
|
||||
edare_id,
|
||||
edare_name,
|
||||
COUNT(*) tedade,
|
||||
SUM(tedad_mavarede_moshede_shode_adi) as tedad_mavarede_moshede_shode_adi,
|
||||
SUM(tedad_mavarede_moshede_shode_fori) as tedad_mavarede_moshede_shode_fori,
|
||||
SUM(tedad_mavarede_moshede_shode_ani) as tedad_mavarede_moshede_shode_ani,
|
||||
SUM(tedad_mavarede_peygiri_shode) as tedad_mavarede_peygiri_shode,
|
||||
SUM(tedad_faliyat_sabt_shode) as tedad_faliyat_sabt_shode,
|
||||
ROUND(SUM(distance)) as masafat_tey_shode
|
||||
FROM (SELECT
|
||||
province_id,
|
||||
province_fa,
|
||||
edare_id,
|
||||
edare_name,
|
||||
distance,
|
||||
(SELECT COUNT(*) FROM `observed_items` oi WHERE rp.`id`= oi.road_patrol_id AND priority = 1) AS tedad_mavarede_moshede_shode_adi,
|
||||
(SELECT COUNT(*) FROM `observed_items` oi WHERE rp.`id`= oi.road_patrol_id AND priority = 2) AS tedad_mavarede_moshede_shode_fori,
|
||||
(SELECT COUNT(*) FROM `observed_items` oi WHERE rp.`id`= oi.road_patrol_id AND priority = 3) AS tedad_mavarede_moshede_shode_ani,
|
||||
(SELECT COUNT(*) FROM `observed_items` oii WHERE rp.`id`= oii.road_patrol_id AND oii.road_item_id IS NOT NULL AND priority IS NOT NULL) AS tedad_mavarede_peygiri_shode,
|
||||
(SELECT COUNT(*) FROM `observed_items` oii WHERE rp.`id`= oii.road_patrol_id AND oii.road_item_id IS NOT NULL AND priority IS NULL) AS tedad_faliyat_sabt_shode
|
||||
FROM `road_patrols` rp where rp.province_id = "'.$provinceId.'" AND rp.start_time BETWEEN "'.$fromDate.'" AND "'.$dateTo.'") temp
|
||||
GROUP BY edare_id
|
||||
'
|
||||
);
|
||||
|
||||
$edarateShahri = EdarateShahri::query()->where('province_id', '=', $provinceId)->get(['id', 'name_fa']);
|
||||
|
||||
return $this->successResponse([
|
||||
'activities' => $activities,
|
||||
'edarateShahri' => $edarateShahri,
|
||||
]);
|
||||
}
|
||||
|
||||
public function excel(Request $request): BinaryFileResponse
|
||||
{
|
||||
$name = 'گزارش از گشت راهداری و ترابری ' . verta()->now()->format('Y-m-d H-i') . '.xlsx';
|
||||
|
||||
return Excel::download(
|
||||
new RoadPatrolTable($request->from_date, $request->date_to), $name
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\V3;
|
||||
namespace App\Http\Controllers\V3\Dashboard;
|
||||
|
||||
use App\Exports\V2\RoadItems\OperatorCartableExport;
|
||||
use App\Exports\V2\RoadItems\SupervisorCartableExport;
|
||||
@@ -10,18 +10,14 @@ use App\Http\Requests\V3\RoadItemsProject\StoreRequest;
|
||||
use App\Http\Requests\V3\RoadItemsProject\UpdateRequest;
|
||||
use App\Http\Requests\V3\RoadItemsProject\VerifyBySupervisorRequest;
|
||||
use App\Http\Traits\ApiResponse;
|
||||
use App\Models\CMMSMachine;
|
||||
use App\Models\EdarateShahri;
|
||||
use App\Models\InfoItem;
|
||||
use App\Models\Rahdaran;
|
||||
use App\Models\RoadItemsProject;
|
||||
use App\Services\NominatimService;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\Gate;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
use Illuminate\Validation\ValidationException;
|
||||
use Maatwebsite\Excel\Facades\Excel;
|
||||
use Symfony\Component\HttpFoundation\BinaryFileResponse;
|
||||
@@ -36,7 +32,7 @@ class RoadItemsProjectController extends Controller
|
||||
{
|
||||
$columns = array(
|
||||
'id', 'user_id', 'start_lat', 'start_lng', 'end_lat',
|
||||
'end_lng', 'project_distance', 'item', 'item_fa', 'sub_item_fa',
|
||||
'end_lng', 'project_distance', 'item', 'item_fa', 'sub_item_fa', 'sub_item',
|
||||
'sub_item_data', 'created_at', 'updated_at', 'province_id', 'province_fa',
|
||||
'unit_fa', 'status', 'status_fa', 'supervisor_description', 'supervising_time',
|
||||
'supervisor_name', 'edarat_id', 'edarat_name', 'activity_date_time','cmmsMachines.machine_code'
|
||||
@@ -143,7 +139,7 @@ class RoadItemsProjectController extends Controller
|
||||
{
|
||||
$columns = array(
|
||||
'id', 'user_id', 'start_lat', 'start_lng', 'end_lat',
|
||||
'end_lng', 'project_distance', 'item', 'item_fa', 'sub_item_fa',
|
||||
'end_lng', 'project_distance', 'item', 'item_fa', 'sub_item_fa', 'sub_item',
|
||||
'sub_item_data', 'created_at', 'updated_at', 'province_id', 'province_fa',
|
||||
'unit_fa', 'status', 'status_fa', 'supervisor_description', 'supervising_time',
|
||||
'supervisor_name', 'edarat_id', 'edarat_name', 'activity_date_time', 'cmmsMachines.machine_code'
|
||||
@@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\V3;
|
||||
namespace App\Http\Controllers\V3\Dashboard;
|
||||
|
||||
use App\Exports\V2\RoadPatrol\OperatorCartableExport;
|
||||
use App\Exports\V2\RoadPatrol\SupervisorCartableExport;
|
||||
@@ -37,7 +37,7 @@ class RoadPatrolProjectController extends Controller
|
||||
'operator_name', 'officer_plaque', 'officer_phone_number', 'officer_name',
|
||||
'supervisor_description', 'supervising_time', 'supervisor_name', 'status',
|
||||
'status_fa', 'distance', 'province_id', 'province_fa', 'edare_id', 'edare_name',
|
||||
'start_time', 'end_time','description'
|
||||
'start_time', 'end_time','description', 'cmmsMachines.machine_code'
|
||||
);
|
||||
|
||||
$allowedFilters = $columns;
|
||||
@@ -47,13 +47,16 @@ class RoadPatrolProjectController extends Controller
|
||||
$query = null;
|
||||
|
||||
if ($user->hasPermissionTo('show-road-patrol-supervise-cartable')) {
|
||||
$query = RoadPatrol::query();
|
||||
$query = RoadPatrol::query()
|
||||
->with(['rahdaran:id,name,code', 'cmmsMachines:id,machine_code,car_name,plak_number']);
|
||||
}
|
||||
elseif ($user->hasPermissionTo('show-road-patrol-supervise-cartable-province')) {
|
||||
if (is_null($user->province_id)) {
|
||||
return $this->errorResponse('استانی برای شما در سامانه ثبت نشده است!');
|
||||
}
|
||||
$query = RoadPatrol::query()->where('province_id', '=', $user->province_id);
|
||||
$query = RoadPatrol::query()
|
||||
->with(['rahdaran:id,name,code', 'cmmsMachines:id,machine_code,car_name,plak_number'])
|
||||
->where('province_id', '=', $user->province_id);
|
||||
}
|
||||
|
||||
$data = DataTableFacade::run(
|
||||
@@ -123,13 +126,15 @@ class RoadPatrolProjectController extends Controller
|
||||
$columns = array(
|
||||
'id', 'start_lat', 'start_lon', 'end_lat', 'end_lon', 'officer_plaque',
|
||||
'officer_phone_number', 'officer_name', 'supervisor_description', 'supervising_time',
|
||||
'supervisor_name', 'status', 'status_fa', 'distance', 'start_time', 'end_time'
|
||||
'supervisor_name', 'status', 'status_fa', 'distance', 'start_time', 'end_time', 'cmmsMachines.machine_code'
|
||||
);
|
||||
|
||||
$allowedFilters = $columns;
|
||||
$allowedSortings = $columns;
|
||||
|
||||
$query = RoadPatrol::query()->where('operator_id', '=', auth()->user()->id);
|
||||
$query = RoadPatrol::query()
|
||||
->with(['rahdaran:id,name,code', 'cmmsMachines:id,machine_code,car_name,plak_number'])
|
||||
->where('operator_id', '=', auth()->user()->id);
|
||||
|
||||
$data = DataTableFacade::run(
|
||||
$query,
|
||||
@@ -140,7 +145,7 @@ class RoadPatrolProjectController extends Controller
|
||||
return response()->json($data);
|
||||
}
|
||||
|
||||
public function store(StoreRequest $request, NominatimService $nominatimService)
|
||||
public function store(StoreRequest $request, NominatimService $nominatimService): JsonResponse
|
||||
{
|
||||
$user = auth()->user();
|
||||
|
||||
@@ -156,24 +161,13 @@ class RoadPatrolProjectController extends Controller
|
||||
], 400);
|
||||
}
|
||||
|
||||
$start_coordinates = explode(',', $request->start_point);
|
||||
$end_coordinates = explode(',', $request->end_point);
|
||||
|
||||
$edare_id = $user->edarate_shahri_id ?? $user->edarate_ostani_id;
|
||||
$edare_name = $user->edarate_shahri_id ? $user->edarate_shahri_name : $user->edarate_ostani_name;
|
||||
|
||||
$road_patrol = DB::transaction(function () use ($request, $start_coordinates,
|
||||
$end_coordinates, $edare_id,
|
||||
$road_patrol = DB::transaction(function () use ($request, $edare_id,
|
||||
$edare_name, $nominatimService, $user) {
|
||||
|
||||
$road_patrol = RoadPatrol::query()->create([
|
||||
'start_lat' => $start_coordinates[0],
|
||||
'start_lon' => $start_coordinates[1],
|
||||
'end_lat' => $end_coordinates[0],
|
||||
'end_lon' => $end_coordinates[1],
|
||||
'officer_name' => $request->officer_name,
|
||||
'officer_phone_number' => $request->officer_phone_number,
|
||||
'officer_plaque' => $request->officer_plaque,
|
||||
'operator_id' => $user->id,
|
||||
'operator_name' => $user->name,
|
||||
'province_id' => $user->province_id,
|
||||
@@ -182,16 +176,20 @@ class RoadPatrolProjectController extends Controller
|
||||
'city_fa' => $user->city_fa,
|
||||
'edare_id' => $edare_id,
|
||||
'edare_name' => $edare_name,
|
||||
'start_way_id' => $nominatimService->get_way_id_from_nominatim($start_coordinates[0], $start_coordinates[1]),
|
||||
'end_way_id' => $nominatimService->get_way_id_from_nominatim($end_coordinates[0], $end_coordinates[1]),
|
||||
'status' => 0,
|
||||
'status_fa' => 'در حال بررسی',
|
||||
'distance' => $request->distance,
|
||||
'start_time' => $request->start_time,
|
||||
'end_time' => $request->end_time,
|
||||
'description' => $request->description ?? null,
|
||||
'fuel_consumption' => $request->fuel_consumption,
|
||||
'vehicle_runtime' => $request->vehicle_runtime,
|
||||
'stop_points' => json_encode($request->stop_points),
|
||||
]);
|
||||
|
||||
$road_patrol->rahdaran()->attach($request->road_patrol_rahdaran_id);
|
||||
$road_patrol->cmmsMachines()->attach($request->road_patrol_machines_id);
|
||||
|
||||
if ($request->observed_items) {
|
||||
foreach ($request->observed_items as $index => $item) {
|
||||
$info_item = InfoItem::where('item', $item['item_id'])
|
||||
@@ -285,6 +283,9 @@ class RoadPatrolProjectController extends Controller
|
||||
'message' => 'اقدام مربوطه قبلا رسیدگی شده است.'
|
||||
], 400);
|
||||
}
|
||||
|
||||
$road_item->rahdaran()->attach($item['road_item_rahdaran_id']);
|
||||
$road_item->cmmsMachines()->attach($item['road_item_machines_id']);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -297,10 +298,7 @@ class RoadPatrolProjectController extends Controller
|
||||
return $road_patrol;
|
||||
});
|
||||
|
||||
return response()->json([
|
||||
'road_patrol_id' => $road_patrol->id,
|
||||
'message' => 'succussful'
|
||||
]);
|
||||
return $this->successResponse();
|
||||
}
|
||||
|
||||
public function getReport(RoadPatrol $roadPatrol): JsonResponse
|
||||
30
app/Http/Controllers/V3/FMSVehicleManagementController.php
Normal file
30
app/Http/Controllers/V3/FMSVehicleManagementController.php
Normal file
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\V3;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Traits\ApiResponse;
|
||||
use App\Services\FMS\GetVehicleActivityService;
|
||||
use Exception;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class FMSVehicleManagementController extends Controller
|
||||
{
|
||||
use ApiResponse;
|
||||
|
||||
/**
|
||||
* @throws Exception
|
||||
*/
|
||||
public function getActivity(Request $request, GetVehicleActivityService $getVehicleActivityService): JsonResponse
|
||||
{
|
||||
$getVehicleActivityService->setInputParameters([
|
||||
"machineCode" => $request->machineCode,
|
||||
"startDT" => $request->startDT,
|
||||
"endDT" => $request->endDT,
|
||||
]);
|
||||
|
||||
$data = $getVehicleActivityService->run();
|
||||
return $this->successResponse($data);
|
||||
}
|
||||
}
|
||||
@@ -30,6 +30,7 @@ class ProfileController extends Controller
|
||||
'major' => $user->major,
|
||||
'degree' => $user->degree,
|
||||
'mobile' => $user->mobile,
|
||||
'province_id' => $user->province_id,
|
||||
'avatar' => $user->avatarUrl()
|
||||
]);
|
||||
}
|
||||
@@ -81,7 +82,7 @@ class ProfileController extends Controller
|
||||
|
||||
public function addActivity(Request $request): JsonResponse
|
||||
{
|
||||
auth()->user()->addActivityComplete($request->query('activityCode'));
|
||||
auth()->user()->addActivityComplete($request->activityCode);
|
||||
return $this->successResponse();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace App\Http\Requests\V3\RoadPatrolProject;
|
||||
|
||||
use App\Rules\VerificationCode;
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
|
||||
class StoreRequest extends FormRequest
|
||||
@@ -11,7 +12,7 @@ class StoreRequest extends FormRequest
|
||||
*/
|
||||
public function authorize(): bool
|
||||
{
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -22,14 +23,17 @@ class StoreRequest extends FormRequest
|
||||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
'start_point' => 'required',
|
||||
'end_point' => 'required',
|
||||
'verification_code' => ['required', 'string', new VerificationCode($this->phone_number)],
|
||||
'distance' => 'numeric',
|
||||
'officer_name' => 'required',
|
||||
'officer_plaque' => 'required',
|
||||
'officer_phone_number' => 'required|digits:11',
|
||||
'start_time' => 'required|date_format:Y-m-d H:i',
|
||||
'end_time' => 'required|date_format:Y-m-d H:i|after:start_time',
|
||||
'fuel_consumption' => 'required|integer',
|
||||
'vehicle_runtime' => 'required|integer',
|
||||
'stop_points' => 'required|array',
|
||||
'road_patrol_machines_id' => 'required|array',
|
||||
'road_patrol_machines_id.*' => 'required|exists:cmms_machines,id',
|
||||
'road_patrol_rahdaran_id' => 'required|array',
|
||||
'road_patrol_rahdaran_id.*' => 'required|exists:rahdaran,id',
|
||||
|
||||
'observed_items' => 'array',
|
||||
'observed_items.*.item_id' => 'required|integer',
|
||||
@@ -41,13 +45,23 @@ class StoreRequest extends FormRequest
|
||||
// road item projects fields
|
||||
'observed_items.*.start_point' => 'required',
|
||||
'observed_items.*.end_point' => '',
|
||||
'observed_items.*.amount' => 'numeric|required_if:instant_action,1',
|
||||
'observed_items.*.amount' => 'numeric|required_if:observed_items.*.instant_action,1',
|
||||
'observed_items.*.before_image' => 'image|max:4096',
|
||||
'observed_items.*.after_image' => 'image|max:4096',
|
||||
'observed_items.*.priority' => 'integer|in:1,2,3|required_if:instant_action,0',
|
||||
'observed_items.*.priority_fa' => 'string|required_if:instant_action,0',
|
||||
'observed_items.*.priority' => 'integer|in:1,2,3|required_if:observed_items.*.instant_action,0',
|
||||
'observed_items.*.priority_fa' => 'string|required_if:observed_items.*.instant_action,0',
|
||||
'description' => 'string|required_with:observed_items',
|
||||
|
||||
'observed_items.*.road_item_machines_id' => 'required_if:observed_items.*.instant_action,1|array',
|
||||
'observed_items.*.road_item_machines_id.*' => 'required_if:observed_items.*.instant_action,1|exists:cmms_machines,id',
|
||||
'observed_items.*.road_item_rahdaran_id' => 'required_if:observed_items.*.instant_action,1|array',
|
||||
'observed_items.*.road_item_rahdaran_id.*' => 'required_if:observed_items.*.instant_action,1|exists:rahdaran,id',
|
||||
];
|
||||
}
|
||||
|
||||
public function attributes(): array
|
||||
{
|
||||
return [
|
||||
'start_time' => 'ساعت شروع گشت',
|
||||
'end_time' => 'ساعت پایان گشت',
|
||||
];
|
||||
|
||||
@@ -4,6 +4,8 @@ namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||
use Illuminate\Database\Eloquent\Relations\MorphToMany;
|
||||
|
||||
class RoadPatrol extends Model
|
||||
{
|
||||
@@ -11,8 +13,28 @@ class RoadPatrol extends Model
|
||||
|
||||
protected $guarded = ['id'];
|
||||
|
||||
public function observedItems()
|
||||
public function observedItems(): HasMany
|
||||
{
|
||||
return $this->hasMany(ObservedItem::class);
|
||||
}
|
||||
|
||||
public function cmmsMachines(): MorphToMany
|
||||
{
|
||||
return $this->morphToMany(CMMSMachine::class,
|
||||
'machinable',
|
||||
'machinables',
|
||||
'machinable_id',
|
||||
'machine_id'
|
||||
);
|
||||
}
|
||||
|
||||
public function rahdaran(): MorphToMany
|
||||
{
|
||||
return $this->morphToMany(Rahdaran::class,
|
||||
'rahdarable',
|
||||
'rahdarables',
|
||||
'rahdarable_id',
|
||||
'rahdar_id',
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
27
app/Rules/VerificationCode.php
Normal file
27
app/Rules/VerificationCode.php
Normal file
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
namespace App\Rules;
|
||||
|
||||
use App\Facades\Otp\Otp;
|
||||
use Closure;
|
||||
use Illuminate\Contracts\Validation\ValidationRule;
|
||||
use Illuminate\Translation\PotentiallyTranslatedString;
|
||||
|
||||
class VerificationCode implements ValidationRule
|
||||
{
|
||||
public function __construct(protected string $phone_number){}
|
||||
|
||||
/**
|
||||
* Run the validation rule.
|
||||
*
|
||||
* @param \Closure(string): PotentiallyTranslatedString $fail
|
||||
*/
|
||||
public function validate(string $attribute, mixed $value, Closure $fail): void
|
||||
{
|
||||
$verified = Otp::verifyOtpToken($this->phone_number, $value);
|
||||
|
||||
if (!$verified) {
|
||||
$fail('The :attribute is not valid.')->translate();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -63,6 +63,7 @@ class GetVehicleActivityService
|
||||
$inputData = $this->inputParameters + array(
|
||||
"username" => $this->username,
|
||||
"password" => $this->password,
|
||||
"minStopDuration" => 1,
|
||||
);
|
||||
|
||||
return json_encode($inputData);
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
Schema::table('road_patrols', function (Blueprint $table) {
|
||||
$table->double('start_lat', null, 0)->nullable()->change();
|
||||
$table->double('start_lon', null, 0)->nullable()->change();
|
||||
$table->double('end_lat', null, 0)->nullable()->change();
|
||||
$table->double('end_lon', null, 0)->nullable()->change();
|
||||
$table->integer('fuel_consumption')->nullable();
|
||||
$table->integer('vehicle_runtime')->nullable();
|
||||
$table->json('stop_points')->nullable();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
Schema::table('road_patrols', function (Blueprint $table) {
|
||||
$table->double('start_lat', null, 0)->change();
|
||||
$table->double('start_lon', null, 0)->change();
|
||||
$table->double('end_lat', null, 0)->change();
|
||||
$table->double('end_lon', null, 0)->change();
|
||||
$table->dropColumn('fuel_consumption');
|
||||
$table->dropColumn('vehicle_runtime');
|
||||
$table->dropColumn('stop_points');
|
||||
});
|
||||
}
|
||||
};
|
||||
@@ -1,15 +1,19 @@
|
||||
<?php
|
||||
|
||||
use App\Http\Controllers\V3\Auth\LogoutController;
|
||||
use App\Http\Controllers\V3\Azmayesh\AzmayeshController;
|
||||
use App\Http\Controllers\V3\Azmayesh\AzmayeshSampleController;
|
||||
use App\Http\Controllers\V3\Azmayesh\AzmayeshTypeController;
|
||||
use App\Http\Controllers\V3\CMMSMachinesController;
|
||||
use App\Http\Controllers\V3\Dashboard\Azmayesh\AzmayeshController;
|
||||
use App\Http\Controllers\V3\Dashboard\Azmayesh\AzmayeshSampleController;
|
||||
use App\Http\Controllers\V3\Dashboard\Azmayesh\AzmayeshTypeController;
|
||||
use App\Http\Controllers\V3\Dashboard\ObservedItemController;
|
||||
use App\Http\Controllers\V3\Dashboard\Reports\RoadItemsReportController;
|
||||
use App\Http\Controllers\V3\Dashboard\Reports\RoadPatrolReportController;
|
||||
use App\Http\Controllers\V3\Dashboard\RoadItemsProjectController;
|
||||
use App\Http\Controllers\V3\Dashboard\RoadPatrolProjectController;
|
||||
use App\Http\Controllers\V3\FMSVehicleManagementController;
|
||||
use App\Http\Controllers\V3\Harim\DivarkeshiController;
|
||||
use App\Http\Controllers\V3\ProfileController;
|
||||
use App\Http\Controllers\V3\RahdaranController;
|
||||
use App\Http\Controllers\V3\RoadItemsProjectController;
|
||||
use App\Http\Controllers\V3\RoadPatrolProjectController;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
|
||||
Route::prefix('harim')->name('harim')->group(function () {
|
||||
@@ -170,3 +174,39 @@ Route::prefix('rahdaran')
|
||||
Route::get('/list', 'list')->name('list');
|
||||
Route::get('/search', 'search')->name('search');
|
||||
});
|
||||
|
||||
Route::prefix('fms_vehicle')
|
||||
->name('fmsVehicle.')
|
||||
->controller(FMSVehicleManagementController::class)
|
||||
->group(function () {
|
||||
Route::post('/get_activity', 'getActivity')->name('getActivity');
|
||||
});
|
||||
|
||||
Route::prefix('observed_items')
|
||||
->name('observedItem.')
|
||||
->controller(ObservedItemController::class)
|
||||
->group(function () {
|
||||
Route::get('/filter', 'filter')->name('filter');
|
||||
Route::get('/{observedItem}', 'show')->name('show');
|
||||
});
|
||||
|
||||
Route::prefix('road_item_reports')
|
||||
->name('roadItemReports.')
|
||||
->controller(RoadItemsReportController::class)
|
||||
->group(function () {
|
||||
Route::get('/get_sub_items', 'getSubItems')->name('getSubItems');
|
||||
Route::get('/province_activity_per_sub_item', 'provinceActivityPerSubItem')->name('provinceActivityPerSubItem');
|
||||
Route::get('/city_activity_per_sub_item', 'cityActivityPerSubItem')->name('cityActivityPerSubItem');
|
||||
Route::get('/province_activity_per_item', 'provinceActivityPerItem')->name('provinceActivityPerItem');
|
||||
Route::get('/city_activity_per_item', 'cityActivityPerItem')->name('cityActivityPerItem');
|
||||
Route::get('/map', 'map')->name('map');
|
||||
});
|
||||
|
||||
Route::prefix('road_patrol_reports')
|
||||
->name('roadPatrolReports.')
|
||||
->controller(RoadPatrolReportController::class)
|
||||
->group(function () {
|
||||
Route::get('/province_activity', 'provincePatrolActivity')->name('provincePatrolActivity');
|
||||
Route::get('/city_activity', 'cityPatrolActivity')->name('cityPatrolActivity');
|
||||
Route::get('/excel', 'excel')->name('excel');
|
||||
});
|
||||
|
||||
@@ -520,3 +520,4 @@ INSERT INTO edarate_shahri (name_fa,province_id,created_at,updated_at) VALUES
|
||||
('اداره خمام',28,'2023-06-17 08:43:14','2023-06-17 08:43:14'),
|
||||
('اداره اصلاندوز',3,'2023-08-15 09:33:55','2023-08-15 09:33:55');
|
||||
('اداره گالیکش',27,'2024-11-16 14:33:55','2024-11-16 14:33:55');
|
||||
('آزادراه ساوه-تهران',32,'2025-01-06 14:33:55','2025-01-06 14:33:55');
|
||||
|
||||
@@ -149,3 +149,15 @@ INSERT INTO log_lists (description,log_unique_code,action_type,is_done) VALUES
|
||||
('ثبت فعالیت روزانه','1154','action',0),
|
||||
('حذف نگهداری و حریم','1155','action',0),
|
||||
('ورود به نقشه نگهداری حریم','1156','show',1);
|
||||
INSERT INTO log_lists (description,log_unique_code,action_type,is_done) VALUES
|
||||
('ورود به کارتابل آزمایشات','1157','action',0),
|
||||
('ثبت آزمایش','1158','action',0),
|
||||
('ویرایش آزمایش','1159','action',0),
|
||||
('حذف آزمایش','1160','action',0),
|
||||
('ورود به کارتابل نوع آزمایشات','1161','action',0),
|
||||
('ثبت نوع آزمایش','1162','action',0),
|
||||
('ویرایش نوع آزمایش','1163','action',0),
|
||||
('حذف نوع آزمایش','1164','action',0),
|
||||
('ثبت نمونه آزمایش','1165','action',0),
|
||||
('ویرایش نمونه آزمایش','1166','action',0),
|
||||
('حذف نمونه آزمایش','1167','action',0),
|
||||
|
||||
Reference in New Issue
Block a user