From 192eb9c9d9f647b7d65b650d8becd775f8aba0a4 Mon Sep 17 00:00:00 2001 From: an2508374 Date: Sat, 13 Jan 2024 23:24:05 +0100 Subject: [PATCH] #112: update sync with backend of confirm and cancel for user --- .../src/SwiftParcel.API.Gateway/ntrada.yml | 16 ++++ .../modals/orders/orderDetailsModal.tsx | 81 +++++++------------ .../src/pages/inquiries/createInquiry.tsx | 2 +- .../frontend/src/pages/offers/offersUser.tsx | 18 ++--- .../frontend/src/pages/register.tsx | 4 +- SwiftParcel.Web/frontend/src/utils/api.tsx | 67 +++++++++++++++ 6 files changed, 126 insertions(+), 62 deletions(-) diff --git a/SwiftParcel.API.Gateway/src/SwiftParcel.API.Gateway/ntrada.yml b/SwiftParcel.API.Gateway/src/SwiftParcel.API.Gateway/ntrada.yml index 8d85d74..d199723 100644 --- a/SwiftParcel.API.Gateway/src/SwiftParcel.API.Gateway/ntrada.yml +++ b/SwiftParcel.API.Gateway/src/SwiftParcel.API.Gateway/ntrada.yml @@ -192,6 +192,22 @@ modules: auth: true bind: - orderId:{orderId} + + - upstream: /{orderId}/confirm + method: POST + use: downstream + downstream: orders-service/orders/{orderId}/confirm + auth: true + bind: + - orderId:{orderId} + + - upstream: /{orderId}/cancel + method: DELETE + use: downstream + downstream: orders-service/orders/{orderId}/cancel + auth: true + bind: + - orderId:{orderId} services: orders-service: diff --git a/SwiftParcel.Web/frontend/src/components/modals/orders/orderDetailsModal.tsx b/SwiftParcel.Web/frontend/src/components/modals/orders/orderDetailsModal.tsx index 31d2eac..9ea1c4a 100644 --- a/SwiftParcel.Web/frontend/src/components/modals/orders/orderDetailsModal.tsx +++ b/SwiftParcel.Web/frontend/src/components/modals/orders/orderDetailsModal.tsx @@ -7,7 +7,7 @@ import { import React from "react"; import dateFromUTCToLocal from "../../parsing/dateFromUTCToLocal"; import formatOfferStatus from "../../parsing/formatOfferStatus"; -import { approvePendingOffer, cancelPendingOffer } from "../../../utils/api"; +import { confirmOrder, cancelOrder } from "../../../utils/api"; interface OrderDetailsModalProps { show: boolean; @@ -66,7 +66,7 @@ import { approvePendingOffer, cancelPendingOffer } from "../../../utils/api"; ); - const StatusDetailsSection = ({ detailsData }) => ( + const StatusDetailsSection = ({ detailsData, confirm, cancel, finalized, refresh }) => (
{ detailsData.order.status === "approved" ? - +
+ + + { (new Date() < new Date(detailsData.order.requestValidTo)) ? ( +
+ + +
+ ) : null } + + { finalized ? ( +
+ +
+ ) : null } +
: null } { detailsData.order.status === "cancelled" ? { setReason(""); - setAccepted(false); - setRejected(false); setFinalized(false); props.setShow(false); }; @@ -197,19 +210,17 @@ import { approvePendingOffer, cancelPendingOffer } from "../../../utils/api"; close(); }; - const [accepted, setAccepted] = React.useState(false); - const [rejected, setRejected] = React.useState(false); const [finalized, setFinalized] = React.useState(false); const [reason, setReason] = React.useState(""); - const accept = () => { - approvePendingOffer(props.order.id); + const confirm = () => { + confirmOrder(props.order.id, props.order.company); setFinalized(true); }; - const reject = (reason: string) => { - cancelPendingOffer(props.order.id, reason); + const cancel = () => { + cancelOrder(props.order.id, props.order.company); setFinalized(true); }; @@ -239,6 +250,10 @@ import { approvePendingOffer, cancelPendingOffer } from "../../../utils/api"; @@ -252,40 +267,6 @@ import { approvePendingOffer, cancelPendingOffer } from "../../../utils/api"; detailsData={props} /> -
- - -
- - { (accepted && !finalized) ? ( -
- -
- ) : null } - - { (rejected && !finalized) ? ( -
- - setReason(e.target.value)} - className={`border-gray-300 focus:ring-blue-500 focus:border-blue-500 block w-full shadow-sm sm:text-sm rounded-md`} - /> - -
- ) : null } - - { finalized ? ( -
- -
- ) : null } -
diff --git a/SwiftParcel.Web/frontend/src/pages/inquiries/createInquiry.tsx b/SwiftParcel.Web/frontend/src/pages/inquiries/createInquiry.tsx index 1b7bf37..ac3b434 100644 --- a/SwiftParcel.Web/frontend/src/pages/inquiries/createInquiry.tsx +++ b/SwiftParcel.Web/frontend/src/pages/inquiries/createInquiry.tsx @@ -592,7 +592,7 @@ export default function CreateInquiry() { }) .catch((err) => { - setError(err?.response?.data?.message || "Something went wrong!"); + setError(err?.response?.data?.reason || "Something went wrong!"); }) .finally(() => { setInquiryLoading(false); diff --git a/SwiftParcel.Web/frontend/src/pages/offers/offersUser.tsx b/SwiftParcel.Web/frontend/src/pages/offers/offersUser.tsx index 3cd0520..26f79f0 100644 --- a/SwiftParcel.Web/frontend/src/pages/offers/offersUser.tsx +++ b/SwiftParcel.Web/frontend/src/pages/offers/offersUser.tsx @@ -23,34 +23,34 @@ export default function Offers() { const [userData, setUserData] = React.useState(null); React.useEffect(() => { - getOffers(location.state.parcelId) + getCustomerData(getUserIdFromStorage()) .then((res) => { if (res.status === 200) { - setData(res?.data); + setUserData(res?.data); } else { throw new Error(); } }) .catch((err) => { - setData(null); + setUserData(null); }) - .finally(() => { - setLoadingOffers(false); - }); }, [page]); React.useEffect(() => { - getCustomerData(getUserIdFromStorage()) + getOffers(location.state.parcelId) .then((res) => { if (res.status === 200) { - setUserData(res?.data); + setData(res?.data); } else { throw new Error(); } }) .catch((err) => { - setUserData(null); + setData(null); }) + .finally(() => { + setLoadingOffers(false); + }); }, [page]); const onPageChange = (page: number) => { diff --git a/SwiftParcel.Web/frontend/src/pages/register.tsx b/SwiftParcel.Web/frontend/src/pages/register.tsx index 66e1788..006f9e1 100644 --- a/SwiftParcel.Web/frontend/src/pages/register.tsx +++ b/SwiftParcel.Web/frontend/src/pages/register.tsx @@ -66,11 +66,11 @@ export default function Register() { .then((res) => { setCustomerId(res); setSuccess( - res?.data?.message || "Registration successful! Please complete data referring to you below." + "Registration successful! Please complete data referring to you below." ); }) .catch((err) => { - setError(err?.response?.data?.message || "Something went wrong during registration!"); + setError(err?.response?.data?.reason || "Something went wrong during registration!"); }) .finally(() => { setRegisterLoading(false); diff --git a/SwiftParcel.Web/frontend/src/utils/api.tsx b/SwiftParcel.Web/frontend/src/utils/api.tsx index ec2757b..391003a 100644 --- a/SwiftParcel.Web/frontend/src/utils/api.tsx +++ b/SwiftParcel.Web/frontend/src/utils/api.tsx @@ -498,6 +498,73 @@ export const cancelPendingOffer = async (orderId : string, reason: string) => { } }; +export const confirmOrder = async ( + orderId: string, + company: string +) => { + try { + + const payload = { + OrderId: orderId, + Company: company + }; + + console.log("Request payload:", payload); + + console.log("JSON being sent:", JSON.parse(JSON.stringify(payload))); + + const response = await api.post(`/orders/${orderId}/confirm`, JSON.parse(JSON.stringify(payload)), { + headers: { + //'Authorization': `${userInfo.accessToken}`, + 'Content-Type': 'application/json' + } + }) + + return response.data; + + } catch (orderError) { + if (axios.isAxiosError(orderError) && orderError.response) { + console.error('Error status:', orderError.response.status); + console.error('Error data:', orderError.response.data); + console.error('Error during order confirmation:', orderError.message); + } else { + console.error('Error during order confirmation:', orderError); + } + throw orderError; + } +}; + +export const cancelOrder = async ( + orderId: string, + company: string +) => { + try { + + const payload = { + OrderId: orderId, + Company: company + }; + + console.log("Request payload:", payload); + + console.log("JSON being sent:", JSON.parse(JSON.stringify(payload))); + + const response = await api.delete(`/orders/${orderId}/cancel`, JSON.parse(JSON.stringify(payload))) + + return response.data; + + } catch (orderError) { + if (axios.isAxiosError(orderError) && orderError.response) { + console.error('Error status:', orderError.response.status); + console.error('Error data:', orderError.response.data); + console.error('Error during order cancellation:', orderError.message); + } else { + console.error('Error during order cancellation:', orderError); + } + throw orderError; + } +}; + export const getCustomerData = async (customerId: string) => { try { const response = await api.get(`/customers/${customerId}`, { headers: getAuthHeader() });