From cc0e2c2c6b052af85c26f86808ec5edf130ab809 Mon Sep 17 00:00:00 2001 From: victorAnumudu Date: Sun, 18 Jun 2023 08:14:22 +0100 Subject: [PATCH 1/2] offer interest process API added --- .../OffersInterest/ManageInterestOffer.jsx | 105 +++++++++++++++--- src/services/UsersService.js | 12 ++ 2 files changed, 102 insertions(+), 15 deletions(-) diff --git a/src/components/OffersInterest/ManageInterestOffer.jsx b/src/components/OffersInterest/ManageInterestOffer.jsx index 5f4f243..6236dc9 100644 --- a/src/components/OffersInterest/ManageInterestOffer.jsx +++ b/src/components/OffersInterest/ManageInterestOffer.jsx @@ -1,18 +1,24 @@ import React, { useEffect, useState } from "react"; +import { useNavigate } from "react-router-dom"; import Layout from "../Partials/Layout"; import CommonHead from "../UserHeader/CommonHead"; -import { useNavigate } from "react-router-dom"; +import usersService from "../../services/UsersService"; import { handlePagingFunc } from "../Pagination/HandlePagination"; import PaginatedList from "../Pagination/PaginatedList"; - +import LoadingSpinner from "../Spinners/LoadingSpinner"; import OthersInterestedTable from "./OthersInterestedTable"; export default function ManageInterestOffer(props) { const navigate = useNavigate() + const apiCall = new usersService() + + let [redirectTime, setRedirectTime] = useState(5) let [tab, setTab] = useState("info"); //message STATE FOR SWITCHING BETWEEN TABS + let [requestStatus, setRequestStatus] = useState({loading: false, status: false, message: '', processType: ''}) + const messageList = {data: [1,2,3,4,5,6]} // TO BE REMOVED AND REPLACE WITH REAL MESSAGE FROM API CALL const [currentPage, setCurrentPage] = useState(0); const indexOfFirstItem = Number(currentPage); @@ -28,6 +34,36 @@ export default function ManageInterestOffer(props) { setValue(value); }; + //FUNCTION TO ACCEPT/REJECT OFFER INTEREST + const interestOfferProcess = ({target:{name}}) => { + setRequestStatus(prev => ({...prev, loading: true, processType: name})) + let reqData = { // API PAYLOADS + proc: name.toUpperCase(), + client_uid : props.offerDetails?.client_uid, + offer_code : props.offerDetails?.offer_code, + offer_uid: props.offerDetails?.offer_uid, + } + apiCall.offersInterestProc(reqData).then(res => { + if(res.status != 200 || res.data.internal_return < 0){ + setRequestStatus({loading: false, status: false, message: 'Unable to complete request', processType: ''}) + return + } + setInterval(() => { // SETS REDIRECT COUNT DOWN + setRedirectTime(prev => prev - 1) + }, 1000); + setRequestStatus({loading: false, status: true, message: `Offer ${name}ed`, processType: ''}) + setTimeout(()=>{ + navigate('/offer-interest', {replace: true}) + },5000) + }).catch(err => { + setRequestStatus({loading: false, status: false, message: 'Opps! something went wrong. Try again', processType: ''}) + }).finally(()=>{ + setTimeout(()=>{ + setRequestStatus({loading: false, status: false, message: '', processType: ''}) + },5000) + }) + } + useEffect(()=>{ // run API to get message to replace message array above, add reload variable as dependence array },[]) @@ -188,19 +224,58 @@ export default function ManageInterestOffer(props) { {/* BUTTON section */}
-
- - +
+
+ {requestStatus.loading && requestStatus.processType == 'accept' ? + + : + + } + + {requestStatus.loading && requestStatus.processType == 'reject' ? + + : + + } +
+ + {/* ERROR DISPLAY */} +
+ {/* error or success display */} + {requestStatus.message != "" && requestStatus.processType != 'sendmeassge' && + (!requestStatus.status ? ( +
+ {requestStatus.message} +
+ ) : ( + requestStatus.status && ( +
+ {`${requestStatus.message} redirecting.... ${redirectTime}sec`} +
+ ) + ))} +
+ {/* End of error or success display */}
{/* END of BUTTON section */} diff --git a/src/services/UsersService.js b/src/services/UsersService.js index 6f4ec57..a8b0358 100644 --- a/src/services/UsersService.js +++ b/src/services/UsersService.js @@ -666,6 +666,18 @@ class usersService { return this.postAuxEnd("/offersinterestlist", postData); } + // END POINT FOR PROCESSING OFFER INTEREST + offersInterestProc(reqData) { + var postData = { + uid: localStorage.getItem("uid"), + member_id: localStorage.getItem("member_id"), + sessionid: localStorage.getItem("session_token"), + action: 13034, + ...reqData + }; + return this.postAuxEnd("/offersinterestproc", postData); + } + // END POINT FOR WORKER TO MARK TASK AS COMPLETED workerJobAction(reqData) { var postData = { From 5c223ba64110df52d5bcb1703d4c4cf592269cbd Mon Sep 17 00:00:00 2001 From: victorAnumudu Date: Sun, 18 Jun 2023 08:20:29 +0100 Subject: [PATCH 2/2] margin added to offer interest table --- src/components/OffersInterest/OffersInterestTable.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/OffersInterest/OffersInterestTable.jsx b/src/components/OffersInterest/OffersInterestTable.jsx index 167bb81..542ea3d 100644 --- a/src/components/OffersInterest/OffersInterestTable.jsx +++ b/src/components/OffersInterest/OffersInterestTable.jsx @@ -29,7 +29,7 @@ export default function OffersInterestTable({offerInterestList, className}) { return (