Merge branch 'bugfix/NikarayanService' into 'develop'

Bugfix/nikarayan service

See merge request witelgroup/rms_v2!123
This commit is contained in:
2025-05-31 10:31:57 +00:00
13 changed files with 383 additions and 334 deletions

View File

@@ -26,20 +26,19 @@ class Kernel extends ConsoleKernel
protected function schedule(Schedule $schedule)
{
$schedule->command('webservice:roadobserved')
->everyFiveMinutes()->appendOutputTo(storage_path('logs/nikarayan.log'));
->everyTenMinutes()->appendOutputTo(storage_path('logs/nikarayan.log'));
$schedule->command('command:sendcontractsmsnotification')
// ->everyMinute()->appendOutputTo(storage_path('logs/contractSms.log'));
->dailyAt('10:00')->appendOutputTo(storage_path('logs/contractSms.log'));
$schedule->command('reports:rms-summary')
->dailyAt('00:00')->appendOutputTo(storage_path('logs/report_summary.log'));
$schedule->command("webservice:roadobserved --daily-mode")
->dailyAt('00:17')->appendOutputTo(storage_path('logs/nikarayan.log'));
->dailyAt('00:05')->appendOutputTo(storage_path('logs/nikarayan.log'));
$schedule->command("webservice:roadobserved --daily-mode")
->dailyAt('00:47')->appendOutputTo(storage_path('logs/nikarayan.log'));
->dailyAt('00:45')->appendOutputTo(storage_path('logs/nikarayan.log'));
}
/**

View File

@@ -38,10 +38,10 @@ class PendingComplaintsExport implements FromView, ShouldAutoSize, WithEvents, W
return $query->where('road_observeds.province_id', $province_id);
})
->when(($fromDate && $toDate), function ($query) use ($fromDate, $toDate) {
return $query->whereBetween('road_observeds.created_at', [$fromDate, $toDate]);
return $query->whereBetween('road_observeds.StartTime_DateTime', [$fromDate, $toDate]);
})
->selectRaw('fk_RegisteredEventMessage, road_observeds.id, Title, FeatureTypeTitle, MobileForSendEventSms,
road_observeds.created_at, rms_last_activity, rms_last_activity_fa, status,
road_observeds.StartTime_DateTime, rms_last_activity, rms_last_activity_fa, status,
status_fa, supervisor_description, rms_description, province_fa, city_fa, Description, edarate_shahri.name_fa as edarate_shahri_name_fa, lat, lng')
->orderBy('status')
->orderBy('road_observeds.id', 'desc')
@@ -60,10 +60,10 @@ class PendingComplaintsExport implements FromView, ShouldAutoSize, WithEvents, W
->where('rms_status', 0)
->whereNotNull('road_observeds.province_id')
->when(($fromDate && $toDate), function ($query) use ($fromDate, $toDate) {
return $query->whereBetween('road_observeds.created_at', [$fromDate, $toDate]);
return $query->whereBetween('road_observeds.StartTime_DateTime', [$fromDate, $toDate]);
})
->selectRaw('fk_RegisteredEventMessage, road_observeds.id, Title, FeatureTypeTitle, MobileForSendEventSms,
road_observeds.created_at, rms_last_activity, rms_last_activity_fa, status,
road_observeds.StartTime_DateTime, rms_last_activity, rms_last_activity_fa, status,
status_fa, supervisor_description, rms_description, province_fa, city_fa, Description, edarate_shahri.name_fa as edarate_shahri_name_fa, lat, lng')
->orderBy('status')
->orderBy('road_observeds.id', 'desc')
@@ -81,10 +81,10 @@ class PendingComplaintsExport implements FromView, ShouldAutoSize, WithEvents, W
->where('rms_status', 0)
->whereNotNull('edarate_shahri_id')
->when(($fromDate && $toDate), function ($query) use ($fromDate, $toDate) {
return $query->whereBetween('road_observeds.created_at', [$fromDate, $toDate]);
return $query->whereBetween('road_observeds.StartTime_DateTime', [$fromDate, $toDate]);
})
->selectRaw('fk_RegisteredEventMessage, road_observeds.id, Title, FeatureTypeTitle, MobileForSendEventSms,
road_observeds.created_at, rms_last_activity, rms_last_activity_fa, status,
road_observeds.StartTime_DateTime, rms_last_activity, rms_last_activity_fa, status,
status_fa, supervisor_description, rms_description, province_fa, city_fa, Description, edarate_shahri.name_fa as edarate_shahri_name_fa, lat, lng')
->orderBy('status')
->orderBy('road_observeds.id', 'desc')

View File

@@ -1,28 +0,0 @@
<?php
namespace App\Http\Controllers\V3\Dashboard\Reports;
use App\Exports\V2\RoadObservation\ReportComplaintsExport;
use App\Http\Controllers\Controller;
use App\Models\RoadObserved;
use App\Services\Cartables\RoadObservationTableService;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Maatwebsite\Excel\Facades\Excel;
use Symfony\Component\HttpFoundation\BinaryFileResponse;
class RoadObservationReportController extends Controller
{
public function index(Request $request, RoadObservationTableService $roadObservationTableService): JsonResponse
{
$data = $roadObservationTableService->reportIndex($request);
return response()->json($data['data']);
}
public function excelReport(Request $request, RoadObservationTableService $roadObservationTableService): BinaryFileResponse
{
$name = 'گزارش رسیدگی به شکایات واکنش سریع ' . verta()->now()->format('Y-m-d H:i') . '.xlsx';
$data = $roadObservationTableService->reportIndex($request);
return Excel::download(new ReportComplaintsExport($data), $name);
}
}

View File

@@ -1,91 +1,54 @@
<?php
namespace App\Http\Controllers\V3\Dashboard;
namespace App\Http\Controllers\V3\Dashboard\RoadObservation;
use App\Exports\V3\RoadObservation\ComplaintsReport;
use App\Exports\V3\RoadObservation\OperatorCartableReport;
use App\Exports\V3\RoadObservation\SupervisorCartableReport;
use App\Facades\DataTable\DataTableFacade;
use App\Facades\File\FileFacade;
use App\Facades\Sms\Sms;
use App\Http\Controllers\Controller;
use App\Http\Requests\V3\RoadObservation\ModifyRegisterationRequest;
use App\Http\Requests\V3\RoadObservation\ReferRequest;
use App\Http\Requests\V3\RoadObservation\RegisterRequest;
use App\Http\Requests\V3\RoadObservation\RestoreRequest;
use App\Http\Requests\V3\RoadObservation\VerifyBySupervisorRequest;
use App\Http\Traits\ApiResponse;
use App\Models\EdarateShahri;
use App\Models\Province;
use App\Models\RoadObservationHistory;
use App\Models\RoadObserved;
use App\Models\User;
use App\Services\Cartables\RoadObservation\OperatorService;
use App\Services\NikarayanService;
use Carbon\Carbon;
use Hekmatinasser\Verta\Verta;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use App\Services\Cartables\RoadObservationTableService;
use Illuminate\Support\Facades\DB;
use Maatwebsite\Excel\Facades\Excel;
use SoapFault;
use Symfony\Component\HttpFoundation\BinaryFileResponse;
class RoadObservationController extends Controller
class OperatorController
{
use ApiResponse;
public function supervisorIndex(Request $request,RoadObservationTableService $roadObservationTableService ): JsonResponse
public function cartableIndex(Request $request, OperatorService $operatorService): JsonResponse
{
return response()->json($roadObservationTableService->supervisorCartableIndex($request));
return response()->json($operatorService->cartableIndex($request));
}
public function verifyBySupervisor(VerifyBySupervisorRequest $request, RoadObserved $roadObserved): JsonResponse
{
$statusFa = $request->verify == 1 ? 'تایید شده' : 'عدم تایید';
$roadObserved->update([
'status' => $request->verify,
'status_fa' => $statusFa,
'supervisor_id' => auth()->user()->id,
'supervisor_name' => auth()->user()->name,
'supervisor_description' => $request->description,
'supervising_time' => now(),
]);
auth()->user()->addActivityComplete(1138);
return $this->successResponse();
}
public function supervisorCartableReport(Request $request, RoadObservationTableService $roadObservationTableService): BinaryFileResponse
{
$name = 'گزارش از کارتابل ارزیابی واکنش سریع '. verta()->now()->format('Y-m-d H:i') . '.xlsx';
$data = $roadObservationTableService->supervisorCartableIndex($request);
return Excel::download(new SupervisorCartableReport($data['data']), $name);
}
public function operatorIndex(Request $request, RoadObservationTableService $roadObservationTableService): JsonResponse
{
return response()->json($roadObservationTableService->operatorCartableIndex($request));
}
public function operatorCartableReport(Request $request, RoadObservationTableService $roadObservationTableService): BinaryFileResponse
public function cartableReport(Request $request, OperatorService $operatorService): BinaryFileResponse
{
$name = 'گزارش از کارتابل عملیات واکنش سریع ' . verta()->now()->format('Y-m-d H:i') . '.xlsx';
$data = $roadObservationTableService->operatorCartableIndex($request);
$data = $operatorService->cartableIndex($request);
return Excel::download(new OperatorCartableReport($data['data']), $name);
}
public function complaintsIndex(Request $request, RoadObservationTableService $roadObservationTableService): JsonResponse
public function complaintsIndex(Request $request, OperatorService $operatorService): JsonResponse
{
return response()->json($roadObservationTableService->complaintsIndex($request));
return response()->json($operatorService->complaintsIndex($request));
}
public function complaintsReport(Request $request, RoadObservationTableService $roadObservationTableService): BinaryFileResponse
public function complaintsReport(Request $request, OperatorService $operatorService): BinaryFileResponse
{
$name = 'گزارش از رسیدگی به شکایات واکنش سریع ' . verta()->now()->format('Y-m-d H:i') . '.xlsx';
$data = $roadObservationTableService->complaintsIndex($request);
$data = $operatorService->complaintsIndex($request);
return Excel::download(new ComplaintsReport($data['data']), $name);
}
@@ -144,7 +107,6 @@ class RoadObservationController extends Controller
auth()->user()->addActivityComplete(1142);
$nikarayanService->updateRoadObservedInfoByNikarayan($request, $roadObserved, json_encode($roadObservedHistoryData['new_files']));
});
return $this->successResponse();
@@ -262,49 +224,4 @@ class RoadObservationController extends Controller
}
return $this->successResponse($data);
}
public function restore(RestoreRequest $request, RoadObserved $roadObserved): JsonResponse
{
if ($roadObserved->image_before) {
FileFacade::delete($roadObserved->image_before);
}
if ($roadObserved->image_after) {
FileFacade::delete($roadObserved->image_after);
}
$roadObserved->update([
'image_before' => null,
'image_after' => null,
'rms_last_activity' => null,
'rms_last_activity_fa' => null,
'updated_at_fa' => null,
'updated_at' => null,
'rms_status' => 0,
'status' => null,
'status_fa' => null,
]);
RoadObservationHistory::query()->create([
'id' => $roadObserved->id,
'user_id' => auth()->user()->id,
'action' => 'restore',
'description' => $request->restore_description,
]);
auth()->user()->addActivityComplete(1141);
return $this->successResponse();
}
public function map(Request $request): JsonResponse
{
return response()->json(DataTableFacade::run(
RoadObserved::query(),
$request,
allowedFilters: ['*'],
allowedSortings: ['*'],
allowedSelects: ['id', 'lat', 'lng', 'status']
));
}
}
}

View File

@@ -0,0 +1,42 @@
<?php
namespace App\Http\Controllers\V3\Dashboard\RoadObservation;
use App\Exports\V2\RoadObservation\ReportComplaintsExport;
use App\Facades\DataTable\DataTableFacade;
use App\Http\Traits\ApiResponse;
use App\Models\RoadObserved;
use App\Services\Cartables\RoadObservation\ReportService;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Maatwebsite\Excel\Facades\Excel;
use Symfony\Component\HttpFoundation\BinaryFileResponse;
class ReportController
{
use ApiResponse;
public function index(Request $request, ReportService $reportService): JsonResponse
{
$data = $reportService->index($request);
return response()->json($data['data']);
}
public function excel(Request $request, ReportService $reportService): BinaryFileResponse
{
$name = 'گزارش رسیدگی به شکایات واکنش سریع ' . verta()->now()->format('Y-m-d H:i') . '.xlsx';
$data = $reportService->index($request);
return Excel::download(new ReportComplaintsExport($data), $name);
}
public function map(Request $request): JsonResponse
{
return response()->json(DataTableFacade::run(
RoadObserved::query(),
$request,
allowedFilters: ['*'],
allowedSortings: ['*'],
allowedSelects: ['id', 'lat', 'lng', 'status']
));
}
}

View File

@@ -0,0 +1,87 @@
<?php
namespace App\Http\Controllers\V3\Dashboard\RoadObservation;
use App\Exports\V3\RoadObservation\SupervisorCartableReport;
use App\Facades\File\FileFacade;
use App\Http\Requests\V3\RoadObservation\RestoreRequest;
use App\Http\Requests\V3\RoadObservation\VerifyBySupervisorRequest;
use App\Http\Traits\ApiResponse;
use App\Models\RoadObservationHistory;
use App\Models\RoadObserved;
use App\Services\Cartables\RoadObservation\SupervisorService;
use App\Services\Cartables\RoadObservationTableService;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Maatwebsite\Excel\Facades\Excel;
use Symfony\Component\HttpFoundation\BinaryFileResponse;
class SupervisorController
{
use ApiResponse;
public function index(Request $request, SupervisorService $supervisorService): JsonResponse
{
return response()->json($supervisorService->index($request));
}
public function verify(VerifyBySupervisorRequest $request, RoadObserved $roadObserved): JsonResponse
{
$statusFa = $request->verify == 1 ? 'تایید شده' : 'عدم تایید';
$roadObserved->update([
'status' => $request->verify,
'status_fa' => $statusFa,
'supervisor_id' => auth()->user()->id,
'supervisor_name' => auth()->user()->name,
'supervisor_description' => $request->description,
'supervising_time' => now(),
]);
auth()->user()->addActivityComplete(1138);
return $this->successResponse();
}
public function report(Request $request, SupervisorService $supervisorService): BinaryFileResponse
{
$name = 'گزارش از کارتابل ارزیابی واکنش سریع '. verta()->now()->format('Y-m-d H:i') . '.xlsx';
$data = $supervisorService->index($request);
return Excel::download(new SupervisorCartableReport($data['data']), $name);
}
public function restore(RestoreRequest $request, RoadObserved $roadObserved): JsonResponse
{
if ($roadObserved->image_before) {
FileFacade::delete($roadObserved->image_before);
}
if ($roadObserved->image_after) {
FileFacade::delete($roadObserved->image_after);
}
$roadObserved->update([
'image_before' => null,
'image_after' => null,
'rms_last_activity' => null,
'rms_last_activity_fa' => null,
'updated_at_fa' => null,
'updated_at' => null,
'rms_status' => 0,
'status' => null,
'status_fa' => null,
]);
RoadObservationHistory::query()->create([
'id' => $roadObserved->id,
'user_id' => auth()->user()->id,
'action' => 'restore',
'description' => $request->restore_description,
]);
auth()->user()->addActivityComplete(1141);
return $this->successResponse();
}
}

View File

@@ -148,7 +148,9 @@ class NotificationController extends Controller
['status', '=', 0]
])->count();
$road_observations['complaint_cnt'] = RoadObserved::query()->where('rms_status', '=', 0)->count();
$road_observations['complaint_cnt'] = RoadObserved::query()->where('rms_status', '=', 0)
->whereNotNull('edarate_shahri_id')
->count();
}
elseif ($user->hasPermissionTo('show-fast-react-province')) {
throw_if(is_null($user->province_id), new ProhibitedAction('استانی برای شما در سامانه ثبت نشده است!'));

View File

@@ -0,0 +1,84 @@
<?php
namespace App\Services\Cartables\RoadObservation;
use App\Exceptions\ProhibitedAction;
use App\Facades\DataTable\DataTableFacade;
use App\Models\RoadObserved;
use Illuminate\Http\Request;
class OperatorService
{
public function cartableIndex(Request $request)
{
$user = auth()->user();
$fields = [
'fk_RegisteredEventMessage', 'road_observeds.id', 'Title', 'road_observeds.created_at', 'StartTime_DateTime',
'lat', 'lng', 'FeatureTypeTitle', 'Description', 'MobileForSendEventSms', 'edarate_shahri_id',
'rms_description', 'rms_status', 'rms_start_latlng', 'rms_last_activity_fa', 'image_after', 'image_before',
'rms_last_activity', 'road_observeds.province_id', 'province_fa', 'city_id', 'city_fa',
'edarate_shahri.name_fa', 'status', 'status_fa', 'supervisor_description', 'supervising_time'
];
$query = RoadObserved::query()
->where('rms_status', '!=', 0)
->whereNotNull('road_observeds.province_id')
->whereNotNull('status')
->leftJoin('edarate_shahri', 'road_observeds.edarate_shahri_id', '=', 'edarate_shahri.id')
->where('edarate_shahri_id', $user->edarate_shahri_id)
->select($fields);
return DataTableFacade::run(
$query,
$request,
allowedFilters: ['*'],
allowedSortings: ['*']);
}
/**
* @throws \Throwable
*/
public function complaintsIndex(Request $request)
{
$user = auth()->user();
$fields = 'fk_RegisteredEventMessage, road_observeds.id, Title, FeatureTypeTitle, MobileForSendEventSms, StartTime_DateTime,
road_observeds.created_at, rms_last_activity, rms_last_activity_fa, status, edarate_shahri_id,
status_fa, supervisor_description, rms_description, province_fa, city_id, city_fa, Description, edarate_shahri.name_fa as edarate_shahri_name_fa, lat, lng';
if ($user->hasPermissionTo('show-fast-react')) {
$query = RoadObserved::query()->leftjoin('edarate_shahri', 'road_observeds.edarate_shahri_id', 'edarate_shahri.id')
->where('rms_status', '=', 0)
->whereNotNull('edarate_shahri_id');
}
elseif ($user->hasPermissionTo('show-fast-react-province')) {
throw_if(is_null($user->province_id), new ProhibitedAction('استانی برای شما در سامانه ثبت نشده است!'));
$query = RoadObserved::query()->leftjoin('edarate_shahri', 'road_observeds.edarate_shahri_id', 'edarate_shahri.id')
->where('rms_status', '=', 0)
->whereNotNull('road_observeds.province_id')
->where('road_observeds.province_id', '=', $user->province_id);
}
elseif ($user->hasPermissionTo('show-fast-react-edarate-shahri')) {
throw_if(is_null($user->edarate_shahri_id), new ProhibitedAction('اداره ای برای شما در سامانه ثبت نشده است!'));
$query = RoadObserved::query()->leftjoin('edarate_shahri', 'road_observeds.edarate_shahri_id', 'edarate_shahri.id')
->where('rms_status', '=', 0)
->whereNotNull('edarate_shahri_id')
->where('edarate_shahri_id', '=', $user->edarate_shahri_id);
}
return DataTableFacade::run(
$query,
$request,
allowedFilters: ['*'],
allowedSortings: ['*'],
allowedSelects: $fields
);
}
}

