Merge branch 'feature/ActivityReport' into 'develop'
Feature/activity report See merge request witelgroup/rms_v2!57
This commit is contained in:
@@ -1,9 +1,11 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\V3\Azmayesh;
|
namespace App\Http\Controllers\V3\Dashboard\Azmayesh;
|
||||||
|
|
||||||
use App\Facades\DataTable\DataTableFacade;
|
use App\Facades\DataTable\DataTableFacade;
|
||||||
use App\Http\Controllers\Controller;
|
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\Http\Traits\ApiResponse;
|
||||||
use App\Models\Azmayesh;
|
use App\Models\Azmayesh;
|
||||||
use App\Models\AzmayeshType;
|
use App\Models\AzmayeshType;
|
||||||
@@ -11,8 +13,6 @@ use App\Models\Province;
|
|||||||
use Illuminate\Database\QueryException;
|
use Illuminate\Database\QueryException;
|
||||||
use Illuminate\Http\JsonResponse;
|
use Illuminate\Http\JsonResponse;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use App\Http\Requests\V3\Azmayesh\StoreRequest;
|
|
||||||
use App\Http\Requests\V3\Azmayesh\UpdateRequest;
|
|
||||||
|
|
||||||
class AzmayeshController extends Controller
|
class AzmayeshController extends Controller
|
||||||
{
|
{
|
||||||
@@ -1,18 +1,16 @@
|
|||||||
<?php
|
<?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\Facades\DataTable\DataTableFacade;
|
||||||
use App\Http\Traits\ApiResponse;
|
use App\Http\Controllers\Controller;
|
||||||
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\Requests\V3\AzmayeshSample\StoreRequest;
|
use App\Http\Requests\V3\AzmayeshSample\StoreRequest;
|
||||||
use App\Http\Requests\V3\AzmayeshSample\UpdateRequest;
|
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
|
class AzmayeshSampleController extends Controller
|
||||||
{
|
{
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\V3\Azmayesh;
|
namespace App\Http\Controllers\V3\Dashboard\Azmayesh;
|
||||||
|
|
||||||
use App\Facades\DataTable\DataTableFacade;
|
use App\Facades\DataTable\DataTableFacade;
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\V3;
|
namespace App\Http\Controllers\V3\Dashboard;
|
||||||
|
|
||||||
use App\Facades\DataTable\DataTableFacade;
|
use App\Facades\DataTable\DataTableFacade;
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
@@ -1,16 +1,18 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\V3\Reports;
|
namespace App\Http\Controllers\V3\Dashboard\Reports;
|
||||||
|
|
||||||
|
use App\Exports\Activities\One\AllSheets as OneSheet;
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use App\Http\Traits\ApiResponse;
|
use App\Http\Traits\ApiResponse;
|
||||||
use App\Models\EdarateShahri;
|
use App\Models\EdarateShahri;
|
||||||
use App\Models\InfoItem;
|
use App\Models\InfoItem;
|
||||||
use App\Models\Province;
|
use App\Models\Province;
|
||||||
use App\Models\RoadItemsProject;
|
use App\Models\RoadItemsProject;
|
||||||
use App\Models\RoadPatrol;
|
|
||||||
use Illuminate\Http\JsonResponse;
|
use Illuminate\Http\JsonResponse;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
|
use Maatwebsite\Excel\Facades\Excel;
|
||||||
|
use Symfony\Component\HttpFoundation\BinaryFileResponse;
|
||||||
|
|
||||||
class RoadItemsReportController extends Controller
|
class RoadItemsReportController extends Controller
|
||||||
{
|
{
|
||||||
@@ -54,18 +56,17 @@ class RoadItemsReportController extends Controller
|
|||||||
->groupBy('sub_item')
|
->groupBy('sub_item')
|
||||||
->get();
|
->get();
|
||||||
|
|
||||||
$infoItems = InfoItem::query()->where('item', '=', $item)->get()->keyBy('sub_item');
|
|
||||||
|
|
||||||
$provinceRoadItemsPerSubItem->each(function ($value) use ($infoItems) {
|
$activities = $provinceRoadItemsPerSubItem->push(...$countryRoadItemsPerSubItem);
|
||||||
if (isset($infoItems[$value->t])) {
|
$provinces = Province::all(['id', 'name_fa']);
|
||||||
$value->u = $infoItems[$value->t]->sub_item_unit;
|
$subItems = InfoItem::query()
|
||||||
}
|
->where('item', $item)
|
||||||
});
|
->get(['id', 'item', 'item_str', 'sub_item_str', 'sub_item_unit', 'sub_item']);
|
||||||
|
|
||||||
return $this->successResponse([
|
return $this->successResponse([
|
||||||
'provincesData' => $provinceRoadItemsPerSubItem,
|
'activities' => $activities,
|
||||||
'countryData' => $countryRoadItemsPerSubItem,
|
'sub_items' => $subItems,
|
||||||
'items' => $infoItems
|
'provinces' => $provinces,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -90,17 +91,31 @@ class RoadItemsReportController extends Controller
|
|||||||
->groupBy('edarat_id', 'sub_item')
|
->groupBy('edarat_id', 'sub_item')
|
||||||
->get();
|
->get();
|
||||||
|
|
||||||
$items = InfoItem::query()->where('item', $item)->get()->keyBy('sub_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,
|
||||||
|
-1 AS ci
|
||||||
|
')
|
||||||
|
->where('item', '=', $item)
|
||||||
|
->where('province_id', '=', $province)
|
||||||
|
->whereBetween('activity_date_time', [$fromDate, $toDate])
|
||||||
|
->where('status', '=', 1)
|
||||||
|
->groupBy('sub_item')
|
||||||
|
->get();
|
||||||
|
|
||||||
$cityRoadItemsPerSubItem->each(function ($value) use ($items) {
|
|
||||||
if (isset($items[$value->t])) {
|
$edarateShahri = EdarateShahri::query()->where('province_id', '=', $province)->get(['id', 'name_fa']);
|
||||||
$value->u = $items[$value->t]->sub_item_unit;
|
$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([
|
return $this->successResponse([
|
||||||
'citiesData' => $cityRoadItemsPerSubItem,
|
'activities' => $activities,
|
||||||
'items' => $items
|
'edarateShahri' => $edarateShahri,
|
||||||
|
'sub_items' => $subItems,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -113,10 +128,11 @@ class RoadItemsReportController extends Controller
|
|||||||
$fromDate = $request->from_date ? $request->from_date . ' 00:00:00' : now()->startOfDay()->toDateTimeString();
|
$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();
|
$toDate = $request->date_to ? $request->date_to . ' 23:59:59' : now()->endOfDay()->toDateTimeString();
|
||||||
$user = auth()->user();
|
$user = auth()->user();
|
||||||
$isSpecialUser = in_array($user->username, ['witel', 'drdanesh']);
|
// $isSpecialUser = in_array($user->username, ['witel', 'drdanesh']);
|
||||||
|
$isSpecialUser = $user->hasPermissionTo("show-road-item-supervise-cartable");
|
||||||
$provinceId = $isSpecialUser ? null : $user->province_id;
|
$provinceId = $isSpecialUser ? null : $user->province_id;
|
||||||
|
|
||||||
$roadItemsProjectsQuery = RoadItemsProject::query()
|
$provinceActivity = RoadItemsProject::query()
|
||||||
->selectRaw('COUNT(*) AS s, province_id AS p, item AS i')
|
->selectRaw('COUNT(*) AS s, province_id AS p, item AS i')
|
||||||
->where('status', 1)
|
->where('status', 1)
|
||||||
->whereBetween('activity_date_time', [$fromDate, $toDate])
|
->whereBetween('activity_date_time', [$fromDate, $toDate])
|
||||||
@@ -125,7 +141,7 @@ class RoadItemsReportController extends Controller
|
|||||||
})
|
})
|
||||||
->groupBy('province_id', 'item');
|
->groupBy('province_id', 'item');
|
||||||
|
|
||||||
$roadItemsProjectsSummaryQuery = RoadItemsProject::query()
|
$countryActivity = RoadItemsProject::query()
|
||||||
->selectRaw('COUNT(*) AS s, -1 AS p, item AS i')
|
->selectRaw('COUNT(*) AS s, -1 AS p, item AS i')
|
||||||
->where('status', 1)
|
->where('status', 1)
|
||||||
->whereBetween('activity_date_time', [$fromDate, $toDate])
|
->whereBetween('activity_date_time', [$fromDate, $toDate])
|
||||||
@@ -134,14 +150,14 @@ class RoadItemsReportController extends Controller
|
|||||||
})
|
})
|
||||||
->groupBy('item');
|
->groupBy('item');
|
||||||
|
|
||||||
$data = $roadItemsProjectsQuery
|
$activities = $provinceActivity
|
||||||
->unionAll($roadItemsProjectsSummaryQuery)
|
->unionAll($countryActivity)
|
||||||
->get();
|
->get();
|
||||||
|
|
||||||
$provinces = Province::all(['id', 'name_fa']);
|
$provinces = Province::all(['id', 'name_fa']);
|
||||||
|
|
||||||
return $this->successResponse([
|
return $this->successResponse([
|
||||||
'activities' => $data,
|
'activities' => $activities,
|
||||||
'provinces' => $provinces,
|
'provinces' => $provinces,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
@@ -152,7 +168,7 @@ class RoadItemsReportController extends Controller
|
|||||||
$fromDate = $request->from_date ? $request->from_date . ' 00:00:00' : now()->startOfDay()->toDateTimeString();
|
$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();
|
$toDate = $request->date_to ? $request->date_to . ' 23:59:59' : now()->endOfDay()->toDateTimeString();
|
||||||
|
|
||||||
$roadItemsProjectsQuery = RoadItemsProject::query()
|
$edarehActivity = RoadItemsProject::query()
|
||||||
->selectRaw('
|
->selectRaw('
|
||||||
COUNT(*) AS s,
|
COUNT(*) AS s,
|
||||||
edarat_id AS c,
|
edarat_id AS c,
|
||||||
@@ -162,7 +178,7 @@ class RoadItemsReportController extends Controller
|
|||||||
->where('province_id', $provinceId)
|
->where('province_id', $provinceId)
|
||||||
->groupBy('item', 'edarat_id');
|
->groupBy('item', 'edarat_id');
|
||||||
|
|
||||||
$roadItemsProjectsSummaryQuery = RoadItemsProject::query()
|
$cityActivity = RoadItemsProject::query()
|
||||||
->selectRaw('
|
->selectRaw('
|
||||||
COUNT(*) AS s,
|
COUNT(*) AS s,
|
||||||
-1 AS c,
|
-1 AS c,
|
||||||
@@ -172,15 +188,15 @@ class RoadItemsReportController extends Controller
|
|||||||
->where('province_id', $provinceId)
|
->where('province_id', $provinceId)
|
||||||
->groupBy('item');
|
->groupBy('item');
|
||||||
|
|
||||||
$data = $roadItemsProjectsQuery
|
$activities = $edarehActivity
|
||||||
->unionAll($roadItemsProjectsSummaryQuery)
|
->unionAll($cityActivity)
|
||||||
->get();
|
->get();
|
||||||
|
|
||||||
$edarateShahri = EdarateShahri::query()->where('province_id', '=', $provinceId)->get(['id', 'name']);
|
$edarateShahri = EdarateShahri::query()->where('province_id', '=', $provinceId)->get(['id', 'name_fa']);
|
||||||
|
|
||||||
return $this->successResponse([
|
return $this->successResponse([
|
||||||
'activities' => $data,
|
'activities' => $activities,
|
||||||
'edaratShahri' => $edarateShahri,
|
'edarateShahri' => $edarateShahri,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -207,4 +223,39 @@ class RoadItemsReportController extends Controller
|
|||||||
|
|
||||||
return $this->successResponse($data);
|
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
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\V3;
|
namespace App\Http\Controllers\V3\Dashboard;
|
||||||
|
|
||||||
use App\Exports\V2\RoadItems\OperatorCartableExport;
|
use App\Exports\V2\RoadItems\OperatorCartableExport;
|
||||||
use App\Exports\V2\RoadItems\SupervisorCartableExport;
|
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\UpdateRequest;
|
||||||
use App\Http\Requests\V3\RoadItemsProject\VerifyBySupervisorRequest;
|
use App\Http\Requests\V3\RoadItemsProject\VerifyBySupervisorRequest;
|
||||||
use App\Http\Traits\ApiResponse;
|
use App\Http\Traits\ApiResponse;
|
||||||
use App\Models\CMMSMachine;
|
|
||||||
use App\Models\EdarateShahri;
|
use App\Models\EdarateShahri;
|
||||||
use App\Models\InfoItem;
|
use App\Models\InfoItem;
|
||||||
use App\Models\Rahdaran;
|
|
||||||
use App\Models\RoadItemsProject;
|
use App\Models\RoadItemsProject;
|
||||||
use App\Services\NominatimService;
|
use App\Services\NominatimService;
|
||||||
use Illuminate\Http\JsonResponse;
|
use Illuminate\Http\JsonResponse;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\Auth;
|
|
||||||
use Illuminate\Support\Facades\Gate;
|
use Illuminate\Support\Facades\Gate;
|
||||||
use Illuminate\Support\Facades\Storage;
|
use Illuminate\Support\Facades\Storage;
|
||||||
use Illuminate\Support\Facades\Validator;
|
|
||||||
use Illuminate\Validation\ValidationException;
|
use Illuminate\Validation\ValidationException;
|
||||||
use Maatwebsite\Excel\Facades\Excel;
|
use Maatwebsite\Excel\Facades\Excel;
|
||||||
use Symfony\Component\HttpFoundation\BinaryFileResponse;
|
use Symfony\Component\HttpFoundation\BinaryFileResponse;
|
||||||
@@ -36,7 +32,7 @@ class RoadItemsProjectController extends Controller
|
|||||||
{
|
{
|
||||||
$columns = array(
|
$columns = array(
|
||||||
'id', 'user_id', 'start_lat', 'start_lng', 'end_lat',
|
'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',
|
'sub_item_data', 'created_at', 'updated_at', 'province_id', 'province_fa',
|
||||||
'unit_fa', 'status', 'status_fa', 'supervisor_description', 'supervising_time',
|
'unit_fa', 'status', 'status_fa', 'supervisor_description', 'supervising_time',
|
||||||
'supervisor_name', 'edarat_id', 'edarat_name', 'activity_date_time','cmmsMachines.machine_code'
|
'supervisor_name', 'edarat_id', 'edarat_name', 'activity_date_time','cmmsMachines.machine_code'
|
||||||
@@ -143,7 +139,7 @@ class RoadItemsProjectController extends Controller
|
|||||||
{
|
{
|
||||||
$columns = array(
|
$columns = array(
|
||||||
'id', 'user_id', 'start_lat', 'start_lng', 'end_lat',
|
'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',
|
'sub_item_data', 'created_at', 'updated_at', 'province_id', 'province_fa',
|
||||||
'unit_fa', 'status', 'status_fa', 'supervisor_description', 'supervising_time',
|
'unit_fa', 'status', 'status_fa', 'supervisor_description', 'supervising_time',
|
||||||
'supervisor_name', 'edarat_id', 'edarat_name', 'activity_date_time', 'cmmsMachines.machine_code'
|
'supervisor_name', 'edarat_id', 'edarat_name', 'activity_date_time', 'cmmsMachines.machine_code'
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\V3;
|
namespace App\Http\Controllers\V3\Dashboard;
|
||||||
|
|
||||||
use App\Exports\V2\RoadPatrol\OperatorCartableExport;
|
use App\Exports\V2\RoadPatrol\OperatorCartableExport;
|
||||||
use App\Exports\V2\RoadPatrol\SupervisorCartableExport;
|
use App\Exports\V2\RoadPatrol\SupervisorCartableExport;
|
||||||
@@ -30,6 +30,7 @@ class ProfileController extends Controller
|
|||||||
'major' => $user->major,
|
'major' => $user->major,
|
||||||
'degree' => $user->degree,
|
'degree' => $user->degree,
|
||||||
'mobile' => $user->mobile,
|
'mobile' => $user->mobile,
|
||||||
|
'province_id' => $user->province_id,
|
||||||
'avatar' => $user->avatarUrl()
|
'avatar' => $user->avatarUrl()
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,44 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Http\Controllers\V3\Reports;
|
|
||||||
|
|
||||||
use App\Exports\V2\RoadPatrol\RoadPatrolTable\AllSheets as RoadPatrolTable;
|
|
||||||
use App\Http\Controllers\Controller;
|
|
||||||
use App\Http\Traits\ApiResponse;
|
|
||||||
use App\Models\RoadPatrolProject;
|
|
||||||
use Illuminate\Http\JsonResponse;
|
|
||||||
use Illuminate\Http\Request;
|
|
||||||
use Maatwebsite\Excel\Facades\Excel;
|
|
||||||
use Symfony\Component\HttpFoundation\BinaryFileResponse;
|
|
||||||
|
|
||||||
class RoadPatrolReportController extends Controller
|
|
||||||
{
|
|
||||||
use ApiResponse;
|
|
||||||
public function provincePatrolData(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();
|
|
||||||
|
|
||||||
$data = RoadPatrolProject::provincePatrolData($fromDate, $dateTo);
|
|
||||||
return $this->successResponse($data);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function edarehPatrolData(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();
|
|
||||||
|
|
||||||
$data = RoadPatrolProject::edarehPatrolData($fromDate, $dateTo, $request->province_id);
|
|
||||||
return $this->successResponse($data);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function roadPatrolsReportTable(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,19 +1,19 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
use App\Http\Controllers\V3\Auth\LogoutController;
|
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\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\FMSVehicleManagementController;
|
||||||
use App\Http\Controllers\V3\Harim\DivarkeshiController;
|
use App\Http\Controllers\V3\Harim\DivarkeshiController;
|
||||||
use App\Http\Controllers\V3\ObservedItemController;
|
|
||||||
use App\Http\Controllers\V3\ProfileController;
|
use App\Http\Controllers\V3\ProfileController;
|
||||||
use App\Http\Controllers\V3\RahdaranController;
|
use App\Http\Controllers\V3\RahdaranController;
|
||||||
use App\Http\Controllers\V3\Reports\RoadItemsReportController;
|
|
||||||
use App\Http\Controllers\V3\Reports\RoadPatrolReportController;
|
|
||||||
use App\Http\Controllers\V3\RoadItemsProjectController;
|
|
||||||
use App\Http\Controllers\V3\RoadPatrolProjectController;
|
|
||||||
use Illuminate\Support\Facades\Route;
|
use Illuminate\Support\Facades\Route;
|
||||||
|
|
||||||
Route::prefix('harim')->name('harim')->group(function () {
|
Route::prefix('harim')->name('harim')->group(function () {
|
||||||
@@ -195,10 +195,10 @@ Route::prefix('road_item_reports')
|
|||||||
->controller(RoadItemsReportController::class)
|
->controller(RoadItemsReportController::class)
|
||||||
->group(function () {
|
->group(function () {
|
||||||
Route::get('/get_sub_items', 'getSubItems')->name('getSubItems');
|
Route::get('/get_sub_items', 'getSubItems')->name('getSubItems');
|
||||||
Route::get('/get_items', 'provinceActivityPerSubItem')->name('provinceActivityPerSubItem');
|
Route::get('/province_activity_per_sub_item', 'provinceActivityPerSubItem')->name('provinceActivityPerSubItem');
|
||||||
Route::get('/get_items_city', 'cityActivityPerSubItem')->name('cityActivityPerSubItem');
|
Route::get('/city_activity_per_sub_item', 'cityActivityPerSubItem')->name('cityActivityPerSubItem');
|
||||||
Route::get('/province_statistics', 'provinceActivityPerItem')->name('provinceActivityPerItem');
|
Route::get('/province_activity_per_item', 'provinceActivityPerItem')->name('provinceActivityPerItem');
|
||||||
Route::get('/city_statistics', 'cityActivityPerItem')->name('cityActivityPerItem');
|
Route::get('/city_activity_per_item', 'cityActivityPerItem')->name('cityActivityPerItem');
|
||||||
Route::get('/map', 'map')->name('map');
|
Route::get('/map', 'map')->name('map');
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -206,7 +206,7 @@ Route::prefix('road_patrol_reports')
|
|||||||
->name('roadPatrolReports.')
|
->name('roadPatrolReports.')
|
||||||
->controller(RoadPatrolReportController::class)
|
->controller(RoadPatrolReportController::class)
|
||||||
->group(function () {
|
->group(function () {
|
||||||
Route::get('/province_data', 'provincePatrolData')->name('provincePatrolData');
|
Route::get('/province_activity', 'provincePatrolActivity')->name('provincePatrolActivity');
|
||||||
Route::get('/edareh_data', 'edarehPatrolData')->name('edarehPatrolData');
|
Route::get('/city_activity', 'cityPatrolActivity')->name('cityPatrolActivity');
|
||||||
Route::get('/report_excel', 'roadPatrolsReportTable')->name('roadPatrolsReportTable');
|
Route::get('/excel', 'excel')->name('excel');
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user