import React, { useState } from "react"; import { base44 } from "@/api/base44Client"; import { useMutation, useQueryClient, useQuery } from "@tanstack/react-query"; import { useNavigate } from "react-router-dom"; import { createPageUrl } from "@/utils"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"; import { Textarea } from "@/components/ui/textarea"; import { Switch } from "@/components/ui/switch"; import { Briefcase, ArrowLeft, Save, Plus, X, Loader2 } from "lucide-react"; import PageHeader from "@/components/common/PageHeader"; import { useToast } from "@/components/ui/use-toast"; export default function EditPartner() { const navigate = useNavigate(); const queryClient = useQueryClient(); const { toast } = useToast(); const urlParams = new URLSearchParams(window.location.search); const partnerId = urlParams.get('id'); const { data: partners = [] } = useQuery({ queryKey: ['partners'], queryFn: () => base44.entities.Partner.list(), initialData: [], }); const { data: sectors = [] } = useQuery({ queryKey: ['sectors'], queryFn: () => base44.entities.Sector.list(), initialData: [], }); const partner = partners.find(p => p.id === partnerId); const [partnerData, setPartnerData] = useState({ partner_name: "", partner_number: "", partner_type: "Corporate", sector_id: "", sector_name: "", primary_contact_name: "", primary_contact_email: "", primary_contact_phone: "", billing_address: "", sites: [], payment_terms: "Net 30", is_active: true }); const [newSite, setNewSite] = useState({ site_name: "", address: "", city: "", state: "", zip_code: "", site_manager: "", site_manager_email: "" }); React.useEffect(() => { if (partner) { setPartnerData({ partner_name: partner.partner_name || "", partner_number: partner.partner_number || "", partner_type: partner.partner_type || "Corporate", sector_id: partner.sector_id || "", sector_name: partner.sector_name || "", primary_contact_name: partner.primary_contact_name || "", primary_contact_email: partner.primary_contact_email || "", primary_contact_phone: partner.primary_contact_phone || "", billing_address: partner.billing_address || "", sites: partner.sites || [], payment_terms: partner.payment_terms || "Net 30", is_active: partner.is_active !== undefined ? partner.is_active : true }); } }, [partner]); const updatePartnerMutation = useMutation({ mutationFn: ({ id, data }) => base44.entities.Partner.update(id, data), onSuccess: () => { queryClient.invalidateQueries({ queryKey: ['partners'] }); toast({ title: "Partner Updated", description: "Partner information has been successfully updated", }); navigate(createPageUrl("PartnerManagement")); }, }); const handleSubmit = (e) => { e.preventDefault(); updatePartnerMutation.mutate({ id: partnerId, data: partnerData }); }; const handleSectorChange = (sectorId) => { const sector = sectors.find(s => s.id === sectorId); setPartnerData({ ...partnerData, sector_id: sectorId, sector_name: sector?.sector_name || "" }); }; const handleAddSite = () => { if (newSite.site_name && newSite.address) { setPartnerData({ ...partnerData, sites: [...partnerData.sites, newSite] }); setNewSite({ site_name: "", address: "", city: "", state: "", zip_code: "", site_manager: "", site_manager_email: "" }); } }; const handleRemoveSite = (index) => { setPartnerData({ ...partnerData, sites: partnerData.sites.filter((_, i) => i !== index) }); }; if (!partner) { return (

Loading Partner...

); } return (
Basic Information

Auto-generated unique ID

setPartnerData({...partnerData, partner_name: e.target.value})} required />
setPartnerData({...partnerData, payment_terms: e.target.value})} />
setPartnerData({...partnerData, primary_contact_name: e.target.value})} />
setPartnerData({...partnerData, primary_contact_email: e.target.value})} />
setPartnerData({...partnerData, primary_contact_phone: e.target.value})} />
setPartnerData({...partnerData, is_active: checked})} />

Toggle to activate or deactivate this partner