Merge pull request #95 from witelgroup/bugfix/MissionSearch
convert many to many to one to many
This commit is contained in:
19
app/Enums/CmmsMachineStatus.php
Normal file
19
app/Enums/CmmsMachineStatus.php
Normal file
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
|
||||
namespace App\Enums;
|
||||
|
||||
enum CmmsMachineStatus: int
|
||||
{
|
||||
case AMADE= 1;
|
||||
case RESERVE = 2;
|
||||
case DAR_MAMORIAT = 3;
|
||||
|
||||
public function label(): string
|
||||
{
|
||||
return match ($this) {
|
||||
self::AMADE => 'آماده',
|
||||
self::RESERVE => 'رزرو',
|
||||
self::DAR_MAMORIAT => 'در ماموریت',
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -14,6 +14,7 @@ use App\Services\Cartables\Mission\ControlUnitService;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Throwable;
|
||||
|
||||
class ControlUnitController extends Controller
|
||||
{
|
||||
@@ -24,9 +25,12 @@ class ControlUnitController extends Controller
|
||||
return response()->json($controlUnitService->datatable($request));
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws Throwable
|
||||
*/
|
||||
public function start(StartRequest $request, Mission $mission): JsonResponse
|
||||
{
|
||||
DB::transaction(function () use ($mission) {
|
||||
DB::transaction(function () use ($mission, $request) {
|
||||
$mission->histories()->create([
|
||||
'user_id' => auth()->user()->id,
|
||||
'previous_state_id' => $mission->state_id,
|
||||
@@ -38,6 +42,7 @@ class ControlUnitController extends Controller
|
||||
'state_id' => $state,
|
||||
'state_name' => MissionStates::name($state),
|
||||
'start_time' => now(),
|
||||
'km' => $request->km,
|
||||
]);
|
||||
});
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ class DetailController extends Controller
|
||||
|
||||
public function machines(Mission $mission): JsonResponse
|
||||
{
|
||||
return $this->successResponse($mission->machines()->get(['cmms_machines.id', 'cmms_machines.machine_code', 'cmms_machines.car_name', 'cmms_machines.plak_number']));
|
||||
return $this->successResponse($mission->machine()->get(['cmms_machines.id', 'cmms_machines.machine_code', 'cmms_machines.car_name', 'cmms_machines.plak_number']));
|
||||
}
|
||||
|
||||
public function rahdaran(Mission $mission): JsonResponse
|
||||
|
||||
@@ -13,6 +13,7 @@ use App\Http\Requests\V3\Mission\RequestPortal\NoProcessRequest;
|
||||
use App\Http\Requests\V3\Mission\RequestPortal\StoreRequest;
|
||||
use App\Http\Requests\V3\Mission\RequestPortal\UpdateRequest;
|
||||
use App\Http\Traits\ApiResponse;
|
||||
use App\Models\CMMSMachine;
|
||||
use App\Models\Mission;
|
||||
use App\Models\RoadObserved;
|
||||
use App\Services\Cartables\Mission\RequestPortalService;
|
||||
@@ -20,6 +21,7 @@ use Carbon\Carbon;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Throwable;
|
||||
|
||||
class RequestPortalController extends Controller
|
||||
{
|
||||
@@ -30,6 +32,9 @@ class RequestPortalController extends Controller
|
||||
return response()->json($requestPortalService->datatable($request));
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws Throwable
|
||||
*/
|
||||
public function store(StoreRequest $request): JsonResponse
|
||||
{
|
||||
DB::transaction(function () use ($request) {
|
||||
@@ -65,13 +70,6 @@ class RequestPortalController extends Controller
|
||||
]);
|
||||
|
||||
$mission->rahdaran()->sync($request->rahdaran);
|
||||
|
||||
if ($category == 3) {
|
||||
RoadObserved::query()
|
||||
->find($request->road_observed_id)
|
||||
->missions()
|
||||
->attach($mission->id);
|
||||
}
|
||||
});
|
||||
|
||||
return $this->successResponse();
|
||||
@@ -82,6 +80,9 @@ class RequestPortalController extends Controller
|
||||
return $this->successResponse($mission);
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws Throwable
|
||||
*/
|
||||
public function continueMission(ContinueMissionRequest $request, Mission $mission): JsonResponse
|
||||
{
|
||||
DB::transaction(function () use ($request, $mission) {
|
||||
@@ -95,6 +96,7 @@ class RequestPortalController extends Controller
|
||||
|
||||
$state = MissionStates::START_MISSION->value;
|
||||
$category = $request->category_id;
|
||||
$machine = CMMSMachine::query()->find($request->machine_id);
|
||||
|
||||
$newMission = Mission::query()->create([
|
||||
'user_id' => $user->id,
|
||||
@@ -119,23 +121,20 @@ class RequestPortalController extends Controller
|
||||
'category_name' => MissionCategory::name($category),
|
||||
'explanation' => $request->explanation,
|
||||
'start_time' => now(),
|
||||
'machine_id' => $machine->id,
|
||||
'machine_name' => $machine->car_name,
|
||||
]);
|
||||
|
||||
$newMission->rahdaran()->sync($request->rahdaran);
|
||||
$newMission->machines()->attach($request->machines);
|
||||
$newMission->rahdaran()->attach($request->driver, ['is_driver' => true]);
|
||||
|
||||
if ($category == 3) {
|
||||
RoadObserved::query()
|
||||
->find($request->road_observed_id)
|
||||
->missions()
|
||||
->attach($newMission->id);
|
||||
}
|
||||
});
|
||||
|
||||
return $this->successResponse();
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws Throwable
|
||||
*/
|
||||
public function update(UpdateRequest $request, Mission $mission): JsonResponse
|
||||
{
|
||||
DB::transaction(function () use ($mission, $request) {
|
||||
@@ -159,17 +158,14 @@ class RequestPortalController extends Controller
|
||||
]);
|
||||
|
||||
$mission->rahdaran()->sync($request->rahdaran);
|
||||
if ($request->category_id == 3) {
|
||||
RoadObserved::query()
|
||||
->find($request->road_observed_id)
|
||||
->missions()
|
||||
->sync($mission->id);
|
||||
}
|
||||
});
|
||||
|
||||
return $this->successResponse();
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws Throwable
|
||||
*/
|
||||
public function destroy(Mission $mission): JsonResponse
|
||||
{
|
||||
DB::transaction(function () use ($mission) {
|
||||
@@ -180,10 +176,12 @@ class RequestPortalController extends Controller
|
||||
return $this->successResponse();
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws Throwable
|
||||
*/
|
||||
public function noProcess(NoProcessRequest $request): JsonResponse
|
||||
{
|
||||
DB::transaction(function () use ($request) {
|
||||
|
||||
$start = Carbon::parse($request->start_date);
|
||||
$end = Carbon::parse($request->end_date);
|
||||
$type = $start->diffInMinutes($end) > 480 ? MissionTypes::NO_PROCESS_ROZANE->value : MissionTypes::NO_PROCESS_SAATY->value;
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace App\Http\Controllers\V3\Dashboard\Mission;
|
||||
|
||||
use App\Enums\CmmsMachineStatus;
|
||||
use App\Enums\MissionStates;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\V3\Mission\TransportaionUnit\AllocateRequest;
|
||||
@@ -13,6 +14,7 @@ use App\Services\Cartables\Mission\TransportationUnitService;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Throwable;
|
||||
|
||||
class TransportationUnitController extends Controller
|
||||
{
|
||||
@@ -23,10 +25,12 @@ class TransportationUnitController extends Controller
|
||||
return response()->json($transportationUnitService->dataTable($request));
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws Throwable
|
||||
*/
|
||||
public function allocate(AllocateRequest $request, Mission $mission): JsonResponse
|
||||
{
|
||||
DB::transaction(function () use ($request, $mission) {
|
||||
$mission->machines()->attach($request->machines);
|
||||
$mission->rahdaran()->attach($request->driver, ['is_driver' => true]);
|
||||
|
||||
$mission->histories()->create([
|
||||
@@ -36,19 +40,27 @@ class TransportationUnitController extends Controller
|
||||
]);
|
||||
|
||||
$state = MissionStates::PENDING_CONFIRMATION->value;
|
||||
$machine = CMMSMachine::query()->find($request->machine_id);
|
||||
|
||||
$mission->update([
|
||||
'state_id' => $state,
|
||||
'state_name' => MissionStates::name($state),
|
||||
'km' => $request->km,
|
||||
'machine_id' => $machine->id,
|
||||
'machine_name' => $machine->car_name,
|
||||
]);
|
||||
});
|
||||
|
||||
return $this->successResponse();
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws Throwable
|
||||
*/
|
||||
public function deallocate(DeallocateRequest $request, Mission $mission): JsonResponse
|
||||
{
|
||||
DB::transaction(function () use ($request, $mission) {
|
||||
$mission->rahdaran()->wherePivot('is_driver', '=', true)->detach();
|
||||
|
||||
$mission->histories()->create([
|
||||
'user_id' => auth()->user()->id,
|
||||
'previous_state_id' => $mission->state_id,
|
||||
@@ -62,6 +74,8 @@ class TransportationUnitController extends Controller
|
||||
'state_id' => $state,
|
||||
'state_name' => MissionStates::name($state),
|
||||
'description' => $request->description,
|
||||
'machine_id' => null,
|
||||
'machine_name' => null,
|
||||
]);
|
||||
});
|
||||
|
||||
@@ -73,6 +87,7 @@ class TransportationUnitController extends Controller
|
||||
return $this->successResponse(
|
||||
CMMSMachine::query()
|
||||
->where('car_type', '=', $mission->car_type)
|
||||
// ->where('status', '<>', CmmsMachineStatus::DAR_MAMORIAT->value)
|
||||
->get(['machine_code', 'id', 'plak_number', 'car_name'])
|
||||
);
|
||||
}
|
||||
|
||||
@@ -26,6 +26,7 @@ class StartRequest extends FormRequest
|
||||
{
|
||||
return [
|
||||
'code' => 'required|string',
|
||||
'km' => 'required',
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
@@ -28,8 +28,7 @@ class ContinueMissionRequest extends FormRequest
|
||||
return [
|
||||
'rahdaran' => 'array',
|
||||
'rahdaran.*' => 'exists:rahdaran,id',
|
||||
'machines' => 'required|array',
|
||||
'machines.*' => 'required|integer|exists:cmms_machines,id',
|
||||
'machine_id' => 'required|integer|exists:cmms_machines,id',
|
||||
'driver' => 'required|integer|exists:rahdaran,id',
|
||||
'type' => 'required|in:1,2',
|
||||
'zone' => 'required|in:1,2,3',
|
||||
|
||||
@@ -3,8 +3,10 @@
|
||||
namespace App\Http\Requests\V3\Mission\TransportaionUnit;
|
||||
|
||||
use App\Enums\MissionStates;
|
||||
use App\Models\Mission;
|
||||
use Illuminate\Contracts\Validation\ValidationRule;
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
use Illuminate\Validation\Validator;
|
||||
|
||||
class AllocateRequest extends FormRequest
|
||||
{
|
||||
@@ -24,10 +26,27 @@ class AllocateRequest extends FormRequest
|
||||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
'machines' => 'required|array',
|
||||
'machines.*' => 'required|integer|exists:cmms_machines,id',
|
||||
'machine_id' => 'required|integer|exists:cmms_machines,id',
|
||||
'driver' => 'required|integer|exists:rahdaran,id',
|
||||
'km' => 'required',
|
||||
];
|
||||
}
|
||||
|
||||
public function after(): array
|
||||
{
|
||||
return [
|
||||
function (Validator $validator) {
|
||||
$duplicateMission = Mission::query()->where('machine_id', '=', $this->machine_id)
|
||||
->whereBetween('start_date', [$this->mission->start_date, $this->mission->end_date])
|
||||
->orWhereBetween('end_date', [$this->mission->start_date, $this->mission->end_date])
|
||||
->exists();
|
||||
|
||||
if ($duplicateMission) {
|
||||
$validator->errors()->add(
|
||||
'machine',
|
||||
'خودروی مورد نظر در این زمان رزرو می باشد'
|
||||
);
|
||||
}
|
||||
},
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -84,4 +84,9 @@ class Mission extends Model
|
||||
'missionable_id'
|
||||
);
|
||||
}
|
||||
|
||||
public function machine(): HasOne
|
||||
{
|
||||
return $this->hasOne(CMMSMachine::class);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@ class TransportationUnitService
|
||||
public function dataTable(Request $request)
|
||||
{
|
||||
$query = Mission::query()
|
||||
->where('state_id', '=', MissionStates::REQUEST_CREATED->value)
|
||||
->whereIn('state_id', [MissionStates::REQUEST_CREATED->value, MissionStates::PENDING_CONFIRMATION->value])
|
||||
->where('edare_shahri_id', '=', Auth::user()->edarate_shahri_id);
|
||||
|
||||
return DataTableFacade::run(
|
||||
|
||||
Reference in New Issue
Block a user