diff --git a/backend/controllers/orderController.js b/backend/controllers/orderController.js index 5b64a2b..26e4bda 100644 --- a/backend/controllers/orderController.js +++ b/backend/controllers/orderController.js @@ -86,7 +86,7 @@ const updateOrderToPaid = asyncHandler(async(req, res)=>{ "country":order.shippingAddress.country, "pin_code":order.shippingAddress.postalCode, "phone_no":order.phone, - "sub_total":order.orderItems.reduce((sum, item) => sum + Number(item.price), 0), + "sub_total":order.orderItems.reduce((sum, item) => sum + (Number(item.price)*Number(item.qty)), 0), "shipping":order.shippingPrice, "tax":order.taxPrice, "total_price":order.totalPrice, diff --git a/frontend/src/actions/productActions.js b/frontend/src/actions/productActions.js index 8f062c1..7d4a31e 100644 --- a/frontend/src/actions/productActions.js +++ b/frontend/src/actions/productActions.js @@ -24,6 +24,9 @@ import { PRODUCT_CATEGORY_REQUEST, PRODUCT_CATEGORY_SUCCESS, PRODUCT_CATEGORY_FAIL, + PRODUCT_SORT_REQUEST, + PRODUCT_SORT_SUCCESS, + PRODUCT_SORT_FAIL } from '../constants/productConstants.js' @@ -87,6 +90,67 @@ export const listProductCategory = (category, pageNumber='')=> async (dispatch)= } } +export const sortProducts = (sortBy, pageNumber='',category)=> async (dispatch)=>{ + try{ + + const {data} = await axios.get(`/api/products/header/${category}?pageNumber=${pageNumber}`) + dispatch({type: PRODUCT_SORT_REQUEST}) + if(sortBy === 'Price: Low to High'){ + data.products.sort((a,b)=>{ + return a.price - b.price + }) + + dispatch({type: PRODUCT_SORT_SUCCESS}) + dispatch({type:PRODUCT_CATEGORY_SUCCESS, payload:data}) + + } + + else if(sortBy === 'Price: High to Low'){ + data.products.sort((a,b)=>{ + return b.price - a.price + }) + dispatch({type: PRODUCT_SORT_SUCCESS}) + dispatch({type:PRODUCT_CATEGORY_SUCCESS, payload:data}) + + } + else if (sortBy === 'Best Rating'){ + data.products.sort((a,b)=>{ + + return b.rating - a.rating + }) + dispatch({type: PRODUCT_SORT_SUCCESS}) + dispatch({type:PRODUCT_CATEGORY_SUCCESS, payload:data}) + + } + else if(sortBy === 'Newest'){ + data.products.sort((a,b)=>{ + + const bval=(b.createdAt.slice(0,10)).replace(new RegExp('-', 'g'),'' ); + const aval=(a.createdAt.slice(0,10)).replace(new RegExp('-', 'g'),'' ); + return Number(bval) - Number(aval) + }) + dispatch({type: PRODUCT_SORT_SUCCESS}) + dispatch({type:PRODUCT_CATEGORY_SUCCESS, payload:data}) + + } + else if(sortBy === 'Most Popular'){ + data.products.sort((a,b)=>{ + return b.reviews.length - a.reviews.length + }) + dispatch({type: PRODUCT_SORT_SUCCESS}) + dispatch({type:PRODUCT_CATEGORY_SUCCESS, payload:data}) + + } + } + catch(error){ + dispatch({ + type:PRODUCT_SORT_FAIL, + payload:error.response && error.response.data.message ? error.response.data.message:error.message + }) + + }} + + export const deleteProduct = (id)=> async(dispatch, getState )=>{ try{ dispatch({ @@ -157,7 +221,7 @@ export const updateProduct = (product)=> async(dispatch, getState )=>{ Authorization:`Bearer ${userInfo.token}` } } - console.log(product) + const {data} = await axios.put(`/api/products/${product._id}`,product,config) dispatch({ diff --git a/frontend/src/actions/userActions.js b/frontend/src/actions/userActions.js index 9e57cd9..fb975ee 100644 --- a/frontend/src/actions/userActions.js +++ b/frontend/src/actions/userActions.js @@ -118,7 +118,7 @@ export const getUserDetails = (id)=> async(dispatch, getState )=>{ } const {data} = await axios.get(`/api/users/${id}`, config) - console.log("GET USER DETAILS",data) + dispatch({ @@ -151,7 +151,7 @@ export const updateUserProfile = (user)=> async(dispatch, getState )=>{ } const {data} = await axios.put('/api/users/profile',user, config) - console.log(data) + dispatch({ @@ -191,7 +191,7 @@ export const listUsers = ()=> async(dispatch, getState )=>{ } const {data} = await axios.get('/api/users', config) - console.log(data) + dispatch({ diff --git a/frontend/src/components/Breadcrumbs.js b/frontend/src/components/Breadcrumbs.js index be7566d..81d986e 100644 --- a/frontend/src/components/Breadcrumbs.js +++ b/frontend/src/components/Breadcrumbs.js @@ -1,7 +1,6 @@ import React from 'react' const Breadcrumbs = (props) => { - console.log(props.bc1) return (