View File

@@ -0,0 +1,53 @@
<?php
namespace App\Services\Cartables\RoadObservation;
use App\Facades\DataTable\DataTableFacade;
use App\Models\RoadObserved;
use Illuminate\Http\Request;
class ReportService
{
public function index(Request $request): array
{
$fromDate = $request->from_date . ' 00:00:00';
$toDate = $request->date_to . ' 23:59:59';
$fields = [
'fk_RegisteredEventMessage',
'road_observeds.id',
'Title',
'road_observeds.created_at',
'lat',
'lng',
'FeatureTypeTitle',
'Description',
'MobileForSendEventSms',
'road_observeds.province_id',
'province_fa',
'city_fa',
'edarate_shahri.name_fa',
'rms_last_activity_fa',
'rms_description'
];
$query = RoadObserved::leftjoin('edarate_shahri', 'road_observeds.edarate_shahri_id', 'edarate_shahri.id')
->where('rms_status', "<>", 0)
->whereNotNull('edarate_shahri_id')
->whereBetween('road_observeds.created_at', [$fromDate, $toDate])
->select($fields);
$data = DataTableFacade::run(
$query,
$request,
allowedFilters: ['*'],
allowedSortings: ['*']
);
return [
'data' => $data,
'fromDate' => $fromDate,
'toDate' => $toDate,
];
}
}

