Merge pull request #95 from witelgroup/bugfix/MissionSearch

convert many to many to one to many
This commit is contained in:
Amir Ghasempoor
2025-12-01 11:30:28 +03:30
committed by GitHub
11 changed files with 123 additions and 32 deletions

View File

@@ -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,
]);
});

View File

@@ -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

View File

@@ -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;

View File

@@ -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'])
);
}