From 0744541d7d98b5b9edbeac3de098c60be0b82975 Mon Sep 17 00:00:00 2001 From: an2508374 Date: Thu, 25 Jan 2024 00:28:18 +0100 Subject: [PATCH] #122: add offer requests page and update orders page for user --- .../src/SwiftParcel.API.Gateway/ntrada.yml | 6 ++-- SwiftParcel.Web/frontend/src/App.tsx | 13 ++++++-- .../frontend/src/components/details/order.tsx | 4 ++- .../frontend/src/components/header.tsx | 1 + .../modals/offers/userDetailsModal.tsx | 6 ++-- .../modals/orders/filterOrdersModal.tsx | 3 +- .../modals/orders/orderDetailsModal.tsx | 3 +- .../src/pages/orders/offerRequestsUser.tsx | 5 ++++ .../frontend/src/pages/orders/orders.tsx | 30 ++++++++++++------- .../frontend/src/pages/orders/ordersUser.tsx | 5 ++++ SwiftParcel.Web/frontend/src/utils/api.tsx | 10 +++++++ 11 files changed, 65 insertions(+), 21 deletions(-) create mode 100644 SwiftParcel.Web/frontend/src/pages/orders/offerRequestsUser.tsx create mode 100644 SwiftParcel.Web/frontend/src/pages/orders/ordersUser.tsx diff --git a/SwiftParcel.API.Gateway/src/SwiftParcel.API.Gateway/ntrada.yml b/SwiftParcel.API.Gateway/src/SwiftParcel.API.Gateway/ntrada.yml index 73a696a..c17470b 100644 --- a/SwiftParcel.API.Gateway/src/SwiftParcel.API.Gateway/ntrada.yml +++ b/SwiftParcel.API.Gateway/src/SwiftParcel.API.Gateway/ntrada.yml @@ -124,11 +124,13 @@ modules: bind: - customerId:{customerId} - - upstream: /requests + - upstream: /requests/customerId={customerId} method: GET use: downstream - downstream: orders-service/orders/requests + downstream: orders-service/orders/requests?customerId={customerId} auth: true + bind: + - customerId:{customerId} - upstream: /office-worker method: GET diff --git a/SwiftParcel.Web/frontend/src/App.tsx b/SwiftParcel.Web/frontend/src/App.tsx index c8864a9..84b2841 100644 --- a/SwiftParcel.Web/frontend/src/App.tsx +++ b/SwiftParcel.Web/frontend/src/App.tsx @@ -15,9 +15,10 @@ import Inquiries from "./pages/inquiries/inquiries"; import Offers from "./pages/offers/offersUser"; import OfferRequests from "./pages/offers/offerRequests"; import PendingOffers from "./pages/offers/pendingOffers"; -import Orders from "./pages/orders/orders"; import YourDeliveries from "./pages/deliveries/yourDeliveries"; import PendingDeliveries from "./pages/deliveries/pendingDeliveries"; +import OrdersUser from "./pages/orders/ordersUser"; +import OfferRequestsUser from "./pages/orders/offerRequestsUser"; export function App() { @@ -71,7 +72,15 @@ export function App() { path="/orders" element={ - + + + } + /> + + } /> diff --git a/SwiftParcel.Web/frontend/src/components/details/order.tsx b/SwiftParcel.Web/frontend/src/components/details/order.tsx index ca35b32..6574ebd 100644 --- a/SwiftParcel.Web/frontend/src/components/details/order.tsx +++ b/SwiftParcel.Web/frontend/src/components/details/order.tsx @@ -7,6 +7,7 @@ import formatOfferStatus from "../parsing/formatOfferStatus"; interface OrderDetailsProps { orderData: any; + pageContent: string; } export function isPackageValid(validTo : string) { @@ -16,7 +17,7 @@ export function isPackageValid(validTo : string) { }; export function OrderDetails({ - orderData + orderData, pageContent }: OrderDetailsProps) { const [order, setOrder] = React.useState(orderData); @@ -91,6 +92,7 @@ export function OrderDetails({ show={showOrderDetailsModal} setShow={setShowOrderDetailsModal} order={order} + pageContent={pageContent} /> ); diff --git a/SwiftParcel.Web/frontend/src/components/header.tsx b/SwiftParcel.Web/frontend/src/components/header.tsx index 218d5f1..26cfdf6 100644 --- a/SwiftParcel.Web/frontend/src/components/header.tsx +++ b/SwiftParcel.Web/frontend/src/components/header.tsx @@ -105,6 +105,7 @@ export function Header(props: { + ); diff --git a/SwiftParcel.Web/frontend/src/components/modals/offers/userDetailsModal.tsx b/SwiftParcel.Web/frontend/src/components/modals/offers/userDetailsModal.tsx index cb44554..886d73f 100644 --- a/SwiftParcel.Web/frontend/src/components/modals/offers/userDetailsModal.tsx +++ b/SwiftParcel.Web/frontend/src/components/modals/offers/userDetailsModal.tsx @@ -307,9 +307,9 @@ import { navigate("/", {state:{parcelId: null}}); }; - const redirectToOrders = () => { + const redirectToOfferRequests = () => { close(); - navigate("/orders", {state:{parcelId: null}}); + navigate("/offer-requests-user", {state:{parcelId: null}}); }; return ( @@ -426,7 +426,7 @@ import { :
- +
} diff --git a/SwiftParcel.Web/frontend/src/components/modals/orders/filterOrdersModal.tsx b/SwiftParcel.Web/frontend/src/components/modals/orders/filterOrdersModal.tsx index 80a7a1f..40680bc 100644 --- a/SwiftParcel.Web/frontend/src/components/modals/orders/filterOrdersModal.tsx +++ b/SwiftParcel.Web/frontend/src/components/modals/orders/filterOrdersModal.tsx @@ -16,6 +16,7 @@ import { inputData: any; tableData: any; setTableData: any; + pageContent: string; } type FilteringDetails = { @@ -468,7 +469,7 @@ import {

- Filter orders by attributes: + Filter {props.pageContent == "orders" ? 'orders' : 'offer requests'} by attributes:

{error ? ( diff --git a/SwiftParcel.Web/frontend/src/components/modals/orders/orderDetailsModal.tsx b/SwiftParcel.Web/frontend/src/components/modals/orders/orderDetailsModal.tsx index 632d2ab..5ea5ab0 100644 --- a/SwiftParcel.Web/frontend/src/components/modals/orders/orderDetailsModal.tsx +++ b/SwiftParcel.Web/frontend/src/components/modals/orders/orderDetailsModal.tsx @@ -13,6 +13,7 @@ import { confirmOrder, cancelOrder } from "../../../utils/api"; show: boolean; setShow: (show: boolean) => void; order: any; + pageContent: string; } const formatDate = (date: string) => { @@ -252,7 +253,7 @@ import { confirmOrder, cancelOrder } from "../../../utils/api";

- Details of your order: + Details of your {props.pageContent == "orders" ? 'order' : 'offer request'}:

diff --git a/SwiftParcel.Web/frontend/src/pages/orders/offerRequestsUser.tsx b/SwiftParcel.Web/frontend/src/pages/orders/offerRequestsUser.tsx new file mode 100644 index 0000000..f981473 --- /dev/null +++ b/SwiftParcel.Web/frontend/src/pages/orders/offerRequestsUser.tsx @@ -0,0 +1,5 @@ +import Orders from "./orders"; + +export default function OfferRequestsUser() { + return Orders("offer-requests"); +} \ No newline at end of file diff --git a/SwiftParcel.Web/frontend/src/pages/orders/orders.tsx b/SwiftParcel.Web/frontend/src/pages/orders/orders.tsx index bdb8d11..7e6ae59 100644 --- a/SwiftParcel.Web/frontend/src/pages/orders/orders.tsx +++ b/SwiftParcel.Web/frontend/src/pages/orders/orders.tsx @@ -2,14 +2,14 @@ import { Table, Pagination, Button } from "flowbite-react"; import React from "react"; import { Header } from "../../components/header"; import { Footer } from "../../components/footer"; -import { getOrdersUser } from "../../utils/api"; +import { getOrdersUser, getOfferRequestsUser } from "../../utils/api"; import { Loader } from "../../components/loader"; import { OrderDetails } from "../../components/details/order"; import { FilterOrdersModal } from "../../components/modals/orders/filterOrdersModal"; import { getUserIdFromStorage } from "../../utils/storage"; import { AddOrderByIdModal } from "../../components/modals/orders/addOrderByIdModal"; -export default function Orders() { +export default function Orders(pageContent: string) { const [page, setPage] = React.useState(1); const [inputData, setInputData] = React.useState(null); const [tableData, setTableData] = React.useState(null); @@ -25,7 +25,7 @@ export default function Orders() { React.useEffect(() => { - getOrdersUser(getUserIdFromStorage()) + ((pageContent == "orders") ? getOrdersUser(getUserIdFromStorage()) : getOfferRequestsUser(getUserIdFromStorage())) .then((res) => { if (res.status === 200) { setInputData(res?.data); @@ -164,7 +164,7 @@ export default function Orders() {

- Your orders + {pageContent == "orders" ? 'Your orders' : 'Your offer requests'}

-

- To see details of an order or check its full status, click button in the last column of the table. -

+ { pageContent == "orders" ? +

+ To see details of an order or check its full status, click button in the last column of the table. +

+ : +

+ To see details of an offer request or check its full status, click button in the last column of the table. +

+ } @@ -222,14 +229,15 @@ export default function Orders() { )) ) : ( - - + + )}
- No orders found -
+ No {pageContent == "orders" ? 'orders' : 'offer requests'} found +
diff --git a/SwiftParcel.Web/frontend/src/pages/orders/ordersUser.tsx b/SwiftParcel.Web/frontend/src/pages/orders/ordersUser.tsx new file mode 100644 index 0000000..f8bcfd9 --- /dev/null +++ b/SwiftParcel.Web/frontend/src/pages/orders/ordersUser.tsx @@ -0,0 +1,5 @@ +import Orders from "./orders"; + +export default function OrdersUser() { + return Orders("orders"); +} \ No newline at end of file diff --git a/SwiftParcel.Web/frontend/src/utils/api.tsx b/SwiftParcel.Web/frontend/src/utils/api.tsx index 437312d..55bd3b3 100644 --- a/SwiftParcel.Web/frontend/src/utils/api.tsx +++ b/SwiftParcel.Web/frontend/src/utils/api.tsx @@ -420,6 +420,16 @@ export const getOrdersUser = async (customerId: string) => { } }; +export const getOfferRequestsUser = async (customerId: string) => { + try { + const response = await api.get(`/orders/requests/customerId=${customerId}`, { headers: getAuthHeader() }); + return response; + } catch (error) { + console.error('Error during getting offer requests:', error); + throw error; + } +}; + export const getOffers = async (parcelId: string) => { try { const response = await api.get(`/parcels/${parcelId}/offers`, { headers: getAuthHeader() });