import React, { useState, useEffect } from "react"; import { useNavigate, useParams } from "react-router-dom"; import { useQueryClient } from "@tanstack/react-query"; import { Button } from "@/common/components/ui/button"; import { Card, CardContent, CardHeader, CardTitle } from "@/common/components/ui/card"; import { Input } from "@/common/components/ui/input"; import { Label } from "@/common/components/ui/label"; import { Textarea } from "@/common/components/ui/textarea"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/common/components/ui/select"; import { ArrowLeft, Save, Loader2, Building2, User, MapPin, CreditCard, Activity } from "lucide-react"; import DashboardLayout from "@/features/layouts/DashboardLayout"; import { useGetBusinessById, useUpdateBusiness } from "@/dataconnect-generated/react"; import { BusinessArea, BusinessSector, BusinessStatus, BusinessRateGroup } from "@/dataconnect-generated"; import { dataConnect } from "@/features/auth/firebase"; export default function EditClient() { const navigate = useNavigate(); const queryClient = useQueryClient(); const { id: businessId } = useParams<{ id: string }>(); const { data: businessData, isLoading: isLoadingBusiness } = useGetBusinessById(dataConnect, { id: businessId || "" }); const { mutateAsync: updateBusiness, isPending: isUpdating } = useUpdateBusiness(dataConnect); const [formData, setFormData] = useState({ businessName: "", sector: BusinessSector.OTHER, address: "", city: "", area: BusinessArea.OTHER, contactName: "", phone: "", email: "", rateGroup: BusinessRateGroup.STANDARD, status: BusinessStatus.ACTIVE, notes: "" }); useEffect(() => { if (businessData?.business) { const b = businessData.business; setFormData({ businessName: b.businessName || "", sector: b.sector || BusinessSector.OTHER, address: b.address || "", city: b.city || "", area: b.area || BusinessArea.OTHER, contactName: b.contactName || "", phone: b.phone || "", email: b.email || "", rateGroup: b.rateGroup || BusinessRateGroup.STANDARD, status: b.status || BusinessStatus.ACTIVE, notes: b.notes || "" }); } }, [businessData]); const handleChange = (field: string, value: any) => { setFormData(prev => ({ ...prev, [field]: value })); }; const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); if (!businessId) return; try { await updateBusiness({ id: businessId, businessName: formData.businessName, contactName: formData.contactName, phone: formData.phone, email: formData.email, address: formData.address, city: formData.city, area: formData.area, sector: formData.sector, rateGroup: formData.rateGroup, status: formData.status, notes: formData.notes }); queryClient.invalidateQueries({ queryKey: ['businesses'] }); queryClient.invalidateQueries({ queryKey: ['business', businessId] }); navigate("/clients"); } catch (error) { console.error("Error updating client:", error); } }; if (isLoadingBusiness) { return (