View File

@@ -0,0 +1,48 @@
<?php
namespace App\Services\Cartables\RoadObservation;
use App\Exceptions\ProhibitedAction;
use App\Facades\DataTable\DataTableFacade;
use App\Models\RoadObserved;
use Illuminate\Http\Request;
class SupervisorService
{
/**
* @throws \Throwable
*/
public function index(Request $request)
{
$user = auth()->user();
$fields = [
'fk_RegisteredEventMessage', 'road_observeds.id', 'Title', 'road_observeds.created_at', 'StartTime_DateTime',
'lat', 'lng', 'FeatureTypeTitle', 'Description', 'MobileForSendEventSms', 'rms_start_latlng',
'rms_description', 'rms_status', 'rms_last_activity_fa', 'rms_last_activity', 'edarate_shahri_id',
'road_observeds.province_id', 'province_fa', 'city_id', 'city_fa', 'edarate_shahri.name_fa',
'status', 'status_fa', 'supervisor_description', 'supervising_time', 'image_after', 'image_before'
];
if ($user->hasPermissionTo('show-fast-react')) {
$query = RoadObserved::query()->leftjoin('edarate_shahri', 'road_observeds.edarate_shahri_id', 'edarate_shahri.id')
->whereNotNull('road_observeds.status')
->select($fields);
}
elseif ($user->hasPermissionTo('show-fast-react-province'))
{
throw_if(is_null($user->province_id), new ProhibitedAction('استانی برای شما در سامانه ثبت نشده است!'));
$query = RoadObserved::query()->leftjoin('edarate_shahri', 'road_observeds.edarate_shahri_id', 'edarate_shahri.id')
->where('road_observeds.province_id', $user->province_id)
->whereNotNull('road_observeds.status')
->select($fields);
}
return DataTableFacade::run(
$query,
$request,
allowedFilters: ['*'],
allowedSortings: ['*']);
}
}

