json(LostReason::orderBy('sort_order')->get()); } public function store(Request $request): JsonResponse { $validated = $request->validate([ 'name' => 'required|string|max:255', 'slug' => 'required|string|max:80|unique:lost_reasons,slug', 'color' => 'nullable|string|max:20', 'sort_order' => 'nullable|integer', 'is_active' => 'nullable|boolean', ]); $reason = LostReason::create($validated); ActivityLogger::log('lost_reason_created', "Lost reason {$reason->name} created", $reason); return response()->json($reason, 201); } public function update(Request $request, LostReason $lostReason): JsonResponse { $validated = $request->validate([ 'name' => 'sometimes|string|max:255', 'slug' => 'sometimes|string|max:80|unique:lost_reasons,slug,'.$lostReason->id, 'color' => 'nullable|string|max:20', 'sort_order' => 'nullable|integer', 'is_active' => 'nullable|boolean', ]); $lostReason->update($validated); ActivityLogger::log('lost_reason_updated', "Lost reason {$lostReason->name} updated", $lostReason); return response()->json($lostReason); } public function destroy(LostReason $lostReason): JsonResponse { $lostReason->update(['is_active' => false]); ActivityLogger::log('lost_reason_disabled', "Lost reason {$lostReason->name} disabled", $lostReason); return response()->json(['message' => 'دلیل شکست غیرفعال شد']); } }