service->getAll(); return $this->successResponse(payload: ServicePackageResource::collection($items)); } public function store(ServicePackageRequest $request): JsonResponse { $validated = $request->validated(); $item = $this->hasSchedulePayload($validated) ? $this->service->createWithSchedules($validated) : $this->service->create($validated); return $this->successResponse(payload: new ServicePackageResource($item), message: __('messages.created'), code: 201); } public function show(int $id): JsonResponse { $item = $this->service->findById($id); return $this->successResponse(payload: new ServicePackageResource($item)); } public function update(ServicePackageRequest $request, int $id): JsonResponse { $item = $this->service->update($id, $request->validated()); return $this->successResponse(payload: new ServicePackageResource($item), message: __('messages.updated')); } public function destroy(int $id): JsonResponse { $this->service->delete($id); return $this->successResponse(message: __('messages.deleted'), code: 204); } // public function myServicePackages(): JsonResponse { $items = $this->service->getByUserId(Auth::id()); return $this->successResponse(payload: ServicePackageResource::collection($items)); } public function storeMine(ServicePackageRequest $request): JsonResponse { $request->merge(['client_id' => Auth::user()?->client?->id]); $item = $this->service->createForUser($request->validated(), Auth::id()); return $this->successResponse(payload: new ServicePackageResource($item), message: __('messages.created'), code: 201); } // private function hasSchedulePayload(array $data): bool { return ! empty(data_get($data, 'schedules')) || ! empty(data_get($data, 'dates')) || ! empty(data_get($data, 'date')); } }