"use client" import { useState, useEffect } from "react" import type { Client } from "@/types/business" // Mock clients data const mockClients: Client[] = [ { id: "1", name: "ABC Electronics", email: "orders@abcelectronics.com", phone: "(555) 123-4567", address: "123 Tech Street, Silicon Valley, CA 94000", creditLimit: 10000, outstandingAmount: 4500, paymentTerms: "Net 30", contactPerson: "John Smith", businessType: "Electronics Retailer", notes: "Large volume customer, always pays on time", createdAt: "2024-01-01", }, { id: "2", name: "Tech Solutions Inc", email: "billing@techsolutions.com", phone: "(555) 987-6543", address: "456 Business Ave, Downtown, NY 10001", creditLimit: 15000, outstandingAmount: 2800, paymentTerms: "Net 15", contactPerson: "Sarah Johnson", businessType: "IT Services", notes: "Prefers email communication", createdAt: "2024-01-01", }, { id: "3", name: "Mobile World", email: "contact@mobileworld.com", phone: "(555) 456-7890", address: "789 Mobile Plaza, Austin, TX 78701", creditLimit: 8000, outstandingAmount: 0, paymentTerms: "Net 30", contactPerson: "Mike Chen", businessType: "Mobile Phone Store", notes: "New customer, good payment history so far", createdAt: "2024-01-01", }, { id: "4", name: "Digital Store", email: "admin@digitalstore.com", phone: "(555) 321-0987", address: "321 Digital Way, Seattle, WA 98101", creditLimit: 5000, outstandingAmount: 5200, paymentTerms: "Net 45", contactPerson: "Lisa Wong", businessType: "Online Retailer", notes: "Currently over credit limit - monitor closely", createdAt: "2024-01-01", }, ] export function useClients() { const [clients, setClients] = useState([]) const [loading, setLoading] = useState(true) useEffect(() => { // Simulate loading from localStorage or API const savedClients = localStorage.getItem("wholesale-clients") if (savedClients) { setClients(JSON.parse(savedClients)) } else { setClients(mockClients) localStorage.setItem("wholesale-clients", JSON.stringify(mockClients)) } setLoading(false) }, []) const addClient = (clientData: Omit) => { const newClient: Client = { ...clientData, id: Date.now().toString(), createdAt: new Date().toISOString(), } const updatedClients = [...clients, newClient] setClients(updatedClients) localStorage.setItem("wholesale-clients", JSON.stringify(updatedClients)) } const updateClient = (clientId: string, clientData: Omit) => { const updatedClients = clients.map((client) => (client.id === clientId ? { ...client, ...clientData } : client)) setClients(updatedClients) localStorage.setItem("wholesale-clients", JSON.stringify(updatedClients)) } const deleteClient = (clientId: string) => { const updatedClients = clients.filter((client) => client.id !== clientId) setClients(updatedClients) localStorage.setItem("wholesale-clients", JSON.stringify(updatedClients)) } const addPayment = (clientId: string, amount: number, notes: string, date: string) => { const updatedClients = clients.map((client) => client.id === clientId ? { ...client, outstandingAmount: Math.max(0, client.outstandingAmount - amount) } : client, ) setClients(updatedClients) localStorage.setItem("wholesale-clients", JSON.stringify(updatedClients)) // In a real app, you'd also save the payment record to a payments table console.log(`Payment recorded: $${amount} from client ${clientId} on ${date}. Notes: ${notes}`) } const getClientById = (clientId: string) => { return clients.find((client) => client.id === clientId) } const getClientsWithOutstandingCredit = () => { return clients.filter((client) => client.outstandingAmount > 0) } const getClientsOverCreditLimit = () => { return clients.filter((client) => client.outstandingAmount > client.creditLimit) } const getTotalOutstandingAmount = () => { return clients.reduce((total, client) => total + client.outstandingAmount, 0) } return { clients, loading, addClient, updateClient, deleteClient, addPayment, getClientById, getClientsWithOutstandingCredit, getClientsOverCreditLimit, getTotalOutstandingAmount, } }