diff --git a/donutshop_ecommerce/src/app/orders/[id]/page.js b/donutshop_ecommerce/src/app/orders/[id]/page.js index a284c52..024cfa7 100644 --- a/donutshop_ecommerce/src/app/orders/[id]/page.js +++ b/donutshop_ecommerce/src/app/orders/[id]/page.js @@ -1,10 +1,14 @@ "use client" import Image from 'next/image' -import React, { useContext, useEffect } from 'react' -import { CartContext } from '../../../components/AppContext' +import React, { useContext, useEffect, useState } from 'react' +import { CartContext, productTotal } from '../../../components/AppContext' +import { useParams } from 'next/navigation' +import AddressInfo from '../../../components/layout/AddressInfo' const OrdersPage = () => { - const {clearCart} = useContext(CartContext); + const {clearCart, cartProducts} = useContext(CartContext); + const {id} = useParams(); + const [order, setOrder] = useState(); useEffect(() => { if(typeof window !== 'undefined'){ @@ -12,19 +16,81 @@ const OrdersPage = () => { clearCart(); } } + if(id){ + fetch('/api/orders?_id='+id).then(res => { + res.json().then(orderData => { + setOrder(orderData); + }) + }) + } }, []) + let subtotal = 0 + if(order?.cartProducts){ + for(const product of order?.cartProducts){ + subtotal += productTotal(product) + } + } + + return (
-
+
- checked + checked

Thank you

Your order is confirmed

-

We will be sending you an email confirmation to your email shortly

+
- product + {order && ( +
+
+

Order Summary

+ {order.cartProducts.map(product => ( +
+
+

{product.itemName}

+ {product.size && ( +
Size: {product.size.itemName}
+ )} + {product.extra?.length > 0 && ( +
Add: {product.extra.map(extras => ( + {extras.itemName} (+${extras.price}) + ))} +
+ )} +
+
+

${productTotal(product)}

+
+
+ ))} +
+
+
+

Subtotal:

+

${subtotal.toFixed(2)}

+
+
+

Delivery:

+

$4.99

+
+
+

Order total:

+

${(subtotal + 4.99).toFixed(2)}

+
+
+
+
+
+
+

Delivery Address

+ +
+
+
+ )}
) diff --git a/donutshop_ecommerce/src/components/layout/AddressInfo.js b/donutshop_ecommerce/src/components/layout/AddressInfo.js index 74eb039..b377497 100644 --- a/donutshop_ecommerce/src/components/layout/AddressInfo.js +++ b/donutshop_ecommerce/src/components/layout/AddressInfo.js @@ -1,35 +1,35 @@ import React from 'react' -const AddressInfo = ({addressProps, setAddressProps}) => { +const AddressInfo = ({addressProps, setAddressProps, disabled=false}) => { const {phoneNumber, streetAddress, city, stateProvince, zipCode, country} = addressProps; return ( <>
- setAddressProps('phoneNumber', ev.target.value)}/> + setAddressProps('phoneNumber', ev.target.value)} disabled={disabled} className=' disabled:bg-gray-100 disabled:text-gray-400'/>
- setAddressProps('streetAddress', ev.target.value)}/> + setAddressProps('streetAddress', ev.target.value)} disabled={disabled} className=' disabled:bg-gray-100 disabled:text-gray-400'/>
- setAddressProps('city', ev.target.value)}/> + setAddressProps('city', ev.target.value)} disabled={disabled} className=' disabled:bg-gray-100 disabled:text-gray-400'/>
- setAddressProps('stateProvince', ev.target.value)}/> + setAddressProps('stateProvince', ev.target.value)} disabled={disabled} className=' disabled:bg-gray-100 disabled:text-gray-400'/>
- setAddressProps('zipCode', ev.target.value)}/> + setAddressProps('zipCode', ev.target.value)} disabled={disabled} className=' disabled:bg-gray-100 disabled:text-gray-400'/>
- setAddressProps('country', ev.target.value)}/> + setAddressProps('country', ev.target.value)} disabled={disabled} className=' disabled:bg-gray-100 disabled:text-gray-400'/>
)