orderBy('min_purchase_amount') ->paginate(config('app.pagination')); return ApiResponse::OK->response([ 'tiers' => $tiers ]); } /** * Almacenar un nuevo tier */ public function store(ClientTierStoreRequest $request) { $tier = ClientTier::create($request->validated()); return ApiResponse::OK->response([ 'tier' => $tier, 'message' => 'Tier creado correctamente.' ]); } /** * Mostrar un tier especĂ­fico */ public function show(ClientTier $tier) { $tier->loadCount('clients'); return ApiResponse::OK->response([ 'tier' => $tier ]); } /** * Actualizar un tier existente */ public function update(ClientTierUpdateRequest $request, ClientTier $tier) { $tier->update($request->validated()); return ApiResponse::OK->response([ 'tier' => $tier, 'message' => 'Tier actualizado correctamente.' ]); } /** * Eliminar un tier */ public function destroy(ClientTier $tier) { // Verificar si el tier tiene clientes asignados if ($tier->clients()->count() > 0) { return ApiResponse::BAD_REQUEST->response([ 'message' => 'No se puede eliminar el tier porque tiene clientes asignados.' ]); } $tier->delete(); return ApiResponse::OK->response([ 'message' => 'Tier eliminado correctamente.' ]); } /** * Activar/Desactivar un tier */ public function toggleActive(ClientTier $tier) { $tier->update(['is_active' => !$tier->is_active]); return ApiResponse::OK->response([ 'tier' => $tier, 'message' => 'Estado del tier actualizado correctamente.' ]); } /** * Seleccionar tiers activos */ public function active() { $tiers = ClientTier::active() ->orderBy('min_purchase_amount') ->get(); return ApiResponse::OK->response([ 'tiers' => $tiers ]); } }