scheduleService = $scheduleService; } public function index(): JsonResponse { $schedules = $this->scheduleService->getAll(); return $this->successResponse( ScheduleResource::collection($schedules), ); } public function store(ScheduleRequest $request): JsonResponse { try { $validated = $request->validated(); $schedules = $this->scheduleService->createSingleOrMultiple($validated, $validated['schedules']); return $this->successResponse( payload: ScheduleResource::collection($schedules), message: count($schedules) . " " . __("schedules.schedules_created"), code: 201, ); } catch (\Exception $e) { return $this->errorResponse($e->getMessage(), 422); } } public function show(string $id): JsonResponse { $schedule = $this->scheduleService->getById($id); return $this->successResponse( new ScheduleResource($schedule), ); } public function update(ScheduleRequest $request, string $id): JsonResponse { try { $schedule = $this->scheduleService->update($id, $request->validated()); return $this->successResponse( payload: new ScheduleResource($schedule), message: __("messages.updated"), ); } catch (\Exception $e) { return $this->errorResponse($e->getMessage(), 422); } } public function destroy(string $id): JsonResponse { $this->scheduleService->delete($id); return $this->successResponse( message: __("messages.deleted"), code: 204, ); } public function groupedByClient(): JsonResponse { $grouped = $this->scheduleService->getSchedulesDefaultGroupedByClient(); return $this->successResponse($grouped); } public function finished(): JsonResponse { $schedules = $this->scheduleService->getFinished(); return $this->successResponse( ScheduleResource::collection($schedules), ); } public function updateStatus(string $id, ScheduleRequest $request): JsonResponse { try { $validated = $request->validate([ 'status' => 'required|in:pending,accepted,rejected,paid,cancelled,started,finished' ]); $schedule = $this->scheduleService->updateStatus($id, $validated['status']); return $this->successResponse( payload: new ScheduleResource($schedule), message: __("messages.updated"), ); } catch (\Exception $e) { return $this->errorResponse($e->getMessage(), 422); } } }