service->index($request->all()); }, __('message.fetched')); } public function stats(Request $request): JsonResponse { return ApiResponse::handle(function () use ($request) { return $this->service->stats($request->all()); }, __('message.fetched')); } public function show(int $id): JsonResponse { return ApiResponse::handle(function () use ($id) { return $this->service->show($id); }, __('message.fetched')); } public function store(StoreNonconformingReportRequest $request): JsonResponse { return ApiResponse::handle(function () use ($request) { return $this->service->store($request->validated()); }, __('message.created')); } public function update(UpdateNonconformingReportRequest $request, int $id): JsonResponse { return ApiResponse::handle(function () use ($request, $id) { return $this->service->update($id, $request->validated()); }, __('message.updated')); } public function destroy(int $id): JsonResponse { return ApiResponse::handle(function () use ($id) { $this->service->destroy($id); return 'success'; }, __('message.deleted')); } public function changeStatus(Request $request, int $id): JsonResponse { $request->validate(['status' => 'required|string|in:RECEIVED,ANALYZING,RESOLVED,CLOSED']); return ApiResponse::handle(function () use ($request, $id) { return $this->service->changeStatus($id, $request->input('status')); }, __('message.updated')); } public function submitApproval(Request $request, int $id): JsonResponse { $request->validate([ 'title' => 'nullable|string|max:200', 'form_id' => 'nullable|integer', 'steps' => 'required|array|min:1', 'steps.*.approver_id' => 'required|integer', 'steps.*.step_type' => 'nullable|string|in:approval,agreement,reference', ]); return ApiResponse::handle(function () use ($request, $id) { return $this->service->submitForApproval($id, $request->all()); }, __('message.created')); } }