import { useState } from 'react'; import { registerCustomer, findCustomerByPhone, addLoyaltyPoints, subtractLoyaltyPoints } from '../api/customers'; const initialForm = { firstName: '', lastName: '', phoneNumber: '' }; export default function Customers() { const [form, setForm] = useState(initialForm); const [registerMsg, setRegisterMsg] = useState(null); const [submitting, setSubmitting] = useState(false); const [pointsInput, setPointsInput] = useState(''); function handleChange(e) { const { name, value } = e.target; setForm((prev) => ({ ...prev, [name]: value })); } function handleRegister(e) { e.preventDefault(); setSubmitting(true); setRegisterMsg(null); registerCustomer(form) .then((response) => { setRegisterMsg(`Client créé (id : ${response.data})`); setForm(initialForm); }) .catch((error) => { console.error(error); setRegisterMsg('Erreur lors de la création du client.'); }) .finally(() => setSubmitting(false)); } const [phone, setPhone] = useState(''); const [customer, setCustomer] = useState(null); const [searchError, setSearchError] = useState(null); function handleSearch(e) { e.preventDefault(); setSearchError(null); setCustomer(null); findCustomerByPhone(phone) .then((response) => setCustomer(response.data)) .catch((error) => { console.error(error); setSearchError('Aucun client trouvé avec ce numéro.'); }); } function applyLoyalty(operation) { const points = Number(pointsInput); const action = operation === 'add' ? addLoyaltyPoints : subtractLoyaltyPoints; action(customer.id, points) .then((response) => { setCustomer((prev) => ({ ...prev, loyaltyPoints: response.data })); setPointsInput(''); }) .catch((error) => { console.error(error); if (error.response?.status === 400) setSearchError('Pas assez de points pour ce retrait.'); else setSearchError('Erreur lors de la mise à jour des points.'); }); } return (

Gestion des clients

Enregistrer un client

{registerMsg &&

{registerMsg}

}

Rechercher un client

{searchError &&

{searchError}

} {customer && (

{customer.firstName} {customer.lastName}

Téléphone : {customer.phoneNumber}

Points de fidélité : {customer.loyaltyPoints}

setPointsInput(e.target.value)}placeholder="Nombre de points"/>
)}
); }