Merge branch 'feature/debug' into 'develop'
Feature/debug See merge request witelgroup/rms_v2!142
This commit is contained in:
@@ -37,8 +37,8 @@ class RequestPortalController extends Controller
|
||||
'username' => $user->username,
|
||||
'province_id' => $user->province_id,
|
||||
'province_name' => $user->province_fa,
|
||||
'edare_shahri_id' => $user->edare_shahri_id ?? null,
|
||||
'edare_shahri_name' => $user->edare_shahri_name ?? null,
|
||||
'edare_shahri_id' => $user->edarate_shahri_id ?? null,
|
||||
'edare_shahri_name' => $user->edarate_shahri_name ?? null,
|
||||
'state_id' => $state,
|
||||
'state_name' => MissionStates::name($state),
|
||||
'requested_machines' => json_encode($request->requested_machines),
|
||||
@@ -100,7 +100,10 @@ class RequestPortalController extends Controller
|
||||
|
||||
$mission->rahdaran()->sync($request->rahdaran);
|
||||
if ($request->category_id == 3){
|
||||
$mission->roadObserved()->attach($request->road_observed_id);
|
||||
RoadObserved::query()
|
||||
->find($request->road_observed_id)
|
||||
->missions()
|
||||
->sync($mission->id);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -2,10 +2,12 @@
|
||||
|
||||
namespace App\Http\Controllers\V3;
|
||||
|
||||
use App\Enums\MissionStates;
|
||||
use App\Exceptions\ProhibitedAction;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Traits\ApiResponse;
|
||||
use App\Models\EdarateOstani;
|
||||
use App\Models\Mission;
|
||||
use App\Models\RoadItemsProject;
|
||||
use App\Models\RoadObserved;
|
||||
use App\Models\SafetyAndPrivacy;
|
||||
@@ -28,6 +30,7 @@ class NotificationController extends Controller
|
||||
'roadItem' => $this->roadItemNotifications(),
|
||||
'safetyAndPrivacy' => $this->safetyAndPrivacyNotifications(),
|
||||
'roadObserved' => $this->roadObservedNotifications(),
|
||||
'mission' => $this->missionNotification(),
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -185,4 +188,35 @@ class NotificationController extends Controller
|
||||
|
||||
return $road_observations;
|
||||
}
|
||||
|
||||
public function missionNotification(): array
|
||||
{
|
||||
$user = auth()->user();
|
||||
$missions = [
|
||||
'request_portal' => Mission::query()
|
||||
->where([
|
||||
['state_id', '=', MissionStates::REJECT_BY_TRANSPORTATION->value],
|
||||
['user_id', '=', $user->id]
|
||||
])->count(),
|
||||
'transportation' => 0,
|
||||
'control' => 0,
|
||||
];
|
||||
|
||||
if ($user->hasPermissionTo('manage-transportation-unit')) {
|
||||
$missions['transportation'] = Mission::query()->where([
|
||||
['state_id', '=', MissionStates::REQUEST_CREATED->value],
|
||||
['edare_shahri_id', '=', $user->edarate_shahri_id]
|
||||
])->count();
|
||||
}
|
||||
if ($user->hasPermissionTo('manage-control-unit')) {
|
||||
$missions['control'] = Mission::query()->where([
|
||||
['state_id', '=', MissionStates::PENDING_CONFIRMATION->value],
|
||||
['edare_shahri_id', '=', $user->edarate_shahri_id]
|
||||
])->count();
|
||||
}
|
||||
|
||||
$missions['total'] = $missions['request_portal'] + $missions['transportation'] + $missions['control'];
|
||||
|
||||
return $missions;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,6 +22,7 @@ class ProfileController extends Controller
|
||||
$user = Auth::user();
|
||||
|
||||
return $this->successResponse([
|
||||
'id' => $user->id,
|
||||
'username' => $user->username,
|
||||
'first_name' => $user->first_name,
|
||||
'last_name' => $user->last_name,
|
||||
|
||||
@@ -61,16 +61,10 @@ class RahdaranController extends Controller
|
||||
|
||||
public function search(Request $request): JsonResponse
|
||||
{
|
||||
if ($request->has('code')) {
|
||||
$matchedSearchedRahdaran = Rahdaran::query()
|
||||
->where('code', 'LIKE', "%{$request->code}%")
|
||||
->get();
|
||||
}
|
||||
else {
|
||||
$matchedSearchedRahdaran = Rahdaran::query()
|
||||
->where('name', 'LIKE', "%{$request->name}%")
|
||||
->get();
|
||||
}
|
||||
$matchedSearchedRahdaran = Rahdaran::query()
|
||||
->where('code', 'LIKE', "%{$request->search}%")
|
||||
->orWhere('name', 'LIKE', "%{$request->search}%")
|
||||
->get();
|
||||
|
||||
return $this->successResponse($matchedSearchedRahdaran);
|
||||
}
|
||||
|
||||
@@ -1,22 +1,23 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\V3\Dashboard\RoadItem;
|
||||
namespace App\Http\Controllers\V3\WebServices;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\V3\RoadItem\WebService\CheckRequest;
|
||||
use App\Http\Requests\V3\WebServices\RoadItem\IndexRequest;
|
||||
use App\Http\Traits\ApiResponse;
|
||||
use App\Models\RoadItemsProject;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
|
||||
class WebServiceController extends Controller
|
||||
class RoadItemController extends Controller
|
||||
{
|
||||
use ApiResponse;
|
||||
public function getRoadItem(CheckRequest $request): JsonResponse
|
||||
public function index(IndexRequest $request): JsonResponse
|
||||
{
|
||||
$fromDate = $request->from_date;
|
||||
$toDate = $request->to_date;
|
||||
$roadItems = RoadItemsProject::query()
|
||||
->whereBetween('created_at', [$fromDate, $toDate])
|
||||
->where('is_new', '=', 1)
|
||||
->whereBetween('activity_date_time', [$fromDate, $toDate])
|
||||
->get();
|
||||
|
||||
return $this->successResponse($roadItems);
|
||||
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\V3\WebServices;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\V3\WebServices\RoadMaintenanceStation\IndexRequest;
|
||||
use App\Http\Traits\ApiResponse;
|
||||
use App\Models\RahdariPoint;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class RoadMaintenanceStationController extends Controller
|
||||
{
|
||||
use ApiResponse;
|
||||
|
||||
public function index(IndexRequest $request): JsonResponse
|
||||
{
|
||||
$province = $request->province;
|
||||
$status = $request->status;
|
||||
$type = $request->type;
|
||||
|
||||
$data = RahdariPoint::query()
|
||||
->when($status, fn ($query, $status) => $query->where('status', $status))
|
||||
->when($type, fn ($query, $type) => $query->where('type', $type))
|
||||
->when($province, fn($query, $province) => $query->where('province_id', $province))
|
||||
->get([
|
||||
'id', 'province_name', 'city_name', 'name', 'status', 'type_fa', 'phone',
|
||||
'code', 'lat', 'lng',
|
||||
]);
|
||||
|
||||
return $this->successResponse($data);
|
||||
}
|
||||
}
|
||||
@@ -5,6 +5,7 @@ namespace App\Http\Requests\V3\Mission\ControlUnit;
|
||||
use App\Enums\MissionStates;
|
||||
use Illuminate\Contracts\Validation\ValidationRule;
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
use Illuminate\Validation\Validator;
|
||||
|
||||
class StartRequest extends FormRequest
|
||||
{
|
||||
@@ -13,7 +14,7 @@ class StartRequest extends FormRequest
|
||||
*/
|
||||
public function authorize(): bool
|
||||
{
|
||||
return ($this->mission->state_id == MissionStates::PENDING_CONFIRMATION->value && $this->mission->code == $this->code);
|
||||
return $this->mission->state_id == MissionStates::PENDING_CONFIRMATION->value;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -27,4 +28,18 @@ class StartRequest extends FormRequest
|
||||
'code' => 'required|string',
|
||||
];
|
||||
}
|
||||
|
||||
public function after(): array
|
||||
{
|
||||
return [
|
||||
function (Validator $validator) {
|
||||
if ($this->mission->code != $this->code){
|
||||
$validator->errors()->add(
|
||||
'code',
|
||||
'کد وارد شده صحیح نمی باشد'
|
||||
);
|
||||
}
|
||||
}
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -47,7 +47,7 @@ class StoreRequest extends FormRequest
|
||||
{
|
||||
return [
|
||||
function (Validator $validator) {
|
||||
if ($this->type === 1){
|
||||
if ($this->type == 1){
|
||||
$start = Carbon::parse($this->start_date);
|
||||
$end = Carbon::parse($this->end_date);
|
||||
|
||||
|
||||
@@ -1,29 +1,27 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Requests\V3\RoadItem\WebService;
|
||||
namespace App\Http\Requests\V3\WebServices\RoadItem;
|
||||
|
||||
use App\Models\User;
|
||||
use Illuminate\Contracts\Validation\ValidationRule;
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\Hash;
|
||||
|
||||
class CheckRequest extends FormRequest
|
||||
class IndexRequest extends FormRequest
|
||||
{
|
||||
/**
|
||||
* Determine if the user is authorized to make this request.
|
||||
*/
|
||||
public function authorize(): bool
|
||||
{
|
||||
$user = Auth::user();
|
||||
return (
|
||||
$user->username === 'service_user257'&&
|
||||
Hash::check('S3rv1ce@123', $user->password) );
|
||||
return
|
||||
$this->username === 'service_user257' &&
|
||||
Hash::check('S3rv1ce@123', $this->password);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the validation rules that apply to the request.
|
||||
*
|
||||
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
|
||||
* @return array<string, ValidationRule|array|string>
|
||||
*/
|
||||
public function rules(): array
|
||||
{
|
||||
@@ -0,0 +1,34 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Requests\V3\WebServices\RoadMaintenanceStation;
|
||||
|
||||
use Illuminate\Contracts\Validation\ValidationRule;
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
use Illuminate\Support\Facades\Hash;
|
||||
|
||||
class IndexRequest extends FormRequest
|
||||
{
|
||||
/**
|
||||
* Determine if the user is authorized to make this request.
|
||||
*/
|
||||
public function authorize(): bool
|
||||
{
|
||||
return
|
||||
$this->username === 'service_user257' &&
|
||||
Hash::check('S3rv1ce@123', $this->password);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the validation rules that apply to the request.
|
||||
*
|
||||
* @return array<string, ValidationRule|array|string>
|
||||
*/
|
||||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
'province' => 'exists:provinces,id',
|
||||
'status' => 'in:0,1',
|
||||
'type' => 'in:1,2,3',
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -13,6 +13,7 @@ class Mission extends Model
|
||||
use HasFactory;
|
||||
|
||||
protected $guarded = [];
|
||||
protected $hidden = ['pivot'];
|
||||
|
||||
protected function requestedMachines(): Attribute
|
||||
{
|
||||
@@ -70,11 +71,12 @@ class Mission extends Model
|
||||
|
||||
public function roadObserved(): MorphToMany
|
||||
{
|
||||
return $this->morphToMany(RoadObserved::class,
|
||||
return $this->morphedByMany(
|
||||
RoadObserved::class,
|
||||
'missionable',
|
||||
'missionables',
|
||||
'mission_id',
|
||||
'missionable_id',
|
||||
'missionable_id'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -77,6 +77,7 @@ class RoadObserved extends Model
|
||||
'rms_start_latlng' => 'array',
|
||||
'rms_end_latlng' => 'array'
|
||||
];
|
||||
protected $hidden = ['pivot'];
|
||||
|
||||
/**
|
||||
* Get all of the project's files.
|
||||
|
||||
@@ -20,7 +20,7 @@ class ControlUnitService
|
||||
->whereIn('state_id', [
|
||||
MissionStates::PENDING_CONFIRMATION->value, MissionStates::START_MISSION->value
|
||||
])
|
||||
->where('edare_shahri_name', '=', Auth::user()->edarate_shahri_id);
|
||||
->where('edare_shahri_id', '=', Auth::user()->edarate_shahri_id);
|
||||
|
||||
return DataTableFacade::run(
|
||||
$query,
|
||||
@@ -30,7 +30,8 @@ class ControlUnitService
|
||||
allowedSelects: [
|
||||
'id', 'user_id', 'username', 'state_name', 'province_name', 'edare_shahri_name',
|
||||
'description', 'requested_machines', 'type', 'type_fa', 'start_date', 'state_id',
|
||||
'end_date', 'request_date', 'end_point', 'area', 'zone', 'zone_fa', 'start_time', 'finish_time'
|
||||
'end_date', 'request_date', 'end_point', 'area', 'zone', 'zone_fa', 'start_time', 'finish_time',
|
||||
'code', 'category_id', 'category_name', 'explanation'
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
@@ -15,7 +15,7 @@ class RequestPortalService
|
||||
public function datatable(Request $request)
|
||||
{
|
||||
$user = auth()->user();
|
||||
$query = Mission::query();
|
||||
$query = Mission::query()->with('roadObserved:id');
|
||||
|
||||
if ($user->hasPermissionTo('manage-request-portal-city')) {
|
||||
$query->where('edare_shahri_id', '=', $user->edarate_shahri_id);
|
||||
|
||||
@@ -14,7 +14,7 @@ class TransportationUnitService
|
||||
{
|
||||
$query = Mission::query()
|
||||
->where('state_id', '=', MissionStates::REQUEST_CREATED->value)
|
||||
->where('edare_shahri_name', '=', Auth::user()->edarate_shahri_id);
|
||||
->where('edare_shahri_id', '=', Auth::user()->edarate_shahri_id);
|
||||
|
||||
return DataTableFacade::run(
|
||||
$query,
|
||||
@@ -24,7 +24,8 @@ class TransportationUnitService
|
||||
allowedSelects: [
|
||||
'id', 'user_id', 'username', 'state_name', 'province_name', 'edare_shahri_name',
|
||||
'description', 'requested_machines', 'type', 'type_fa', 'start_date', 'state_id',
|
||||
'end_date', 'request_date', 'end_point', 'area', 'zone', 'zone_fa', 'start_time', 'finish_time'
|
||||
'end_date', 'request_date', 'end_point', 'area', 'zone', 'zone_fa', 'start_time', 'finish_time',
|
||||
'code', 'category_id', 'category_name', 'explanation'
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@ return new class extends Migration
|
||||
{
|
||||
Schema::create('missionables', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->foreignId('mission_id')->constrained('missions')->noActionOnDelete();
|
||||
$table->foreignId('mission_id')->constrained('missions')->cascadeOnDelete();
|
||||
$table->morphs('missionable');
|
||||
$table->timestamps();
|
||||
});
|
||||
|
||||
@@ -15,7 +15,6 @@ use App\Http\Controllers\V3\Dashboard\Mission\RequestPortalController;
|
||||
use App\Http\Controllers\V3\Dashboard\Mission\TransportationUnitController;
|
||||
use App\Http\Controllers\V3\Dashboard\ObservedItemController;
|
||||
use App\Http\Controllers\V3\Dashboard\OtpManagementController;
|
||||
use App\Http\Controllers\V3\Dashboard\RoadItem\WebServiceController;
|
||||
use App\Http\Controllers\V3\Dashboard\RoadMaintenanceStationController;
|
||||
use App\Http\Controllers\V3\Dashboard\RoadPatrol\ReportController;
|
||||
use App\Http\Controllers\V3\Dashboard\SafetyAndPrivacy\OperatorController;
|
||||
@@ -28,6 +27,7 @@ use App\Http\Controllers\V3\NotificationController;
|
||||
use App\Http\Controllers\V3\PermissionManagementController;
|
||||
use App\Http\Controllers\V3\ProfileController;
|
||||
use App\Http\Controllers\V3\RahdaranController;
|
||||
use App\Http\Controllers\V3\WebServices\RoadItemController;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
|
||||
Route::get('admin/permissions', function () {
|
||||
@@ -160,7 +160,7 @@ Route::prefix('road_items')
|
||||
});
|
||||
Route::prefix('webservice')
|
||||
->name('webservice.')
|
||||
->controller(WebServiceController::class)
|
||||
->controller(RoadItemController::class)
|
||||
->group(function () {
|
||||
Route::get('/', 'getRoadItems')->name('getRoadItem');
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user