From 264d7b85016d243e525c016a11c82cbe4fa52055 Mon Sep 17 00:00:00 2001 From: Ebube Date: Tue, 27 Jun 2023 13:48:54 +0100 Subject: [PATCH] . --- .../MarketPlace/PopUp/MarketPopUp.jsx | 478 ++++++++++-------- .../MyWaitingJobs/MyWaitingJobTable.jsx | 36 +- .../jobPopout/PendingJobsPopout.jsx | 467 ++++++++--------- 3 files changed, 506 insertions(+), 475 deletions(-) diff --git a/src/components/MarketPlace/PopUp/MarketPopUp.jsx b/src/components/MarketPlace/PopUp/MarketPopUp.jsx index 444d1ba..4c08188 100644 --- a/src/components/MarketPlace/PopUp/MarketPopUp.jsx +++ b/src/components/MarketPlace/PopUp/MarketPopUp.jsx @@ -1,234 +1,306 @@ -import { useCallback, useMemo, useState } from "react"; -import Detail from "./Detail"; +import React, { useCallback, useMemo, useState } from "react"; import ModalCom from "../../Helpers/ModalCom"; -import usersService from "../../../services/UsersService"; import { toast } from "react-toastify"; +import { Form, Formik } from "formik"; +import usersService from "../../../services/UsersService"; import LoadingSpinner from "../../Spinners/LoadingSpinner"; import { PriceFormatter } from "../../Helpers/PriceFormatter"; -const showSuccessToast = (message) => { - toast.success(message, { - autoClose: 3000, - hideProgressBar: true, +const MarketPopUp = ({ details, onClose, situation, marketInt }) => { + const [marketMsg, setMarketMsg] = useState({ + loading: false, + data: {}, + state: undefined, + }); + const [manageInt, setManageInt] = useState({ + loading: false, + data: {}, + state: undefined, + msg: "", }); -}; -function MarketPopUp({ details, onClose, situation }) { - const [pendingJobLoader, setPendingJobLoader] = useState({ - extend: false, - offer: false, - }); + const [textValue, setTextValue] = useState(""); + + const handleInputChange = ({ target: { value } }) => { + setTextValue(value); + }; + const apiCall = useMemo(() => new usersService(), []); - const handlePendingJobsBtn = useCallback( - async ({ target: { name } }) => { - let { job_uid, offer_code } = details; - - let reqData; - - let pendingData = { job_uid, offer_code }; - + const marketCalls = useCallback( + async (e) => { try { - if (name === "extend") { - setPendingJobLoader({ extend: true }); - reqData = { ...pendingData }; - // let { data } = - await apiCall.pendingJobExtend(reqData); - // console.log("This is for extend", data); - showSuccessToast("Job has been extended by a week!"); - } else if (name === "offer") { - setPendingJobLoader({ offer: true }); - reqData = { ...pendingData }; - // let { data } = - await apiCall.pendingJobSendTome(reqData); - // console.log("This is for offer", data); - showSuccessToast("Offer sent, check your email"); - } else return; + const nameOfCall = e?.target?.name; + const { offer_code } = details; + const reqData = { offer_code }; - setTimeout(() => { - setPendingJobLoader({ extend: false, offer: false }); - onClose(); - }, 2700); + if (nameOfCall === "market-message") { + setMarketMsg({ loading: true }); + if (!textValue) return; + + reqData.yourmessage = textValue; + + const marketMessage = await apiCall.MarketMessage(reqData); + const marketMessageRes = marketMessage?.data; + + if (marketMessageRes?.internal_return < 0) { + toast.warn("Something wrong happened", { + autoClose: 2000, + hideProgressBar: true, + }); + onClose(); + return; + } + + toast.success("Message sent", { + autoClose: 2500, + hideProgressBar: true, + }); + + setMarketMsg({ data: marketMessageRes, state: true }); + setTimeout(() => onClose(), 2000); + } else { + setManageInt({ loading: true }); + + const manageInt = await apiCall.MarketInterest(reqData); + const manageIntRes = manageInt?.data; + + if (manageIntRes?.internal_return < 0) { + setManageInt({ + loading: false, + msg: `Error - ${manageIntRes?.status}`, + data: manageIntRes, + state: false, + }); + } else { + setManageInt({ + loading: false, + msg: manageIntRes?.status, + data: manageIntRes, + state: true, + }); + } + + setTimeout(() => setManageInt({ msg: "" }), 3000); + + return; + } } catch (error) { - setPendingJobLoader({ extend: false, offer: false }); throw new Error(error); + } finally { + setTimeout(() => { + setTextValue(""); + setMarketMsg({ loading: false }); + }, 2000); } }, - [onClose, apiCall, details] + [apiCall, details, onClose, textValue] ); + let thePrice = PriceFormatter( + details?.price * 0.01, + details?.currency_code, + details?.currency + ); + + // let addedIntDate = marketInt?.added?.split(" ")[0]; + let expireIntDate = marketInt?.expire?.split(" ")[0]; + return ( -
-
+
+

- Manage Pending Item + {details.offer_code}

- +
-
-
-

- {details.title} -

-
- - ! - -
-

- This Job have been sent to public view + +

+
+
+

+ {details?.title} +

+ + {/* INPUT SECTION */} + {[ + { + name: "Description", + content: details.description, + }, + { + name: "", + content: { + text: `Timeline: ${details.timeline_days} day(s) -- `, + bold: `Budget: ${thePrice}`, + }, + }, + { + name: "Delivery Detail", + content: details.job_description, + danger: true, + }, + ].map(({ name, content, danger }, idx) => ( +
+ +
+ {danger ? ( +

+ ) : ( +

+ {name !== "Delivery Detail" ? ( + <> + {typeof content !== "object" ? content : null} + {typeof content === "object" && ( + <> +


+ + {content?.text} + {thePrice} + +
+ + )} + + ) : ( + "" + )} +

+ )} +
+
+ ))} +
+
+
+
+ +