From d3cb4bd493e5dc0cda71eb60af87cb65cfe6ca04 Mon Sep 17 00:00:00 2001 From: FlorianSpeicher Date: Sun, 15 Jun 2025 16:42:56 +0200 Subject: [PATCH] Loading Customer data on payment. --- 00-backend/datasource/database.sqlite | Bin 2727936 -> 2727936 bytes 01-frontend/src/pages/Payment.tsx | 95 ++++++++++++-------------- 2 files changed, 44 insertions(+), 51 deletions(-) diff --git a/00-backend/datasource/database.sqlite b/00-backend/datasource/database.sqlite index 2e0e78e6385c406172e3f0b1352bb31a6cb61595..ee07ab439ef3832a017bad5567283e80ad11debf 100644 GIT binary patch delta 543 zcmZ9`J!lhg9LDkcU+!|r`SPntn$+ghtF4}B44h&Mf?$oHgD>Z(2tL8ayGlrPQ z*YNOgOxAr#_vyoAhqG?k$}=J9g452i)Ip+XFrrf*~^^427XGq701@W5gLcV;N&PV+CU+ zgBTr*Rg459$w)Ce8EHm_(ZyKJ=w@UY24f9lEn^+SWb`oBGkO_)j17#9&tWM}LZiGy z-)Wv^=q8<}1C+0)pIKdW+0axerwYw!dhYdtTT@f|#ng2AZ?|kj+d6UE`}xTn z{OsRHPvc6a8fdaEWJCS0Uz^#b+Mrwg{qj%bj(@kM2e-(E($;+SP2YQW|I=6czK^#k zbt2Gs?tyGX+M2m^D0U=!vCw#N^vAA8zY?W@6>m|VntyHW4yr2>Rp<#V(p$Pp)3j7i o&soQ5D4eUMA~_MRjJD5EoZ33WO-kzwm)uxrSoMX*rp;ge0o;SRX8-^I delta 496 zcmZ9`O-K}R9LDkayYsTUrhnUPR~t2_(y4Y2*5*+t^`IoUNC%0)N6=G;jzLAqt~^=< z6?@nY-V~`&(gfE%hzd(y1Vu>;Z-R$RiSptLL^FGw!|(EZ4!`ff;4u&gNf3f4B7B5OXoOA}gr5iy zL86#ALzEDuge1y{vqXqEN0bxii7*i%Du_zr0$~zWL^V-ETqJ4({ - firstName: '', - lastName: '', - telefon: '', + const [shippingDetails, setShippingDetails] = useState({ + id: 0, // This will be set by the backend or user data + name: '', + surname: '', address: '', - postalCode: '', - city: '', + zip: '', country: 'Deutschland', }); const [orderNumber, setOrderNumber] = useState(null); const steps = [t('reviewCart'), t('shippingDetails'), t('payment'), t('orderSummary')]; const { user } = useAccount(); - const customerData: CustomerType = { - id: 0, - name: shippingDetails.firstName, - surname: shippingDetails.lastName, - address: shippingDetails.address, - country: shippingDetails.country, - zip: shippingDetails.postalCode, - }; const submitOrderData: SubmitOrder = { id: 0, // This will be set by the backend @@ -104,8 +95,8 @@ export default function Payment() { }; const { refetch: refetchCustomer } = useQuery({ - queryKey: ["submitCustomer", customerData], - queryFn: () => submitCustomer(customerData), + queryKey: ["submitCustomer", shippingDetails], + queryFn: () => submitCustomer(shippingDetails), retry: 0, retryDelay: 1000, enabled: false, @@ -117,6 +108,28 @@ export default function Payment() { }; + const { refetch: customerData } = useQuery({ + queryKey: ['fetchCustomer', user?.customerId], + queryFn: () => fetchCustomer(user?.customerId || 0), // Funktion zum Abrufen der Kundendaten + enabled: false + }); + + useEffect(() => { + const fetchShippingDetails = async () => { + if (user) { + try { + const userShippingDetails = (await customerData()).data; + setShippingDetails(userShippingDetails || shippingDetails); + } catch (error) { + console.error("Fehler beim Laden der Kundendaten:", error); + } + } + }; + + fetchShippingDetails(); + }, [user, customerData, shippingDetails]); + + // Verwende useMutation statt useQuery für submitOrder const { mutateAsync: submitOrderMutation } = useMutation({ mutationFn: (orderData: SubmitOrder) => submitOrder(orderData), @@ -174,11 +187,10 @@ export default function Payment() { // Hilfsfunktion prüfen, ob alle Pflichtfelder ausgefüllt sind const isShippingDetailsValid = () => { return ( - shippingDetails.firstName.trim() !== '' && - shippingDetails.lastName.trim() !== '' && + shippingDetails.name.trim() !== '' && + shippingDetails.surname.trim() !== '' && shippingDetails.address.trim() !== '' && - shippingDetails.postalCode.trim() !== '' && - shippingDetails.city.trim() !== '' && + shippingDetails.zip.trim() !== '' && shippingDetails.country.trim() !== '' ); }; @@ -211,7 +223,7 @@ export default function Payment() { fullWidth label={t('firstName')} name="firstName" - value={shippingDetails.firstName} + value={shippingDetails.name} onChange={handleInputChange} required /> @@ -220,20 +232,11 @@ export default function Payment() { fullWidth label={t('lastName')} name="lastName" - value={shippingDetails.lastName} + value={shippingDetails.surname} onChange={handleInputChange} required /> - - - - {t('shippingDetails')}: - {shippingDetails.firstName} {shippingDetails.lastName}
+ {shippingDetails.name} {shippingDetails.surname}
{shippingDetails.address}
- {shippingDetails.postalCode} {shippingDetails.city}
- {shippingDetails.country} + {shippingDetails.zip} {shippingDetails.country}
{t('orderedItems')}: