query('type'); $query = CatalogCancellationReason::query(); if ($type === 'cancelacion') { $query->forCancellation(); } elseif ($type === 'sustitucion') { $query->forSubstitution(); } else { $query->orderBy('id'); } $reasons = $query->get(['id', 'code', 'name', 'description', 'applies_to']); return ApiResponse::OK->response([ 'message' => 'Razones de cancelación obtenidas exitosamente', 'data' => $reasons, ]); } public function show($id) { $reason = CatalogCancellationReason::find($id); if (!$reason) { return ApiResponse::NOT_FOUND->response([ 'message' => 'Razón de cancelación no encontrada', ]); } return ApiResponse::OK->response([ 'message' => 'Razón de cancelación obtenida exitosamente', 'data' => $reason, ]); } public function store(CatalogCancellationReasonStoreRequest $request) { $validated = $request->validated(); $reason = CatalogCancellationReason::create($validated); return ApiResponse::CREATED->response([ 'message' => 'Razón de cancelación creada exitosamente', 'data' => $reason, ]); } public function update(CatalogCancellationReasonUpdateRequest $request, $id) { $reason = CatalogCancellationReason::find($id); if (!$reason) { return ApiResponse::NOT_FOUND->response([ 'message' => 'Razón de cancelación no encontrada', ]); } $validated = $request->validated(); $reason->update($validated); return ApiResponse::OK->response([ 'message' => 'Razón de cancelación actualizada exitosamente', 'data' => $reason, ]); } public function destroy($id) { $reason = CatalogCancellationReason::find($id); if (!$reason) { return ApiResponse::NOT_FOUND->response([ 'message' => 'Razón de cancelación no encontrada', ]); } $reason->delete(); return ApiResponse::OK->response([ 'message' => 'Razón de cancelación eliminada exitosamente', ]); } }