Merge branch 'feature/AddColumnToRoadPatrol' into 'develop'
add activity for azmayesh See merge request witelgroup/rms_v2!54
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -22,7 +22,6 @@ class FMSVehicleManagementController extends Controller
|
||||
"machineCode" => $request->machineCode,
|
||||
"startDT" => $request->startDT,
|
||||
"endDT" => $request->endDT,
|
||||
"minStopDuration" => $request->minStopDuration
|
||||
]);
|
||||
|
||||
$data = $getVehicleActivityService->run();
|
||||
|
||||
60
app/Http/Controllers/V3/ObservedItemController.php
Normal file
60
app/Http/Controllers/V3/ObservedItemController.php
Normal file
@@ -0,0 +1,60 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\V3;
|
||||
|
||||
use App\Facades\DataTable\DataTableFacade;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\V3\ObservedItem\FilterRequest;
|
||||
use App\Http\Traits\ApiResponse;
|
||||
use App\Models\ObservedItem;
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
|
||||
class ObservedItemController extends Controller
|
||||
{
|
||||
use ApiResponse;
|
||||
public function show(ObservedItem $observedItem): JsonResponse
|
||||
{
|
||||
return $this->successResponse($observedItem);
|
||||
}
|
||||
|
||||
public function filter(FilterRequest $request): JsonResponse
|
||||
{
|
||||
$columns = array(
|
||||
'id', 'item_id', 'sub_item_id'
|
||||
);
|
||||
|
||||
$allowedFilters = $columns;
|
||||
$allowedSortings = $columns;
|
||||
|
||||
$data = ObservedItem::query()->whereNull('road_item_id')
|
||||
->when($request->start_date, function (Builder $query) use ($request) {
|
||||
return $query->whereHas('roadPatrol', function (Builder $query) use ($request) {
|
||||
$query->WhereBetween('start_time', [$request->start_date.' 00:00:00', $request->end_date.' 23:59:59'])
|
||||
->orWhereBetween('end_time', [$request->start_date.' 00:00:00', $request->end_date.' 23:59:59']);
|
||||
});
|
||||
})
|
||||
->when($request->road_patrol_id, function (Builder $query) use ($request) {
|
||||
return $query->where('road_patrol_id', $request->road_patrol_id);
|
||||
})
|
||||
->when($request->item_id, function (Builder $query) use ($request) {
|
||||
return $query->where('item_id', $request->item_id);
|
||||
})
|
||||
->selectRaw('id as item, item_id, item_name, sub_item_id, sub_item_name, local_name');
|
||||
|
||||
if($data->get()->isEmpty()) {
|
||||
return $this->errorResponse('موردی یافت نشد');
|
||||
}
|
||||
|
||||
$dataTable = DataTableFacade::run(
|
||||
$data,
|
||||
$request,
|
||||
allowedFilters: $allowedFilters,
|
||||
allowedSortings: $allowedSortings);
|
||||
|
||||
|
||||
return response()->json($dataTable);
|
||||
}
|
||||
}
|
||||
@@ -81,7 +81,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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -145,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();
|
||||
|
||||
@@ -161,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,
|
||||
@@ -187,18 +176,19 @@ 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->rahdaran_id);
|
||||
$road_patrol->cmmsMachines()->attach($request->machines_id);
|
||||
$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) {
|
||||
@@ -294,8 +284,8 @@ class RoadPatrolProjectController extends Controller
|
||||
], 400);
|
||||
}
|
||||
|
||||
$road_item->rahdaran()->attach($request->rahdaran_id);
|
||||
$road_item->cmmsMachines()->attach($request->machines_id);
|
||||
$road_item->rahdaran()->attach($item['road_item_rahdaran_id']);
|
||||
$road_item->cmmsMachines()->attach($item['road_item_machines_id']);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
39
app/Http/Requests/V3/ObservedItem/FilterRequest.php
Normal file
39
app/Http/Requests/V3/ObservedItem/FilterRequest.php
Normal file
@@ -0,0 +1,39 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Requests\V3\ObservedItem;
|
||||
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
|
||||
class FilterRequest extends FormRequest
|
||||
{
|
||||
/**
|
||||
* Determine if the user is authorized to make this request.
|
||||
*/
|
||||
public function authorize(): bool
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the validation rules that apply to the request.
|
||||
*
|
||||
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
|
||||
*/
|
||||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
'start_date' => 'date_format:Y-m-d',
|
||||
'end_date' => 'date_format:Y-m-d|after_or_equal:start_date',
|
||||
'road_patrol_id' => 'numeric',
|
||||
'item_id' => 'numeric',
|
||||
];
|
||||
}
|
||||
|
||||
public function attributes(): array
|
||||
{
|
||||
return [
|
||||
'start_date' => 'ساعت شروع گشت',
|
||||
'end_date' => 'ساعت پایان گشت',
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace App\Http\Requests\V3\RoadPatrolProject;
|
||||
|
||||
use App\Rules\VerificationCode;
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
|
||||
class StoreRequest extends FormRequest
|
||||
@@ -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,16 +45,17 @@ 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',
|
||||
'machines_id' => 'required|array',
|
||||
'machines_id.*' => 'required|exists:cmms_machines,id',
|
||||
'rahdaran_id' => 'required|array',
|
||||
'rahdaran_id.*' => 'required|exists:rahdaran,id',
|
||||
|
||||
'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',
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
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');
|
||||
});
|
||||
}
|
||||
};
|
||||
@@ -7,6 +7,7 @@ use App\Http\Controllers\V3\Azmayesh\AzmayeshTypeController;
|
||||
use App\Http\Controllers\V3\CMMSMachinesController;
|
||||
use App\Http\Controllers\V3\FMSVehicleManagementController;
|
||||
use App\Http\Controllers\V3\Harim\DivarkeshiController;
|
||||
use App\Http\Controllers\V3\ObservedItemController;
|
||||
use App\Http\Controllers\V3\ProfileController;
|
||||
use App\Http\Controllers\V3\RahdaranController;
|
||||
use App\Http\Controllers\V3\RoadItemsProjectController;
|
||||
@@ -176,5 +177,13 @@ Route::prefix('fms_vehicle')
|
||||
->name('fmsVehicle.')
|
||||
->controller(FMSVehicleManagementController::class)
|
||||
->group(function () {
|
||||
Route::get('/get_activity', 'getActivity')->name('getActivity');
|
||||
Route::post('/get_activity', 'getActivity')->name('getActivity');
|
||||
});
|
||||
|
||||
Route::prefix('observed_items')
|
||||
->name('observedItem.')
|
||||
->controller(ObservedItemController::class)
|
||||
->group(function () {
|
||||
Route::post('/filter', 'filter')->name('filter');
|
||||
Route::get('/{observedItem}', 'show')->name('show');
|
||||
});
|
||||
|
||||
@@ -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