View File

@@ -1,169 +0,0 @@
<?php
namespace App\Services\Cartables;
use App\Facades\DataTable\DataTableFacade;
use App\Http\Traits\ApiResponse;
use App\Models\RoadObserved;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class RoadObservationTableService
{
use ApiResponse;
public function supervisorCartableIndex(Request $request)
{
$user = auth()->user();
$fields = [
'fk_RegisteredEventMessage', 'road_observeds.id', 'Title', 'road_observeds.created_at', 'StartTime_DateTime',
'lat', 'lng', 'FeatureTypeTitle', 'Description', 'MobileForSendEventSms', 'rms_start_latlng',
'rms_description', 'rms_status', 'rms_last_activity_fa', 'rms_last_activity', 'edarate_shahri_id',
'road_observeds.province_id', 'province_fa', 'city_id', 'city_fa', 'edarate_shahri.name_fa',
'status', 'status_fa', 'supervisor_description', 'supervising_time', 'image_after', 'image_before'
];
if ($user->hasPermissionTo('show-fast-react')) {
$query = RoadObserved::query()->leftjoin('edarate_shahri', 'road_observeds.edarate_shahri_id', 'edarate_shahri.id')
->whereNotNull('road_observeds.status')
->select($fields);
}
elseif ($user->hasPermissionTo('show-fast-react-province'))
{
if (is_null($user->province_id))
{
return $this->errorResponse('استانی برای شما در سامانه ثبت نشده است!');
}
$query = RoadObserved::query()->leftjoin('edarate_shahri', 'road_observeds.edarate_shahri_id', 'edarate_shahri.id')
->where('road_observeds.province_id', $user->province_id)
->whereNotNull('road_observeds.status')
->select($fields);
}
return DataTableFacade::run(
$query,
$request,
allowedFilters: ['*'],
allowedSortings: ['*']);
}
public function operatorCartableIndex(Request $request)
{
$user = auth()->user();
$fields = [
'fk_RegisteredEventMessage', 'road_observeds.id', 'Title', 'road_observeds.created_at', 'StartTime_DateTime',
'lat', 'lng', 'FeatureTypeTitle', 'Description', 'MobileForSendEventSms', 'edarate_shahri_id',
'rms_description', 'rms_status', 'rms_start_latlng', 'rms_last_activity_fa', 'image_after', 'image_before',
'rms_last_activity', 'road_observeds.province_id', 'province_fa', 'city_id', 'city_fa',
'edarate_shahri.name_fa', 'status', 'status_fa', 'supervisor_description', 'supervising_time'
];
$query = RoadObserved::query()
->where('rms_status', '!=', 0)
->whereNotNull('road_observeds.province_id')
->whereNotNull('status')
->leftJoin('edarate_shahri', 'road_observeds.edarate_shahri_id', '=', 'edarate_shahri.id')
->where('edarate_shahri_id', $user->edarate_shahri_id)
->select($fields);
return DataTableFacade::run(
$query,
$request,
allowedFilters: ['*'],
allowedSortings: ['*']);
}
public function complaintsIndex(Request $request)
{
$user = auth()->user();
$fields = 'fk_RegisteredEventMessage, road_observeds.id, Title, FeatureTypeTitle, MobileForSendEventSms, StartTime_DateTime,
road_observeds.created_at, rms_last_activity, rms_last_activity_fa, status, edarate_shahri_id,
status_fa, supervisor_description, rms_description, province_fa, city_id, city_fa, Description, edarate_shahri.name_fa as edarate_shahri_name_fa, lat, lng';
if ($user->hasPermissionTo('show-fast-react')) {
$query = RoadObserved::query()->leftjoin('edarate_shahri', 'road_observeds.edarate_shahri_id', 'edarate_shahri.id')
->where('rms_status', '=', 0)
->whereNotNull('edarate_shahri_id')
->selectRaw($fields);
}
elseif ($user->hasPermissionTo('show-fast-react-province')) {
if (is_null($user->province_id)) {
return $this->errorResponse('استانی برای شما در سامانه ثبت نشده است!');
}
$query = RoadObserved::query()->leftjoin('edarate_shahri', 'road_observeds.edarate_shahri_id', 'edarate_shahri.id')
->where('rms_status', '=', 0)
->whereNotNull('road_observeds.province_id')
->where('road_observeds.province_id', '=', $user->province_id)
->selectRaw($fields);
}
elseif ($user->hasPermissionTo('show-fast-react-edarate-shahri')) {
if (is_null($user->edarate_shahri_id)) {
return $this->errorResponse('اداره ای برای شما در سامانه ثبت نشده است!');
}
$query = RoadObserved::query()->leftjoin('edarate_shahri', 'road_observeds.edarate_shahri_id', 'edarate_shahri.id')
->where('rms_status', '=', 0)
->whereNotNull('edarate_shahri_id')
->where('edarate_shahri_id', '=', $user->edarate_shahri_id)
->selectRaw($fields);
}
return DataTableFacade::run(
$query,
$request,
allowedFilters: ['*'],
allowedSortings: ['*']
);
}
public function reportIndex(Request $request)
{
$fromDate = $request->from_date . ' 00:00:00';
$toDate = $request->date_to . ' 23:59:59';
$fields = [
'fk_RegisteredEventMessage',
'road_observeds.id',
'Title',
'road_observeds.created_at',
'lat',
'lng',
'FeatureTypeTitle',
'Description',
'MobileForSendEventSms',
'road_observeds.province_id',
'province_fa',
'city_fa',
'edarate_shahri.name_fa',
'rms_last_activity_fa',
'rms_description'
];
$query = RoadObserved::leftjoin('edarate_shahri', 'road_observeds.edarate_shahri_id', 'edarate_shahri.id')
->where('rms_status', "<>", 0)
->whereNotNull('edarate_shahri_id')
->whereBetween('road_observeds.created_at', [$fromDate, $toDate])
->select($fields);
$data = DataTableFacade::run(
$query,
$request,
allowedFilters: ['*'],
allowedSortings: ['*']
);
return [
'data' => $data,
'fromDate' => $fromDate,
'toDate' => $toDate,
];
}
}

View File

@@ -33,7 +33,7 @@ class NikarayanService
$soapClient = new SoapClient($url);
$result = $soapClient->UpdateInfo_RoadObservedProblems($array);
Log::channel('nikarayan')->info(json_encode($result));
Log::channel('nikarayan')->info([json_encode($result), $roadObserved->fk_RegisteredEventMessage]);
return $result;
}

View File

@@ -19,7 +19,7 @@ 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\RoadMaintenanceStationController;
use App\Http\Controllers\V3\Dashboard\RoadObservationController;
use App\Http\Controllers\V3\Dashboard\RoadObservation\RoadObservationController;
use App\Http\Controllers\V3\Dashboard\RoadPatrolProjectController;
use App\Http\Controllers\V3\Dashboard\SafetyAndPrivacy\OperatorController;
use App\Http\Controllers\V3\Dashboard\SafetyAndPrivacy\OperatorReportController;
@@ -292,37 +292,51 @@ Route::prefix('receipt_reports')
Route::prefix('road_observations')
->name('roadObservations.')
->controller(RoadObservationController::class)
->group(function () {
Route::get('/supervisor_index', 'supervisorIndex')->name('supervisorIndex')->middleware('permission:show-fast-react-province|show-fast-react');
Route::post('/verify/{roadObserved}', 'verifyBySupervisor')->name('verifyBySupervisor');
Route::get('/supervisor_report', 'supervisorCartableReport')->name('supervisorCartableReport')->middleware('permission:show-fast-react-province|show-fast-react');
Route::get('/operator_index','operatorIndex')->name('operatorIndex')->middleware('permission:show-fast-react-edarate-shahri');
Route::get('/operator_report','operatorCartableReport')->name('operatorCartableReport')->middleware('permission:show-fast-react-edarate-shahri');
Route::get('/complaints_index', 'complaintsIndex')
->middleware('permission:show-fast-react-edarate-shahri|show-fast-react-province|show-fast-react')
->name('complaintsIndex');
Route::get('/complaints_report', 'complaintsReport')->name('complaintsReport')
->middleware('permission:show-fast-react-edarate-shahri|show-fast-react-province|show-fast-react');
Route::post('/register/{roadObserved}', 'register')
->middleware('permission:show-fast-react-edarate-shahri')
->name('register');
Route::post('/modify_registration/{roadObserved}', 'modifyRegistration')
->middleware('permission:show-fast-react-edarate-shahri')
->name('modifyRegistration');
Route::name('operator.')
->prefix('operator')
->controller(\App\Http\Controllers\V3\Dashboard\RoadObservation\OperatorController::class)
->group(function () {
Route::get('/cartable','cartableIndex')->name('cartableIndex')->middleware('permission:show-fast-react-edarate-shahri');
Route::get('/cartable_report','cartableReport')->name('cartableReport')->middleware('permission:show-fast-react-edarate-shahri');
Route::get('/complaints_index', 'complaintsIndex')
->middleware('permission:show-fast-react-edarate-shahri|show-fast-react-province|show-fast-react')
->name('complaintsIndex');
Route::get('/complaints_report', 'complaintsReport')->name('complaintsReport')
->middleware('permission:show-fast-react-edarate-shahri|show-fast-react-province|show-fast-react');
Route::post('/register/{roadObserved}', 'register')
->middleware('permission:show-fast-react-edarate-shahri')
->name('register');
Route::post('/modify_registration/{roadObserved}', 'modifyRegistration')
->middleware('permission:show-fast-react-edarate-shahri')
->name('modifyRegistration');
Route::post('/refer/{roadObserved}', 'refer')
->middleware('permission:show-fast-react-edarate-shahri|show-fast-react-province|show-fast-react')
->name('refer');
Route::get('/refer_list/{roadObserved}', 'referList')
->middleware('permission:show-fast-react-edarate-shahri|show-fast-react-province|show-fast-react')
->name('referList');
});
Route::get('/{roadObserved}', 'show')->name('show');
Route::post('/refer/{roadObserved}', 'refer')
->middleware('permission:show-fast-react-edarate-shahri|show-fast-react-province|show-fast-react')
->name('refer');
Route::name('supervisor.')
->prefix('supervisor')
->controller(\App\Http\Controllers\V3\Dashboard\RoadObservation\SupervisorController::class)
->group(function () {
Route::get('/index', 'index')->name('index')->middleware('permission:show-fast-react-province|show-fast-react');
Route::post('/verify/{roadObserved}', 'verify')->name('verify');
Route::get('/report', 'report')->name('report')->middleware('permission:show-fast-react-province|show-fast-react');
Route::post('/restore/{roadObserved}', 'restore')->middleware('permission:restore-fast-react')->name('restore');
});
Route::get('/refer_list/{roadObserved}', 'referList')
->middleware('permission:show-fast-react-edarate-shahri|show-fast-react-province|show-fast-react')
->name('referList');
Route::post('/restore/{roadObserved}', 'restore')
->middleware('permission:restore-fast-react')
->name('restore');
Route::name('report.')
->prefix('report')
->controller(\App\Http\Controllers\V3\Dashboard\RoadObservation\ReportController::class)
->group(function () {
Route::get('/index', 'index')->name('index')->middleware('permission:show-fast-react-province|show-fast-react');
Route::get('/excel', 'excel')->name('excel')->middleware('permission:show-fast-react-province|show-fast-react');
Route::get('/map', 'map')->name('map');
});
Route::get('/{roadObserved}', [\App\Http\Controllers\V3\Dashboard\RoadObservation\OperatorController::class, 'show'])->name('show');
});
Route::prefix('log_list')