json($controlUnitService->datatable($request)); } public function start(StartRequest $request, Mission $mission): JsonResponse { DB::transaction(function () use ($request, $mission) { $mission->histories()->create([ 'user_id' => auth()->user()->id, 'previous_state_id' => $mission->state_id, 'previous_state_name' => $mission->state_name, ]); $state = MissionStates::START_MISSION->value; $mission->update([ 'state_id' => $state, 'state_name' => MissionStates::name($state), 'start_time' => now() ]); }); return $this->successResponse(); } public function finish(FinishRequest $request, Mission $mission): JsonResponse { DB::transaction(function () use ($request, $mission) { $mission->histories()->create([ 'user_id' => auth()->user()->id, 'previous_state_id' => $mission->state_id, 'previous_state_name' => $mission->state_name, ]); $state = MissionStates::END_MISSION->value; $mission->update([ 'state_id' => $state, 'state_name' => MissionStates::name($state), 'finish_time' => now() ]); }); return $this->successResponse(); } public function noProcess(NoProcessRequest $request): JsonResponse { DB::transaction(function () use ($request) { $user = auth()->user(); $zone= $request->zone; $type= MissionTypes::NO_PROCESS->value; $mission = Mission::query()->create([ 'user_id' => $user->id, 'username' => $user->username, 'province_id' => $user->province_id, 'province_name' => $user->province_fa, 'edare_shahri_id' => $user->edarate_shahri_id ?? null, 'edare_shahri_name' => $user->edarate_shahri_name ?? null, 'zone' => $zone, 'zone_fa' => MissionZones::name($zone), 'type' => $type, 'type_fa' => MissionTypes::name($type), 'start_date' => $request->start_date, 'end_date' => $request->end_date, 'end_point' => $request->end_point, 'area' => json_encode($request->area), 'category_id' => $request->category_id, 'category_name' => MissionCategory::name($request->category_id), 'start_time' => $request->start_date, 'finish_time' => $request->end_date, ]); $mission->rahdaran()->sync($request->rahdaran); $mission->machines()->attach($request->machines); $mission->rahdaran()->attach($request->driver, ['is_driver' => true]); }); return $this->successResponse(); } }