From 515c44fcf787a7b175c6abe0f30158011d98e93f Mon Sep 17 00:00:00 2001 From: ola Date: Tue, 24 Oct 2023 07:07:03 +0800 Subject: [PATCH 1/3] checkout and fix --- .../repositories/order.repository.ts | 4 +- .../middlewares/context.middleware.ts | 6 +-- frontend/src/apis/menusApi.tsx | 2 +- frontend/src/apis/orderApi.ts | 47 +++++++++++++++++++ frontend/src/contexts/shoppingCartContext.tsx | 1 + frontend/src/models/order.model.ts | 21 +++++++++ 6 files changed, 75 insertions(+), 6 deletions(-) create mode 100644 frontend/src/apis/orderApi.ts create mode 100644 frontend/src/models/order.model.ts diff --git a/backend/src/infrastructure/data_access/repositories/order.repository.ts b/backend/src/infrastructure/data_access/repositories/order.repository.ts index 64ca93ee..34f52c56 100644 --- a/backend/src/infrastructure/data_access/repositories/order.repository.ts +++ b/backend/src/infrastructure/data_access/repositories/order.repository.ts @@ -1,11 +1,11 @@ import { Injectable } from '@nestjs/common'; import { InjectConnection, InjectModel } from '@nestjs/mongoose'; -import { Connection, Model, Types } from 'mongoose'; +import { Connection, Model } from 'mongoose'; import { GenericDocumentRepository } from 'src/infrastructure/database'; import { Order } from 'src/order/order'; import { OrderMapper } from './../../../order/order.mapper'; -import { OrderDataModel, OrderDocument } from './schemas/order.schema'; import { IOrderRepository } from './interfaces/order-repository.interface'; +import { OrderDataModel, OrderDocument } from './schemas/order.schema'; @Injectable() export class OrderRepository extends GenericDocumentRepository implements IOrderRepository { diff --git a/backend/src/infrastructure/middlewares/context.middleware.ts b/backend/src/infrastructure/middlewares/context.middleware.ts index 34ff54e8..f9abcf52 100644 --- a/backend/src/infrastructure/middlewares/context.middleware.ts +++ b/backend/src/infrastructure/middlewares/context.middleware.ts @@ -18,9 +18,9 @@ export class ContextMiddleWare implements NestMiddleware { use(req: Request, res: Response, next: NextFunction) { const headers = req.headers; const errors = new Object() as any; - if (!Object.hasOwn(headers, APIResponseMessage.emailHeader)) { - errors.email = APIResponseMessage.emailHeaderError; - } + // if (!Object.hasOwn(headers, APIResponseMessage.emailHeader)) { + // errors.email = APIResponseMessage.emailHeaderError; + // } if (!Object.hasOwn(headers, APIResponseMessage.correlationIdHeader)) { errors.correlationId = APIResponseMessage.correlationIdHeaderError; } diff --git a/frontend/src/apis/menusApi.tsx b/frontend/src/apis/menusApi.tsx index 4036e200..7549116c 100644 --- a/frontend/src/apis/menusApi.tsx +++ b/frontend/src/apis/menusApi.tsx @@ -1,4 +1,4 @@ -import { IMenu, IMenus } from "../models/menu.model"; +import { IMenu } from "../models/menu.model"; import { ICreateMenu } from "../interfaces/menu.interface"; import { QueryObserverResult, useQuery } from "react-query"; import { menuApi } from "./axios"; diff --git a/frontend/src/apis/orderApi.ts b/frontend/src/apis/orderApi.ts new file mode 100644 index 00000000..c913ed2c --- /dev/null +++ b/frontend/src/apis/orderApi.ts @@ -0,0 +1,47 @@ +import { SelectedItem } from "./../reducers/cartReducer"; +import { useShoppingCart } from "../hooks/UseShoppingCart"; + +export const createOrder = async (order: any) => {}; + +const getOrderSummary = () => { + const { GetOrderSummary } = useShoppingCart(); + return GetOrderSummary(); +}; + +const reduceSelectedItems = () => { + const orderSummary = getOrderSummary(); + let selectedItems: SelectedItem[] = []; + if (orderSummary?.length) { + selectedItems = orderSummary.reduce((result: SelectedItem[], item) => { + if (item.menus?.length) { + item.menus.forEach((menu) => { + if (menu.selectedItems) { + menu.selectedItems.forEach((selectedItem) => { + const itemId = selectedItem.id; + const existingItem = result.find((item: any) => item.id === itemId); + if (existingItem) { + existingItem.price += selectedItem.price; + existingItem.quantity! += selectedItem.quantity!; + } else { + result.push({ ...selectedItem }); + } + }); + } + }); + } + return result; + }, []); + } + return selectedItems; +}; + +const getCartItems = () => { + const orderSummary = getOrderSummary(); + if (orderSummary?.length) { + const selectedItemsMap = new Map(); + reduceSelectedItems.forEach((item) => {}); + orderSummary.map((summary) => { + const cartItem = summary.menus; + }); + } +}; diff --git a/frontend/src/contexts/shoppingCartContext.tsx b/frontend/src/contexts/shoppingCartContext.tsx index 263f4c86..a8ac2697 100644 --- a/frontend/src/contexts/shoppingCartContext.tsx +++ b/frontend/src/contexts/shoppingCartContext.tsx @@ -399,6 +399,7 @@ export const ShoppingCartProvider = ({ children }: shoppingCartProviderProps) => const updateCartItems = (orderSummary: OrderSummary[]) => { state.orderSummary = orderSummary; + console.log(state.orderSummary); setLocalStorageData("cart", JSON.stringify(state), true); dispatch({ type: CartActionsType.UPDATE_CART_ITEMS, diff --git a/frontend/src/models/order.model.ts b/frontend/src/models/order.model.ts new file mode 100644 index 00000000..6054b762 --- /dev/null +++ b/frontend/src/models/order.model.ts @@ -0,0 +1,21 @@ +interface IOrder { + state: string; + type: string; + merchantId: string; + total: number; + cartItems: IcartItems[]; +} + +interface IcartItems { + menuId: string; + total: number; + quantity: number; + selectedItems: IselectedItems[]; +} + +interface IselectedItems { + itemId: string; + menuId: string; + price: number; + quantity: number; +} From 29d3a42059f40404ce540780f4b321e07796955d Mon Sep 17 00:00:00 2001 From: Olasunkanmi Oyinlola <143487325+olasunkanmiraymond@users.noreply.github.com> Date: Tue, 24 Oct 2023 10:33:41 +0800 Subject: [PATCH 2/3] fix errors and remove env from application (#392) Co-authored-by: Olasunkanmi Oyinlola --- backend/.gitignore | 4 +++- .../middlewares/context.middleware.ts | 2 +- frontend/src/apis/orderApi.ts | 24 ++++++++++--------- 3 files changed, 17 insertions(+), 13 deletions(-) diff --git a/backend/.gitignore b/backend/.gitignore index 7ce7d985..6021dc60 100644 --- a/backend/.gitignore +++ b/backend/.gitignore @@ -33,4 +33,6 @@ lerna-debug.log* !.vscode/tasks.json !.vscode/launch.json !.vscode/extensions.json -.vscode/launch.json \ No newline at end of file +.vscode/launch.json + +.env \ No newline at end of file diff --git a/backend/src/infrastructure/middlewares/context.middleware.ts b/backend/src/infrastructure/middlewares/context.middleware.ts index f9abcf52..63251c08 100644 --- a/backend/src/infrastructure/middlewares/context.middleware.ts +++ b/backend/src/infrastructure/middlewares/context.middleware.ts @@ -21,7 +21,7 @@ export class ContextMiddleWare implements NestMiddleware { // if (!Object.hasOwn(headers, APIResponseMessage.emailHeader)) { // errors.email = APIResponseMessage.emailHeaderError; // } - if (!Object.hasOwn(headers, APIResponseMessage.correlationIdHeader)) { + if (!Object.hasOwnProperty.call(headers, APIResponseMessage.correlationIdHeader)) { errors.correlationId = APIResponseMessage.correlationIdHeaderError; } for (const [key, value] of Object.entries(headers)) { diff --git a/frontend/src/apis/orderApi.ts b/frontend/src/apis/orderApi.ts index c913ed2c..be372538 100644 --- a/frontend/src/apis/orderApi.ts +++ b/frontend/src/apis/orderApi.ts @@ -18,7 +18,9 @@ const reduceSelectedItems = () => { if (menu.selectedItems) { menu.selectedItems.forEach((selectedItem) => { const itemId = selectedItem.id; - const existingItem = result.find((item: any) => item.id === itemId); + const existingItem = result.find( + (item: any) => item.id === itemId + ); if (existingItem) { existingItem.price += selectedItem.price; existingItem.quantity! += selectedItem.quantity!; @@ -35,13 +37,13 @@ const reduceSelectedItems = () => { return selectedItems; }; -const getCartItems = () => { - const orderSummary = getOrderSummary(); - if (orderSummary?.length) { - const selectedItemsMap = new Map(); - reduceSelectedItems.forEach((item) => {}); - orderSummary.map((summary) => { - const cartItem = summary.menus; - }); - } -}; +// const getCartItems = () => { +// const orderSummary = getOrderSummary(); +// if (orderSummary?.length) { +// const selectedItemsMap = new Map(); +// reduceSelectedItems.forEach((item) => {}); +// orderSummary.map((summary) => { +// const cartItem = summary.menus; +// }); +// } +// }; From 46133f2c22d2bebb9fa7c17391ccc695c2a16082 Mon Sep 17 00:00:00 2001 From: Olasunkanmi Oyinlola <143487325+olasunkanmiraymond@users.noreply.github.com> Date: Tue, 24 Oct 2023 10:49:06 +0800 Subject: [PATCH 3/3] Offshore dev (#394) * fix errors and remove env from application * fix build errors --------- Co-authored-by: Olasunkanmi Oyinlola --- frontend/src/models/order.model.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/frontend/src/models/order.model.ts b/frontend/src/models/order.model.ts index 6054b762..ae40de81 100644 --- a/frontend/src/models/order.model.ts +++ b/frontend/src/models/order.model.ts @@ -1,4 +1,4 @@ -interface IOrder { +export interface IOrder { state: string; type: string; merchantId: string; @@ -6,14 +6,14 @@ interface IOrder { cartItems: IcartItems[]; } -interface IcartItems { +export interface IcartItems { menuId: string; total: number; quantity: number; selectedItems: IselectedItems[]; } -interface IselectedItems { +export interface IselectedItems { itemId: string; menuId: string; price: number;