@@ -14,6 +14,7 @@ function App() {
1414 const [ categories , setCategories ] = useState ( [ ] )
1515 const [ cart , setCart ] = useState ( [ ] )
1616 const [ orders , setOrders ] = useState ( [ ] )
17+ const [ detailedOrders , setDetailedOrders ] = useState ( [ ] )
1718 const [ user , setUser ] = useState ( null )
1819 const [ token , setToken ] = useState ( localStorage . getItem ( 'token' ) )
1920 const [ quantities , setQuantities ] = useState ( { } ) // Track quantities for each product
@@ -88,12 +89,14 @@ function App() {
8889 setUser ( userResponse . data )
8990
9091 // Then load cart and orders using the actual user ID
91- const [ cartResponse , ordersResponse ] = await Promise . all ( [
92+ const [ cartResponse , ordersResponse , detailedOrdersResponse ] = await Promise . all ( [
9293 axios . get ( `${ API_CONFIG . ORDER_SERVICE } /users/${ userResponse . data . id } /cart` , { headers } ) ,
93- axios . get ( `${ API_CONFIG . ORDER_SERVICE } /users/${ userResponse . data . id } /orders` , { headers } )
94+ axios . get ( `${ API_CONFIG . ORDER_SERVICE } /users/${ userResponse . data . id } /orders` , { headers } ) ,
95+ axios . get ( `${ API_CONFIG . ORDER_SERVICE } /users/${ userResponse . data . id } /orders/detailed` , { headers } )
9496 ] )
9597 setCart ( cartResponse . data )
9698 setOrders ( ordersResponse . data )
99+ setDetailedOrders ( detailedOrdersResponse . data )
97100 } catch ( error ) {
98101 // If token is invalid, clear it and user state
99102 if ( error . response && ( error . response . status === 401 || error . response . status === 403 ) ) {
@@ -105,6 +108,7 @@ function App() {
105108 setUser ( null )
106109 setCart ( [ ] )
107110 setOrders ( [ ] )
111+ setDetailedOrders ( [ ] )
108112 localStorage . removeItem ( 'token' )
109113 alert ( 'Session expired. Please log in again.' )
110114 } else {
@@ -172,12 +176,14 @@ function App() {
172176 const userResponse = await axios . get ( `${ API_CONFIG . ORDER_SERVICE } /users/me` , { headers } )
173177 setUser ( userResponse . data )
174178
175- const [ cartResponse , ordersResponse ] = await Promise . all ( [
179+ const [ cartResponse , ordersResponse , detailedOrdersResponse ] = await Promise . all ( [
176180 axios . get ( `${ API_CONFIG . ORDER_SERVICE } /users/${ userResponse . data . id } /cart` , { headers } ) ,
177- axios . get ( `${ API_CONFIG . ORDER_SERVICE } /users/${ userResponse . data . id } /orders` , { headers } )
181+ axios . get ( `${ API_CONFIG . ORDER_SERVICE } /users/${ userResponse . data . id } /orders` , { headers } ) ,
182+ axios . get ( `${ API_CONFIG . ORDER_SERVICE } /users/${ userResponse . data . id } /orders/detailed` , { headers } )
178183 ] )
179184 setCart ( cartResponse . data )
180185 setOrders ( ordersResponse . data )
186+ setDetailedOrders ( detailedOrdersResponse . data )
181187
182188 // Record login metrics
183189 await metrics . recordUserAction ( 'login' , userResponse . data . email , activeTab , 'success' )
@@ -205,6 +211,7 @@ function App() {
205211 setUser ( null )
206212 setCart ( [ ] )
207213 setOrders ( [ ] )
214+ setDetailedOrders ( [ ] )
208215 localStorage . removeItem ( 'token' )
209216 alert ( 'Logged out successfully!' )
210217 }
@@ -473,13 +480,40 @@ function App() {
473480
474481 < div className = "card" >
475482 < h2 > Order History</ h2 >
476- { orders . length === 0 ? (
483+ { detailedOrders . length === 0 ? (
477484 < p > No orders yet</ p >
478485 ) : (
479- < div >
480- { orders . map ( order => (
481- < div key = { order . id } style = { { padding : '10px' , border : '1px solid #ddd' , margin : '5px 0' } } >
482- Order #{ order . id } | Total: ${ order . total_amount } | Status: { order . status }
486+ < div className = "orders-list" >
487+ { detailedOrders . map ( order => (
488+ < div key = { order . id } className = "order-item" >
489+ < div className = "order-header" >
490+ < h3 > Order #{ order . id } </ h3 >
491+ < div className = "order-meta" >
492+ < span className = "order-total" > Total: ${ order . total_amount } </ span >
493+ < span className = "order-status" > Status: { order . status } </ span >
494+ < span className = "order-date" >
495+ Date: { new Date ( order . created_at ) . toLocaleDateString ( ) }
496+ </ span >
497+ </ div >
498+ </ div >
499+ < div className = "order-products" >
500+ < h4 > Products:</ h4 >
501+ { order . items . map ( item => (
502+ < div key = { item . id } className = "order-product-item" >
503+ < div className = "product-info" >
504+ < strong > { item . product_name } </ strong >
505+ < p className = "product-description" > { item . product_description } </ p >
506+ </ div >
507+ < div className = "product-details" >
508+ < span className = "quantity" > Qty: { item . quantity } </ span >
509+ < span className = "unit-price" > Unit Price: ${ item . unit_price } </ span >
510+ < span className = "total-price" >
511+ Total: ${ ( item . quantity * parseFloat ( item . unit_price ) ) . toFixed ( 2 ) }
512+ </ span >
513+ </ div >
514+ </ div >
515+ ) ) }
516+ </ div >
483517 </ div >
484518 ) ) }
485519 </ div >
@@ -628,6 +662,7 @@ function App() {
628662 localStorage . removeItem ( 'token' )
629663 setCart ( [ ] )
630664 setOrders ( [ ] )
665+ setDetailedOrders ( [ ] )
631666 } }
632667 >
633668 Logout
0 commit comments