diff --git a/src/routes/paths.ts b/src/routes/paths.ts index 94691441fa9b596511ae481393a9c876a611638e..87ff0081822eab5e8b405dd5c9f925c6b5fc6cee 100644 --- a/src/routes/paths.ts +++ b/src/routes/paths.ts @@ -67,7 +67,7 @@ export const paths = { info: (id: string) => `${ROOTS.DASHBOARD}/lives/${id}/details`, edit: (id: string) => `${ROOTS.DASHBOARD}/lives/${id}/edit`, saleSession: `${ROOTS.DASHBOARD}/lives/saleSession`, - panier: (id: string) => `${ROOTS.DASHBOARD}/lives/saleSession/${id}/panier` + panier: (id: string, name: string) => `${ROOTS.DASHBOARD}/lives/saleSession/${id}/panier?name=${name}` }, order: { root: `${ROOTS.DASHBOARD}/project_management/tasks`, diff --git a/src/shared/sections/cart/Cart-createView.tsx b/src/shared/sections/cart/Cart-createView.tsx index 3a697863773b605372f38f1e9de5fa924f7ef401..7b11f32982f330f7be521c8937563de9ce75bfbb 100644 --- a/src/shared/sections/cart/Cart-createView.tsx +++ b/src/shared/sections/cart/Cart-createView.tsx @@ -38,6 +38,8 @@ import { useAddProductToCartFromLive,useAddProductToUnregisteredCartFromLive} fr import { useSnackbar } from "@/components/snackbar"; import { IVariation } from "@/shared/types/invoice"; import { fetchAllSaleOrders } from "@/shared/api/saleOrder"; +import { useSearchParams } from 'next/navigation'; + @@ -62,6 +64,9 @@ const convertUTCToLocalTime = (utcDate: string) => { export default function LiveCard({ liveId }: Props) { + const searchParams = useSearchParams(); + const name = searchParams.get("name"); + const { enqueueSnackbar } = useSnackbar(); const [snackbarMessage, setSnackbarMessage] = useState<string | null>(null); const { SaleSessionData, SaleSessionLoading, SaleSessionMutate } = @@ -77,14 +82,16 @@ export default function LiveCard({ liveId }: Props) { const [openSnackbar, setOpenSnackbar] = useState(false); // Pour ouvrir/fermer le Snackbar const [snackbarSeverity, setSnackbarSeverity] = useState<"success" | "error">("success"); // Définir le type de Snackbar const [useWebStockForLive, setUseWebStockForLive] = useState<null | boolean>(null); - const [selectedClientId, setSelectedClientId] = useState<any>(null); + const [showWebStockDialog, setShowWebStockDialog] = useState(false); + const [selectedProductId, setSelectedProductId] = useState<any>(null); const [selectedQuantity, setSelectedQuantity] = useState<any>(0); const [selectedProductType, setSelectedProductType] = useState<ProductType | null>(null); - const [isRegistered, setIsRegistered] = useState(false); - const [showWebStockDialog, setShowWebStockDialog] = useState(false); const [selectedProductName, setSelectedProductName] = useState<string>(''); + + const [selectedClientId, setSelectedClientId] = useState<any>(null); const [selectedClientEmail, setSelectedClientEmail] = useState<string>(''); + const [isRegistered, setIsRegistered] = useState(false); @@ -319,20 +326,12 @@ export default function LiveCard({ liveId }: Props) { }; const handleAddToCart = async (clientId: string,isRegisteredFlag: boolean,clientEmail:string) => { - - if ( !selectedProductId ||selectedQuantity=== 0) { - setSnackbarMessage("Veuillez sélectionner un produit et une quantité."); - setSnackbarSeverity("error"); - setOpenSnackbar(true); - return; - } - setSelectedClientId(clientId); setIsRegistered( isRegisteredFlag); - setSelectedClientEmail(clientEmail) - - if ( !clientId ) { - setSnackbarMessage("Veuillez sélectionner un client"); + setSelectedClientEmail(clientEmail); + + if ( !selectedProductId ||selectedQuantity=== 0) { + setSnackbarMessage("Veuillez sélectionner un produit et une quantité."); setSnackbarSeverity("error"); setOpenSnackbar(true); return; @@ -350,12 +349,11 @@ export default function LiveCard({ liveId }: Props) { if (liveStockQuantity <= 0 || selectedQuantity > liveStockQuantity) { if (webStockQuantity >= selectedQuantity) { - localStorage.setItem("isRegistered", JSON.stringify(isRegistered)); setShowWebStockDialog(true); return; } } - await addToCart(false, isRegistered,clientId,clientEmail); + await addToCart(false,isRegisteredFlag,clientId,clientEmail); }; @@ -371,6 +369,7 @@ export default function LiveCard({ liveId }: Props) { enqueueSnackbar(`${selectedProductName} en cours d'ajout pour ${clientEmail}`, { variant: "info" }); try { + if (isRegistered) { await addProductToCartFromLive(sessionRequest); } else { @@ -378,8 +377,9 @@ export default function LiveCard({ liveId }: Props) { } const product = getSelectedProduct(); - + if (product) { + if (useWebStockForLiveOverride) { product.stockWebConfig.quantity -= selectedQuantity; } else { @@ -395,14 +395,14 @@ export default function LiveCard({ liveId }: Props) { }), } : null); } - enqueueSnackbar(`${selectedProductName} avec succès pour ${clientEmail}`, { variant: "success" }); - + enqueueSnackbar(`${selectedProductName} ajouté avec succès pour ${clientEmail}`, { variant: "success" }); + } catch (error: any) { - let errorMessage = "Échec de l'ajout au panier"; + let errorMessage = `Échec de l'ajout de ${selectedProductName} au panier`; if (typeof error === 'string' && error.includes("Product is out of stock")) { - errorMessage = "Le produit est en rupture de stock"; + errorMessage = `${selectedProductName} est en rupture de stock`; }else if (typeof error === 'string' && error.includes("Sale session has expired for session id")) { errorMessage = "La session de vente a expiré"; } @@ -424,7 +424,7 @@ export default function LiveCard({ liveId }: Props) { return ( <div> <CustomBreadcrumbs - heading={`Panier du live : ${liveId}`} + heading={`Panier du live : ${name ? name : "No Name"}`} links={[ { name: "dashboard", diff --git a/src/shared/sections/home/Live_manger/statistics/LiveSession-table-row.tsx b/src/shared/sections/home/Live_manger/statistics/LiveSession-table-row.tsx index 01c93ca48be666de94f0f21649efe58d9bbb930c..2ffeeb542dbc2b675fce551b9451faa2e22b5321 100644 --- a/src/shared/sections/home/Live_manger/statistics/LiveSession-table-row.tsx +++ b/src/shared/sections/home/Live_manger/statistics/LiveSession-table-row.tsx @@ -58,7 +58,7 @@ export default function SalesSessionTableRow({ const router = useRouter(); const handlePanier = useCallback(() => { - router.push(paths.dashboard.admin.live.panier(id)); + router.push(paths.dashboard.admin.live.panier(id,row.title)); }, [router, id]); return ( diff --git a/src/shared/sections/lives/live-SaleSession/All-SalesSessionView.tsx b/src/shared/sections/lives/live-SaleSession/All-SalesSessionView.tsx index 5a32f3232a3b2c2529f5a1230172abb343c4fe90..9a372d496bc221b4c756ab3e50b65503548a53ca 100644 --- a/src/shared/sections/lives/live-SaleSession/All-SalesSessionView.tsx +++ b/src/shared/sections/lives/live-SaleSession/All-SalesSessionView.tsx @@ -66,7 +66,7 @@ import { useGetLives } from '@/shared/api/live'; // ---------------------------------------------------------------------- -const Type_OPTIONS = [{ value: "all", label: "All" }, ...LiveTyple]; +const Type_OPTIONS = [{ value: "all", label: "Tous" }, ...LiveTyple]; const TABLE_HEAD = [ { id: "id", label: "id", width: 60 }, @@ -214,7 +214,6 @@ export default function AllSalesSessionView() { }; const handleAddSaleSession = async () => { try { - console.log("sale session to add : ",formData); await addSaleSession(formData); enqueueSnackbar("Session de vente ajoutée avec succès", { variant: "success" }); handleCloseAddDialog(); @@ -224,6 +223,9 @@ export default function AllSalesSessionView() { }; useEffect(() => { if (sessions && sessions.length > 0) { + const sortedSessions = [...sessions].sort((a, b) => + new Date(b.startedDate).getTime() - new Date(a.startedDate).getTime() + ); setTableData(sessions); } }, [sessions]); @@ -710,5 +712,7 @@ function applyFilter({ inputData = inputData.filter((user) => user.type === type); } - return inputData; + return inputData.sort((a, b) => + new Date(b.startedDate).getTime() - new Date(a.startedDate).getTime() + ); } diff --git a/src/shared/sections/lives/live-SaleSession/SalesSession-table-row.tsx b/src/shared/sections/lives/live-SaleSession/SalesSession-table-row.tsx index 170793dce7e1e958a21598c75eb567e8b8f700de..e9b6c69c942e180cde178f2ea9438865d6a859c8 100644 --- a/src/shared/sections/lives/live-SaleSession/SalesSession-table-row.tsx +++ b/src/shared/sections/lives/live-SaleSession/SalesSession-table-row.tsx @@ -57,8 +57,9 @@ export default function SalesSessionTableRow({ const router = useRouter(); const handelPanier = useCallback(() => { - router.push(paths.dashboard.admin.live.panier(id)); - }, [router, id]); + const nameUrl = name.replace(/ /g, '+'); + router.push(paths.dashboard.admin.live.panier(id,nameUrl)); + }, [router, id,name]); const getTypeLabel = (value: string) => { const typeOption = LiveTyple.find((option) => option.value === value);