diff --git a/app/Exports/V3/SafetyAndPrivacy/CountryActivityReport.php b/app/Exports/V3/SafetyAndPrivacy/CountryActivityReport.php
new file mode 100644
index 00000000..99a9fb7d
--- /dev/null
+++ b/app/Exports/V3/SafetyAndPrivacy/CountryActivityReport.php
@@ -0,0 +1,62 @@
+data;
+
+ return view('v3.Reports.SafetyAndPrivacy.CountryActivityReport', [
+ 'data' => $data['activities'],
+ 'fromDate' => $data['fromDate'],
+ 'toDate' => $data['toDate'],
+ ]);
+ }
+
+ public function registerEvents(): array
+ {
+ return [
+ AfterSheet::class => function (AfterSheet $event) {
+ $event->sheet->getDelegate()->setRightToLeft(true);
+ },
+ ];
+ }
+
+ public function drawings(): array
+ {
+ $drawing = new Drawing();
+ $drawing->setName('Logo');
+ $drawing->setDescription('This is my logo');
+ $drawing->setPath(public_path('/dist/logo.png'));
+ $drawing->setWidth(50);
+ $drawing->setHeight(50);
+ $drawing->setOffsetX(5);
+ $drawing->setOffsetY(5);
+ $drawing->setCoordinates('A1');
+
+ $drawing2 = new Drawing();
+ $drawing2->setName('Logo');
+ $drawing2->setDescription('This is my logo');
+ $drawing2->setPath(public_path('/dist/141icon.png'));
+ $drawing2->setWidth(50);
+ $drawing2->setHeight(50);
+ $drawing2->setOffsetX(5);
+ $drawing2->setOffsetY(5);
+ $drawing2->setCoordinates('K1');
+ return [$drawing, $drawing2];
+ }
+}
\ No newline at end of file
diff --git a/app/Exports/V3/SafetyAndPrivacy/ProvinceActivityReport.php b/app/Exports/V3/SafetyAndPrivacy/ProvinceActivityReport.php
new file mode 100644
index 00000000..c5ffa6ab
--- /dev/null
+++ b/app/Exports/V3/SafetyAndPrivacy/ProvinceActivityReport.php
@@ -0,0 +1,62 @@
+data;
+
+ return view('v3.Reports.SafetyAndPrivacy.ProvinceActivityReport', [
+ 'data' => $data['activities'],
+ 'fromDate' => $data['fromDate'],
+ 'toDate' => $data['toDate'],
+ ]);
+ }
+
+ public function registerEvents(): array
+ {
+ return [
+ AfterSheet::class => function (AfterSheet $event) {
+ $event->sheet->getDelegate()->setRightToLeft(true);
+ },
+ ];
+ }
+
+ public function drawings(): array
+ {
+ $drawing = new Drawing();
+ $drawing->setName('Logo');
+ $drawing->setDescription('This is my logo');
+ $drawing->setPath(public_path('/dist/logo.png'));
+ $drawing->setWidth(50);
+ $drawing->setHeight(50);
+ $drawing->setOffsetX(5);
+ $drawing->setOffsetY(5);
+ $drawing->setCoordinates('A1');
+
+ $drawing2 = new Drawing();
+ $drawing2->setName('Logo');
+ $drawing2->setDescription('This is my logo');
+ $drawing2->setPath(public_path('/dist/141icon.png'));
+ $drawing2->setWidth(50);
+ $drawing2->setHeight(50);
+ $drawing2->setOffsetX(5);
+ $drawing2->setOffsetY(5);
+ $drawing2->setCoordinates('K1');
+ return [$drawing, $drawing2];
+ }
+}
\ No newline at end of file
diff --git a/app/Http/Controllers/V3/Dashboard/Reports/SafetyAndPrivacyReportController.php b/app/Http/Controllers/V3/Dashboard/Reports/SafetyAndPrivacyReportController.php
index 19151055..cc4291f8 100644
--- a/app/Http/Controllers/V3/Dashboard/Reports/SafetyAndPrivacyReportController.php
+++ b/app/Http/Controllers/V3/Dashboard/Reports/SafetyAndPrivacyReportController.php
@@ -2,19 +2,43 @@
namespace App\Http\Controllers\V3\Dashboard\Reports;
+use App\Exports\V3\SafetyAndPrivacy\CountryActivityReport;
+use App\Exports\V3\SafetyAndPrivacy\ProvinceActivityReport;
use App\Http\Controllers\Controller;
+use App\Http\Traits\ApiResponse;
use App\Services\Cartables\SafetyAndPrivacyTableService;
+use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
+use Maatwebsite\Excel\Facades\Excel;
+use Symfony\Component\HttpFoundation\BinaryFileResponse;
class SafetyAndPrivacyReportController extends Controller
{
- public function countryActivity(Request $request, SafetyAndPrivacyTableService $safetyAndPrivacyTableService)
- {
+ use ApiResponse;
+ public function countryActivity(Request $request, SafetyAndPrivacyTableService $safetyAndPrivacyTableService): JsonResponse
+ {
+ $data = $safetyAndPrivacyTableService->countryActivity($request);
+ return $this->successResponse($data['activities']);
}
- public function provinceActivity(Request $request, SafetyAndPrivacyTableService $safetyAndPrivacyTableService)
+ public function provinceActivity(Request $request, SafetyAndPrivacyTableService $safetyAndPrivacyTableService): JsonResponse
{
+ $data = $safetyAndPrivacyTableService->provinceActivity($request);
+ return $this->successResponse($data['activities']);
+ }
+ public function countryExcelActivity(Request $request, SafetyAndPrivacyTableService $safetyAndPrivacyTableService): BinaryFileResponse
+ {
+ $data = $safetyAndPrivacyTableService->countryActivity($request);
+ $name = 'گزارش از نگهداری حریم راه ' . verta()->now()->format('Y-m-d H-i') . '.xlsx';
+ return Excel::download(new CountryActivityReport($data), $name);
+ }
+
+ public function provinceExcelActivity(Request $request, SafetyAndPrivacyTableService $safetyAndPrivacyTableService): BinaryFileResponse
+ {
+ $data = $safetyAndPrivacyTableService->provinceActivity($request);
+ $name = 'گزارش از نگهداری حریم راه ' . verta()->now()->format('Y-m-d H-i') . '.xlsx';
+ return Excel::download(new ProvinceActivityReport($data), $name);
}
}
diff --git a/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacyController.php b/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacyController.php
index 5c67f6a4..425a203e 100644
--- a/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacyController.php
+++ b/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacyController.php
@@ -176,10 +176,10 @@ class SafetyAndPrivacyController extends Controller
return $this->successResponse($result);
}
- public function subItem(): JsonResponse
+ public function subItems(): JsonResponse
{
return $this->successResponse(InfoItem::query()
- ->where('item', 17)
+ ->where('item', '=', 17)
->select('id', 'item', 'item_str', 'sub_item_str as name', 'sub_item_unit as unit', 'needs_image', 'needs_end_point', 'sub_item')
->get());
}
diff --git a/app/Services/Cartables/SafetyAndPrivacyTableService.php b/app/Services/Cartables/SafetyAndPrivacyTableService.php
index e646367c..65a1dc3f 100644
--- a/app/Services/Cartables/SafetyAndPrivacyTableService.php
+++ b/app/Services/Cartables/SafetyAndPrivacyTableService.php
@@ -59,9 +59,6 @@ class SafetyAndPrivacyTableService
$country = DB::select(
"SELECT COUNT(*) as qty,info_id, step,step_fa, info_fa FROM safety_and_privacy where created_at BETWEEN '".$fromDate."' and '".$toDate."' GROUP BY info_id,step"
);
- $provinces = DB::select(
- "SELECT province_id, COUNT(*) as qty,info_id, step, step_fa, info_fa FROM safety_and_privacy where created_at BETWEEN '".$fromDate."' and '".$toDate."' GROUP BY info_id,step,province_id,province_fa"
- );
$countryTotalSum = 0;
foreach ($country as $key => $value) {
@@ -86,9 +83,12 @@ class SafetyAndPrivacyTableService
$activities[$value->id]["sum"] = 0;
$activities[$value->id]["name_fa"] = $value->name_fa;
- $activities[$value->id]["id"] = $value->id;
}
+ $provinces = DB::select(
+ "SELECT province_id, province_fa, COUNT(*) as qty,info_id, step, step_fa, info_fa FROM safety_and_privacy where created_at BETWEEN '".$fromDate."' and '".$toDate."' GROUP BY info_id,step,province_id,province_fa"
+ );
+
$provinceTotalSum = 0;
foreach ($provinces as $key => $value) {
$provinceTotalSum += $value->qty;
@@ -103,4 +103,59 @@ class SafetyAndPrivacyTableService
'toDate' => $toDate,
];
}
+
+ public function provinceActivity(Request $request): array
+ {
+ $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();
+ $provinceId = $request->province_id;
+ $activities = [];
+
+ $province = DB::select('
+ SELECT COUNT(*) as qty,info_id, step,step_fa, info_fa FROM safety_and_privacy where province_id ='.$provinceId.' and created_at BETWEEN "'.$fromDate.'" and "'.$toDate.'" GROUP BY info_id,step
+ ');
+
+ $provinceTotalSum = 0;
+ foreach ($province as $key => $value) {
+ $provinceTotalSum += $value->qty;
+ $activities[-1]["info-".$value->info_id]["step-".$value->step] = $value->qty;
+ $activities[-1]["sum"] = $provinceTotalSum;
+ }
+
+ foreach (\App\Models\EdarateShahri::query()->where('province_id', $provinceId)->get() as $key => $value) {
+ $activities[$value->id]["info-89"]["step-1"] = 0;
+ $activities[$value->id]["info-89"]["step-2"] = 0;
+ $activities[$value->id]["info-89"]["step-3"] = 0;
+
+ $activities[$value->id]["info-90"]["step-1"] = 0;
+ $activities[$value->id]["info-90"]["step-2"] = 0;
+ $activities[$value->id]["info-90"]["step-3"] = 0;
+
+ $activities[$value->id]["info-91"]["step-1"] = 0;
+ $activities[$value->id]["info-91"]["step-2"] = 0;
+ $activities[$value->id]["info-91"]["step-3"] = 0;
+
+ $activities[$value->id]["sum"] = 0;
+ $activities[$value->id]["name_fa"] = $value->name_fa;
+ }
+
+
+ $cities = DB::select('
+ SELECT edare_shahri_id, COUNT(*) as qty,info_id, step,step_fa, info_fa FROM safety_and_privacy where province_id ='.$provinceId.' and created_at BETWEEN "'.$fromDate.'" and "'.$toDate.'" GROUP BY info_id,step,edare_shahri_id
+ ');
+
+ $cityTotalSum = 0;
+ foreach ($cities as $key => $value) {
+ $cityTotalSum += $value->qty;
+ $activities[$value->edare_shahri_id]["info-".$value->info_id]["step-".$value->step] = $value->qty;
+ $activities[$value->edare_shahri_id][""] = $value;
+ $activities[$value->edare_shahri_id]["sum"] = $cityTotalSum;
+ }
+
+ return [
+ 'activities' => $activities,
+ 'fromDate' => $fromDate,
+ 'toDate' => $toDate,
+ ];
+ }
}
diff --git a/resources/views/v3/Reports/SafetyAndPrivacy/CountryActivityReport.blade.php b/resources/views/v3/Reports/SafetyAndPrivacy/CountryActivityReport.blade.php
new file mode 100644
index 00000000..2959afed
--- /dev/null
+++ b/resources/views/v3/Reports/SafetyAndPrivacy/CountryActivityReport.blade.php
@@ -0,0 +1,107 @@
+
+
+
+
+
+
+
+ کشوری
+
+
+
+
+
+
+
+
+ |
+ تاریخ دریافت گزارش: {{ verta()->now()->format('Y/m/d H:i') }}
+ |
+
+
+
+ |
+ |
+
+
+ |
+ گزارش نگهداری حریم راه از تاریخ
+ {{ verta($fromDate)->format('Y/n/j') }}
+ تا
+ تاریخ
+ {{ verta($toDate)->format('Y/n/j') }}
+
+ |
+
+
+
+
+
+ |
+ گام اول (شناسایی)
+ |
+
+ گام دوم (مستندات قضایی)
+ |
+
+ گام سوم (برخورد)
+ |
+
+ گام اول (شناسایی)
+ |
+
+ گام دوم (مستندات قضایی)
+ |
+
+ گام سوم (برخورد)
+ |
+
+ گام اول (شناسایی)
+ |
+
+ گام دوم (مستندات قضایی)
+ |
+
+ گام سوم (برخورد)
+ |
+
+
+
+ @foreach ($data as $item)
+
+ | {{ $item['name_fa'] }} |
+ {{ $item['sum'] }} |
+ {{ $item['info-89']['step-1'] }} |
+ {{ $item['info-89']['step-2'] }} |
+ {{ $item['info-89']['step-3'] }} |
+ {{ $item['info-90']['step-1'] }} |
+ {{ $item['info-90']['step-2'] }} |
+ {{ $item['info-90']['step-3'] }} |
+ {{ $item['info-91']['step-1'] }} |
+ {{ $item['info-91']['step-2'] }} |
+ {{ $item['info-91']['step-3'] }} |
+
+ @endforeach
+
+
+
+
diff --git a/resources/views/v3/Reports/SafetyAndPrivacy/ProvinceActivityReport.blade.php b/resources/views/v3/Reports/SafetyAndPrivacy/ProvinceActivityReport.blade.php
new file mode 100644
index 00000000..ffe68f28
--- /dev/null
+++ b/resources/views/v3/Reports/SafetyAndPrivacy/ProvinceActivityReport.blade.php
@@ -0,0 +1,133 @@
+
+
+
+
+
+
+
+ استانی
+
+
+
+
+
+
+
+
+ |
+ تاریخ دریافت گزارش: {{ verta()->now()->format('Y/m/d H:i') }}
+ |
+
+
+
+ |
+ |
+
+
+ |
+ گزارش نگهداری حریم راه از تاریخ
+ {{ verta($fromDate)->format('Y/n/j') }}
+ تا
+ تاریخ
+ {{ verta($toDate)->format('Y/n/j') }}
+
+ |
+
+
+
+
+ |
+ گام اول (شناسایی)
+ |
+
+ گام دوم (مستندات قضایی)
+ |
+
+ گام سوم (برخورد)
+ |
+
+ گام اول (شناسایی)
+ |
+
+ گام دوم (مستندات قضایی)
+ |
+
+ گام سوم (برخورد)
+ |
+
+ گام اول (شناسایی)
+ |
+
+ گام دوم (مستندات قضایی)
+ |
+
+ گام سوم (برخورد)
+ |
+
+
+
+ @foreach ($data as $item)
+ @if ($item['is_province'] == '1')
+
+ |
+ {{ $item['name_fa'] }} |
+
+ {{ $item['sum'] }} |
+
+ {{ $item['info-89']['step-1'] }} |
+
+ {{ $item['info-89']['step-2'] }} |
+
+ {{ $item['info-89']['step-3'] }} |
+
+ {{ $item['info-90']['step-1'] }} |
+
+ {{ $item['info-90']['step-2'] }} |
+
+ {{ $item['info-90']['step-3'] }} |
+
+ {{ $item['info-91']['step-1'] }} |
+
+ {{ $item['info-91']['step-2'] }} |
+
+ {{ $item['info-91']['step-3'] }} |
+
+ @else
+
+ | {{ $item['name_fa'] }} |
+ {{ $item['sum'] }} |
+ {{ $item['info-89']['step-1'] }} |
+ {{ $item['info-89']['step-2'] }} |
+ {{ $item['info-89']['step-3'] }} |
+ {{ $item['info-90']['step-1'] }} |
+ {{ $item['info-90']['step-2'] }} |
+ {{ $item['info-90']['step-3'] }} |
+ {{ $item['info-91']['step-1'] }} |
+ {{ $item['info-91']['step-2'] }} |
+ {{ $item['info-91']['step-3'] }} |
+
+ @endif
+ @endforeach
+
+
+
+
diff --git a/routes/v3.php b/routes/v3.php
index 62781fe6..199f7d56 100644
--- a/routes/v3.php
+++ b/routes/v3.php
@@ -327,11 +327,12 @@ Route::prefix('safety_and_privacy')
->controller(SafetyAndPrivacyController::class)
->group(function () {
Route::get('/', 'index')->name('index')->middleware('permission:show-safety-and-privacy-operator-cartable|show-safety-and-privacy-operator-cartable-province|show-safety-and-privacy-operator-cartable-edarate-shahri');
- Route::get('/first_step_store', 'firstStepStore')->name('firstStepStore')->middleware('permission:add-safety-and-privacy');
- Route::get('/second_step_store', 'secondStepStore')->name('secondStepStore')->middleware('permission:add-safety-and-privacy');
- Route::get('/third_step_store', 'thirdStepStore')->name('thirdStepStore')->middleware('permission:add-safety-and-privacy');
+ Route::post('/first_step_store', 'firstStepStore')->name('firstStepStore')->middleware('permission:add-safety-and-privacy');
+ Route::post('/second_step_store', 'secondStepStore')->name('secondStepStore')->middleware('permission:add-safety-and-privacy');
+ Route::post('/third_step_store', 'thirdStepStore')->name('thirdStepStore')->middleware('permission:add-safety-and-privacy');
+ Route::get('/sub_items', 'subItems')->name('subItems');
Route::get('/{safetyAndPrivacy}', 'show')->name('show');
- Route::get('/{safetyAndPrivacy}', 'destroy')->name('destroy')->middleware('permission:delete-safety-and-privacy');
+ Route::delete('/{safetyAndPrivacy}', 'destroy')->name('destroy')->middleware('permission:delete-safety-and-privacy');
Route::get('/deserialize/{safetyAndPrivacy}', 'deserialize')->name('deserialize');
});
@@ -339,5 +340,8 @@ Route::prefix('safety_and_privacy_report')
->name('SafetyAndPrivacyReport.')
->controller(SafetyAndPrivacyReportController::class)
->group(function () {
- Route::get('/', 'index')->name('index');
+ Route::get('/country_activity', 'countryActivity')->name('countryActivity');
+ Route::get('/province_activity', 'provinceActivity')->name('provinceActivity');
+ Route::get('/country_excel_activity', 'countryExcelActivity')->name('countryExcelActivity');
+ Route::get('/province_excel_activity', 'provinceExcelActivity')->name('provinceExcelActivity');
});