From 0e4301fedbed5de0d0d99e5953c36641984f2b44 Mon Sep 17 00:00:00 2001 From: "Siddhesh.More" Date: Thu, 26 Sep 2024 19:40:13 +0530 Subject: [PATCH] =?UTF-8?q?update=20=F0=9F=A6=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/App.jsx | 2 +- src/Components/Buttons/PrimaryButton.jsx | 1 + src/Components/DataTable/NormalTable.jsx | 5 +- src/Components/ToastBox.jsx | 10 +- src/Pages/Login/ForgotPassword..jsx | 10 +- src/Pages/Login/Login.jsx | 10 +- src/Pages/Login/OtpScreen.jsx | 189 ++++--- src/Pages/Login/ResetPassword.jsx | 10 +- .../RegisteredCorporate.jsx | 220 ++++++-- .../RegisteredCorporateAddNewModal.jsx | 290 ++++++++--- ...steredCorporateAddNewModalSuccessModal.jsx | 36 +- src/Pages/ViewCorporates/ViewCorporates.jsx | 28 +- src/Routes/Routes.js | 4 +- src/Services/Key.merits.service.js | 42 -- src/Services/api.service.js | 0 src/Services/ban.investor.service.js | 47 -- src/Services/bank.details.service.js | 43 -- src/Services/contact.service.js | 37 -- src/Services/delete.request.service.js | 57 -- src/Services/deposit.request.service.js | 55 -- src/Services/deposite.service.js | 101 ---- src/Services/drawal.request.service.js | 56 -- src/Services/exchange.rate.service.js | 49 -- src/Services/investment.documents.service.js | 61 --- src/Services/investment.type.service.js | 72 --- src/Services/investor.details.service.js | 42 -- src/Services/investor.transaction.service.js | 23 - src/Services/io.service.js | 493 ------------------ src/Services/register.corporate.service.js | 38 ++ src/Services/sponser.service.js | 105 ---- src/Services/token.serivce.js | 25 +- src/Store/Store.js | 43 +- src/assets/Whitelogo.svg | 13 + src/assets/pattern_white.png | Bin 0 -> 88175 bytes 34 files changed, 642 insertions(+), 1575 deletions(-) delete mode 100644 src/Services/Key.merits.service.js delete mode 100644 src/Services/api.service.js delete mode 100644 src/Services/ban.investor.service.js delete mode 100644 src/Services/bank.details.service.js delete mode 100644 src/Services/contact.service.js delete mode 100644 src/Services/delete.request.service.js delete mode 100644 src/Services/deposit.request.service.js delete mode 100644 src/Services/deposite.service.js delete mode 100644 src/Services/drawal.request.service.js delete mode 100644 src/Services/exchange.rate.service.js delete mode 100644 src/Services/investment.documents.service.js delete mode 100644 src/Services/investment.type.service.js delete mode 100644 src/Services/investor.details.service.js delete mode 100644 src/Services/investor.transaction.service.js delete mode 100644 src/Services/io.service.js create mode 100644 src/Services/register.corporate.service.js delete mode 100644 src/Services/sponser.service.js create mode 100644 src/assets/Whitelogo.svg create mode 100644 src/assets/pattern_white.png diff --git a/src/App.jsx b/src/App.jsx index 4d91105..01a8b99 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -57,7 +57,7 @@ const App = () => { } /> - } /> + } /> } /> } /> } /> diff --git a/src/Components/Buttons/PrimaryButton.jsx b/src/Components/Buttons/PrimaryButton.jsx index 796bc16..be45340 100644 --- a/src/Components/Buttons/PrimaryButton.jsx +++ b/src/Components/Buttons/PrimaryButton.jsx @@ -22,6 +22,7 @@ const PrimaryButton = ({title, onClick, ...props}) => { // bgGradient: "linear(to-r, #5E0FCD, #3725EA)", opacity: 1, }} + onClick={onClick} >{title} ) diff --git a/src/Components/DataTable/NormalTable.jsx b/src/Components/DataTable/NormalTable.jsx index c658411..748b4c1 100644 --- a/src/Components/DataTable/NormalTable.jsx +++ b/src/Components/DataTable/NormalTable.jsx @@ -96,7 +96,10 @@ const NormalTable = ({ ) ) : data?.map((item, index) => ( - + {tableHeadRow.map((heading, i) => ( { return ( - {status === "error" || status === "warn" ? : status === "info" ? : } + {status === "error" || status === "warn" ? : } {message} ); diff --git a/src/Pages/Login/ForgotPassword..jsx b/src/Pages/Login/ForgotPassword..jsx index 1e987c6..9480455 100644 --- a/src/Pages/Login/ForgotPassword..jsx +++ b/src/Pages/Login/ForgotPassword..jsx @@ -8,8 +8,8 @@ import { yupResolver } from "@hookform/resolvers/yup"; import { useForm } from "react-hook-form"; import { TiWarning } from "react-icons/ti"; import Loader01 from "../../Components/Loaders/Loader01"; -import Asset1 from "../../assets/loginpat.png"; -import logo from "../../assets/optifii_white.svg"; +import Asset1 from "../../assets/pattern_white.png"; +import logo from "../../assets/Whitelogo.svg"; import { Box, Button, @@ -261,9 +261,9 @@ const ForgotPassword = () => { bg-img { bg-img { - const params = useParams() + const params = useParams(); const [show, setShow] = useState(false); const handleClick = () => setShow(!show); const { isAuthenticate, setIsAuthenticate } = useContext(GlobalStateContext); @@ -52,84 +53,111 @@ const OtpScreen = () => { setPin(value); }; - console.log(pin); - const [isLoading, setIsLoading] = useState(false); const navigate = useNavigate(); const dispatch = useDispatch(); const [resendPassword] = useResendOtpMutation(); + const [sendOtp] = useSetOtpMutation(); + + // useEffect(() => { + // if (isAuthenticate) { + // navigate("/sponser"); + // } + // }, [navigate, isAuthenticate]); - useEffect(() => { - if (isAuthenticate) { - navigate("/sponser"); - } - }, [navigate, isAuthenticate]); - const onSubmit = async (e) => { e.preventDefault(); setIsLoading(true); - + + const data = { + otp: pin, + }; + if (params?.id) { - // 3-second delay before navigating to "/reset-password" - setTimeout(() => { - navigate("/reset-password"); - setIsLoading(false); - }, 3000); + + try { + const res = await sendOtp(data); + console.log(res?.error?.data?.message); + + if (res?.statusCode === 200) { + toast({ + render: () => ( + + ), + }); + navigate("/reset-password"); + setIsLoading(false); + } else if (res?.error) { + toast({ + render: () => ( + + ), + }); + setIsLoading(false); + } + } catch (error) {console.log(error);} + } else { - // 3-second delay before setting authentication, setting cookies, and navigating - setTimeout(() => { - setIsAuthenticate(true); - setIsLoading(false); - Cookies.set("isAuthenticated", true, { expires: 7 }); - navigate("/"); - reset(); - }, 3000); + try { + const res = await sendOtp(data); + console.log(res); + + if (res?.data?.statusCode === 200) { + console.log("it"); + toast({ + render: () => ( + + ), + }); + + setIsAuthenticate(true); + setIsLoading(false); + Cookies.set("isAuthenticated", true, { expires: 7 }); + navigate("/"); + } else if (res?.error) { + toast({ + render: () => ( + + ), + }); + setIsLoading(false); + } + } catch (error) {console.log(error);} + } }; - const handleResendOtp = async () => { - - - - - - try { - const res = await resendPassword().unwrap(); - console.log(res); - if (res?.statusCode === 200) { - toast({ - render: () => ( - - ), - }) - - }else if(res?.error){ - toast({ - render: () => ( - - ), - }) + try { + const res = await resendPassword().unwrap(); + console.log(res); + if (res?.statusCode === 200) { + toast({ + render: () => , + }); + } else if (res?.error) { + toast({ + render: () => ( + + ), + }); + } + } catch (err) { + if (err) { + toast({ + render: () => ( + + ), + }); + setIsLoading(false); + } } - } catch (err) { - if (err) { - toast({ - render: () => ( - - ), - }); - setIsLoading(false); - } - } - - } - - - - - + }; return ( { - { size="md" type="alphanumeric" mask - > - - - - - + + + + + - - - + {/* Resend Otp */} - Resend Otp + + Resend Otp + @@ -237,12 +269,13 @@ const OtpScreen = () => { + bg-img { bg-img { + switch (status) { + case 1: + return { bg: "blue.100", text: "blue.700", label: "Requested" }; + case 2: + return { bg: "yellow.100", text: "yellow.700", label: "Submitted" }; + case 3: + return { bg: "purple.100", text: "purple.700", label: "Registered" }; + case 4: + return { bg: "green.100", text: "green.700", label: "Approved" }; + case 5: + return { bg: "red.100", text: "red.700", label: "Rejected" }; + default: + return { bg: "gray.100", text: "gray.700", label: "Unknown" }; + } +}; const RegisteredCorporate = () => { + const navigate = useNavigate(); const { corpData } = useContext(GlobalStateContext); - const [isLoading, setIsLoading] = useState(false); const [selectedRadio, setSelectedRadio] = useState(""); - const { isOpen, onOpen, onClose } = useDisclosure() + const { isOpen, onOpen, onClose } = useDisclosure(); - // Simulate loading effect + const [searchTerm, setSearchTerm] = useState(""); + const [debouncedSearchTerm, setDebouncedSearchTerm] = useState(""); + + // Debounce the search term to avoid making a request on every keystroke useEffect(() => { - setIsLoading(true); - const timer = setTimeout(() => setIsLoading(false), 500); - return () => clearTimeout(timer); - }, []); + const handler = setTimeout(() => { + setDebouncedSearchTerm(searchTerm); + }, 500); // Adjust delay as needed + return () => { + clearTimeout(handler); + }; + }, [searchTerm]); - console.log(corpData); + // Modify the skip condition to always call the API initially + const { data, isLoading } = useGetAllCorpQuery(debouncedSearchTerm, { + skip: debouncedSearchTerm === "" && searchTerm !== "", // Skip only if searchTerm has been cleared after a previous search + }); + + console.log(data?.data?.rows); // Table headers const tableHeadRow = [ @@ -38,11 +82,10 @@ const RegisteredCorporate = () => { "Industry", "Type", "Subscription", - "Status" - + "Status", ]; // Extracted data for table - const extractedArray = corpData?.map((item, index) => ({ + const extractedArray = data?.data?.rows?.map((item, index) => ({ "Corp Id": ( { fontSize={"xs"} gap={2} alignItems={"center"} + cursor={"pointer"} + onClick={() => navigate("/register-corporates/view-corporates")} > - {item.CorpId} + {item?.corporate_code} ), - "Company Name": - ( - {item.CompanyName} - ), + {item?.corporate_name} + + ), "Date Of Onboarding": ( - {item.DateOfOnbaording} + {item?.onboarding_date? item?.onboarding_date:"---"} ), // "Email Address": ( @@ -108,52 +154,120 @@ const RegisteredCorporate = () => { // ), "Email Address": ( - {item.EmailAddress} + {item?.emailAddress} ), - "Industry": ( + Industry: ( - {item.Industry} + {item.industry_name? item?.industry_name:"---"} ), - "Type": ( - - {item.Type} - + Type: {item?.corporate_type?item?.corporate_type:"---"}, + + Subscription: ( + + {item?.opted_for_expence && ( + + Expence + + )} + {item?.opted_for_benefit && ( + + Benefits + + )} + + {item?.opted_for_gifting && ( + + Gifting + + )} + +{!item?.opted_for_gifting && !item?.opted_for_gifting && !item?.opted_for_gifting && ( + + --- + +)} + + ), - "Subscription": ( - - {item.Subscription} - - ), - - "Status": ( - - - {item.Status} - + Status: ( + + + + + {item?.corporate_status} + + ), - })); return ( - - - Corporates + + + + Corporates + @@ -163,18 +277,18 @@ const RegisteredCorporate = () => { type="search" placeholder="Search..." rounded="md" - bg={'gray.100'} - border={'none'} - // value={searchTerm} - // onChange={(e) => setSearchTerm(e.target.value)} + bg={"gray.100"} + border={"none"} + value={searchTerm} + onChange={(e) => setSearchTerm(e.target.value)} /> } + size={"sm"} + leftIcon={} /> {/* Modal is triggered on button click */} diff --git a/src/Pages/RegisteredCorporate/RegisteredCorporateAddNewModal.jsx b/src/Pages/RegisteredCorporate/RegisteredCorporateAddNewModal.jsx index c706814..7615236 100644 --- a/src/Pages/RegisteredCorporate/RegisteredCorporateAddNewModal.jsx +++ b/src/Pages/RegisteredCorporate/RegisteredCorporateAddNewModal.jsx @@ -1,88 +1,228 @@ -import { Box, Modal, ModalOverlay, ModalContent, ModalHeader, ModalFooter, ModalBody, ModalCloseButton, Button, Input, Text, HStack } from '@chakra-ui/react' -import React, { useState } from 'react' -import PrimaryButton from '../../Components/Buttons/PrimaryButton' -import SecondaryButton from '../../Components/Buttons/SecondaryButton' -import RegisteredCorporateAddNewModalSuccessModal from './RegisteredCorporateAddNewModalSuccessModal' +import React, { useState } from "react"; +import { + Box, + Modal, + ModalOverlay, + ModalContent, + ModalHeader, + ModalFooter, + ModalBody, + ModalCloseButton, + Button, + Input, + Text, + HStack, + FormControl, + FormLabel, + FormErrorMessage, + useToast, +} from "@chakra-ui/react"; +import { useForm } from "react-hook-form"; +import { yupResolver } from "@hookform/resolvers/yup"; +import * as Yup from "yup"; +import PrimaryButton from "../../Components/Buttons/PrimaryButton"; +import SecondaryButton from "../../Components/Buttons/SecondaryButton"; +import RegisteredCorporateAddNewModalSuccessModal from "./RegisteredCorporateAddNewModalSuccessModal"; import PhoneInput from "react-phone-input-2"; import "react-phone-input-2/lib/style.css"; +import { useCorporateQuickAddMutation } from "../../Services/register.corporate.service"; +import ToastBox from "../../Components/ToastBox"; + +// Define Yup schema for validation +const validationSchema = Yup.object().shape({ + entity_name: Yup.string().required("Entity Name is required"), + corporate_name: Yup.string().required("Company Name is required"), + emailAddress: Yup.string() + .email("Email is invalid") + .required("Email is required"), + mobileNumber: Yup.string().required("Phone number is required"), + ISDcode: Yup.string(), +}); const RegisteredCorporateAddNewModal = ({ isOpen, onClose }) => { - const [isSuccessOpen, setIsSuccessOpen] = useState(false); + const toast = useToast() + const [isSuccessOpen, setIsSuccessOpen] = useState(false); + const [phone, setPhone] = useState(""); + const[ isLoading, setIsLoading ] = useState(false) - const [phone, setPhone] = useState(""); + const [isdCode, setIsdCode] = useState(""); + + // Initialize react-hook-form with Yup validation + const { + register, + handleSubmit, + formState: { errors }, + setValue, + reset, + } = useForm({ + resolver: yupResolver(validationSchema), + }); + + const [corporateQuickAdd] = useCorporateQuickAddMutation(); + + const handlePhoneChange = (value, country) => { + const countryCode = `+${country.dialCode}`; + setIsdCode(countryCode); + let numberWithoutISD = value; + + setPhone(numberWithoutISD); + setValue("mobileNumber", value.split('').splice(countryCode.length - 1, 15).join('')); // Sync phone number + setValue("ISDcode", countryCode); // Sync ISD code + }; + + + + // Handle form submission + const onSubmit = async (data) => { + setIsLoading(true) + console.log(data); + + try { + const res = await corporateQuickAdd(data) + console.log(res?.data?.data?.link); + + + + if (res?.data?.statusCode === 200) { + toast({ + render: () => ( + + ), + }) + localStorage?.setItem("link", res?.data?.data?.link) + setIsLoading(false); + setIsSuccessOpen(true); // Open success modal after submission + onClose(); // Close the initial add form modal + reset(); // Reset the form fields + }else if(res?.error){ + + toast({ + render: () => ( + + ), + }) + setIsLoading(false); + + } + + + } catch (error) { - const handleAddClick = () => { - // Handle the form submission logic here (e.g., send data to the server) - // After successful submission, open the success modal - setIsSuccessOpen(true); - onClose(); // Close the initial add form modal } - const handleSuccessClose = () => { - setIsSuccessOpen(false); - } + // Handle the form submission logic here (e.g., send data to the server) + + }; - return ( - - - - - Quick Add - - - - - Entity Name - - - - Email ID - - - - - Phone Number - + const handleSuccessClose = () => { + setIsSuccessOpen(false); + }; - - - - - - - - - - + return ( + + + + + Quick Add + + + {/* Use handleSubmit from react-hook-form */} + + + + Entity Name + + + + {errors.entity_name?.message} + + - {/* Success Modal */} - - - ) -} + + + Company Name + + + + {errors.corporate_name?.message} + + + + + + Email ID + + + + {errors.emailAddress?.message} + + + + + + Phone Number + + + {/* Handle phone input separately and integrate it with react-hook-form */} + + {errors.mobileNumber && ( + + {errors.mobileNumber.message} + + )} + + + + + + + + + + + + {/* Success Modal */} + + + ); +}; export default RegisteredCorporateAddNewModal; diff --git a/src/Pages/RegisteredCorporate/RegisteredCorporateAddNewModalSuccessModal.jsx b/src/Pages/RegisteredCorporate/RegisteredCorporateAddNewModalSuccessModal.jsx index c07dfec..53411d9 100644 --- a/src/Pages/RegisteredCorporate/RegisteredCorporateAddNewModalSuccessModal.jsx +++ b/src/Pages/RegisteredCorporate/RegisteredCorporateAddNewModalSuccessModal.jsx @@ -8,10 +8,15 @@ import { ModalCloseButton, Text, HStack, + Icon, + useToast, } from "@chakra-ui/react"; import React from "react"; import { motion } from "framer-motion"; // Import motion from framer-motion import PrimaryButton from "../../Components/Buttons/PrimaryButton"; +import { AddIcon } from "@chakra-ui/icons"; +import { FaRegCopy } from "react-icons/fa"; +import ToastBox from "../../Components/ToastBox"; // Define motion components const MotionBox = motion(Box); @@ -20,6 +25,24 @@ const MotionCircle = motion.circle; const MotionPolyline = motion.polyline; const RegisteredCorporateAddNewModalSuccessModal = ({ isOpen, onClose }) => { + const toast = useToast() + + function copyToClipboard(text) { + navigator.clipboard.writeText(text) + .then(() => { + // console.log('Text copied to clipboard'); + // alert('Text copied to clipboard'); + toast({ + render: () => ( + + ), + }) + }) + .catch((err) => { + console.error('Failed to copy text: ', err); + }); + } + return ( @@ -101,8 +124,19 @@ const RegisteredCorporateAddNewModalSuccessModal = ({ isOpen, onClose }) => { An email with the onboarding link along with the instruction has been sent has been sent.You can view their onboarding status, by clicking on the button below + + {localStorage?.getItem("link")} + copyToClipboard(localStorage?.getItem("link"))} position={'absolute'} right={0} bottom={0} boxSize={7} _hover={{bg:"gray.100", transition:"0.5s"}} cursor={'pointer'} rounded={'md'} as={FaRegCopy} /> + + + + - + diff --git a/src/Pages/ViewCorporates/ViewCorporates.jsx b/src/Pages/ViewCorporates/ViewCorporates.jsx index 20eaf04..8a600b2 100644 --- a/src/Pages/ViewCorporates/ViewCorporates.jsx +++ b/src/Pages/ViewCorporates/ViewCorporates.jsx @@ -18,9 +18,11 @@ import { MdCheckCircle, MdOutlineModeEdit } from "react-icons/md"; import SecondaryButton from "../../Components/Buttons/SecondaryButton"; import pancard from "../../assets/pancard.svg" import gift from "../../assets/gift.svg" +import { useNavigate } from "react-router-dom"; const ViewCorporates = () => { + const navigate = useNavigate() const { empData } = useContext(GlobalStateContext); const [isLoading, setIsLoading] = useState(false); const [selectedRadio, setSelectedRadio] = useState(""); @@ -127,7 +129,7 @@ const ViewCorporates = () => { ), "Action": ( - + navigate('/register-corporates/view-corporates-employee-details')}> {item.Action} @@ -141,7 +143,7 @@ const ViewCorporates = () => { - + @@ -153,7 +155,7 @@ const ViewCorporates = () => { Limited Liability Partnership (LLP) - { Registered - + + + */} + + + Registered + + @@ -445,7 +461,7 @@ const ViewCorporates = () => { - + @@ -556,7 +572,7 @@ const ViewCorporates = () => { - + diff --git a/src/Routes/Routes.js b/src/Routes/Routes.js index 5110a63..8c490ad 100644 --- a/src/Routes/Routes.js +++ b/src/Routes/Routes.js @@ -7,6 +7,6 @@ import ViewCorporatesEmployeeDetails from "../Pages/ViewCorporates/ViewCorporate export const RouteLink = [ { path: "/", Component: NotFound }, { path: "/register-corporates", Component: RegisteredCorporate }, - { path: "/view-corporates", Component: ViewCorporates }, - { path: "/view-corporates-employee-details", Component: ViewCorporatesEmployeeDetails }, + { path: "/register-corporates/view-corporates", Component: ViewCorporates }, + { path: "/register-corporates/view-corporates-employee-details", Component: ViewCorporatesEmployeeDetails }, ]; diff --git a/src/Services/Key.merits.service.js b/src/Services/Key.merits.service.js deleted file mode 100644 index c90ff10..0000000 --- a/src/Services/Key.merits.service.js +++ /dev/null @@ -1,42 +0,0 @@ -// io.service.js -import { createApi, fetchBaseQuery } from "@reduxjs/toolkit/query/react"; -// import { api } from "./api.service"; -import { baseQuery } from "./token.serivce"; - -// const baseUrl = api?.defaults.baseURL; - -export const keyMerits = createApi({ - reducerPath: "ioService", - baseQuery: baseQuery, - tagTypes: ["getKeyMerits"], - endpoints: (builder) => ({ - // =====[get] - getKeyMerits: builder.query({ - query: (id) => `/io/admin/key-merits/${id}`, - providesTags: ["getKeyMerits"], - }), - - - - - - - setDisplayOrder: builder.mutation({ - query: ({ data }) => ({ - url: `/io/admin/key-merits/resetDisplayOrder`, - method: "PATCH", - body: data, - }), - invalidatesTags: ["getIOById"], - }), - - - }), -}); - -// Export hooks for usage in functional components -export const { - useGetKeyMeritsQuery, - useSetDisplayOrderMutation -} = -keyMerits; diff --git a/src/Services/api.service.js b/src/Services/api.service.js deleted file mode 100644 index e69de29..0000000 diff --git a/src/Services/ban.investor.service.js b/src/Services/ban.investor.service.js deleted file mode 100644 index c16fa90..0000000 --- a/src/Services/ban.investor.service.js +++ /dev/null @@ -1,47 +0,0 @@ -// investorDetails.service.js -import { createApi, fetchBaseQuery } from "@reduxjs/toolkit/query/react"; -// import { api } from "./api.service"; -import { baseQuery } from "./token.serivce"; - -// const baseUrl = api?.defaults.baseURL; - -// Define a service using a base URL and expected endpoints -export const banInvestorDetails = createApi({ - reducerPath: "banInvestorDetails", - baseQuery: baseQuery, - tagTypes: ["getBanInvestor", "getUnbanInvestor"], - endpoints: (builder) => ({ - getInvestor: builder.query({ - query: () => `/investorDetails/admin`, - providesTags: ["getBanInvestor"], - }), - - getUnbanInvestor: builder.query({ - query: () => `/investorDetails/admin/getAllUnbanned`, - providesTags: ["getBanInvestor"], - }), - - getbanInvestor: builder.query({ - query: () => `/investorDetails/admin/getAllBanned`, - providesTags: ["getBanInvestor"], - }), - - updateUnban: builder.mutation({ - query: ({ id, data }) => ({ - url: `/investorDetails/admin/unBanById/${id}`, - method: "PATCH", - body: data, - }), - invalidatesTags: ["getBanInvestor"], - }), - - }), -}); - -// Export hooks for usage in functional components -export const { - useGetUnbanInvestorQuery, - useGetInvestorQuery, - useGetbanInvestorQuery, - useUpdateUnbanMutation, -} = banInvestorDetails; diff --git a/src/Services/bank.details.service.js b/src/Services/bank.details.service.js deleted file mode 100644 index 9031c99..0000000 --- a/src/Services/bank.details.service.js +++ /dev/null @@ -1,43 +0,0 @@ -// investorDetails.service.js -import { createApi, fetchBaseQuery } from "@reduxjs/toolkit/query/react"; -// import { api } from "./api.service"; -import { baseQuery } from "./token.serivce"; - -// const baseUrl = api?.defaults.baseURL; - -// Define a service using a base URL and expected endpoints -export const bankDetails = createApi({ - reducerPath: "bankDetails", - baseQuery: baseQuery, - tagTypes: ["getBank"], - - endpoints: (builder) => ({ - getBank: builder.query({ - query: ({ page, size }) => - `/bankDetails/admin/?page=${page}&size=${size}`, - providesTags: ["getBank"], - }), - - updateBankDetails: builder.mutation({ - query: ({ data, id }) => ({ - url: `/bankDetails/admin/${id}`, - method: "PATCH", - body: data, - }), - invalidatesTags: ["getBank"], - }), - - getBankDetails: builder.query({ - query: ({ data, id }) => ({ - url: `/bankDetails/admin/${id}`, - method: "GET", - body: data, - }), - invalidatesTags: ["getBank"], - }), - - }), -}); - -// Export hooks for usage in functional components -export const { useGetBankQuery, useUpdateBankDetailsMutation,useGetBankDetailsQuery } = bankDetails; diff --git a/src/Services/contact.service.js b/src/Services/contact.service.js deleted file mode 100644 index 241c657..0000000 --- a/src/Services/contact.service.js +++ /dev/null @@ -1,37 +0,0 @@ -// investorDetails.service.js -import { createApi, fetchBaseQuery } from "@reduxjs/toolkit/query/react"; -// import { api } from "./api.service"; -import { baseQuery } from "./token.serivce"; - -// const baseUrl = api?.defaults.baseURL; - -// Define a service using a base URL and expected endpoints -export const contact = createApi({ - reducerPath: "contact", - baseQuery: baseQuery, - tagTypes: ["getContact"], - endpoints: (builder) => ({ - - getContact: builder.query({ - query: () => - `/contactDetails/admin`, - providesTags: ["getContact"], - }), - - - // ========[Update Investment]======= - - updateContact: builder.mutation({ - query: (data) => ({ - url: `/contactDetails/admin/`, - method: "PATCH", - body: data, - }), - invalidatesTags: ["getContact"], - }), - - }), -}); - -// Export hooks for usage in functional components -export const { useGetContactQuery, useUpdateContactMutation } = contact; diff --git a/src/Services/delete.request.service.js b/src/Services/delete.request.service.js deleted file mode 100644 index 61e657f..0000000 --- a/src/Services/delete.request.service.js +++ /dev/null @@ -1,57 +0,0 @@ -// investorDetails.service.js -import { createApi, fetchBaseQuery } from "@reduxjs/toolkit/query/react"; -// import { api } from "./api.service"; -import { baseQuery } from "./token.serivce"; - -// const baseUrl = api?.defaults.baseURL; - -// Define a service using a base URL and expected endpoints -export const deleteRequest = createApi({ - reducerPath: "deleteRequest", - baseQuery: baseQuery, - tagTypes: ["getDeleteRequest", "getDeleteHistory"], - endpoints: (builder) => ({ - - - getDeleteRequest: builder.query({ - query: () => `/account/admin/pending-request`, - providesTags: ["getDepositRequest"], - }), - - getDeleteRequestById: builder.query({ - query: (id) => `/account/admin/detail/${id}`, - }), - - approveDepositRequest: builder.mutation({ - query: ({ id, data }) => ({ - url: `/account/admin/approved-request/${id}`, - method: "PATCH", - body: data, - }), - invalidatesTags: ["getDeleteRequest", "getDeleteHistory"], - }), - - deleteReject: builder.mutation({ - query: ({ id, data }) => ({ - url: `/deposit/admin/rejected/${id}`, - method: "PATCH", - body: data, - }), - invalidatesTags: ["getDeleteRequest", "getDeleteHistory"], - }), - - getDeleteHistory: builder.query({ - query: () => `/account/admin/history`, - providesTags: ["getDeleteHistory"], - }), - }), -}); - -// Export hooks for usage in functional components -export const { - useGetDeleteRequestQuery, - useGetDeleteRequestByIdQuery, - useApproveDepositRequestMutation, - useGetDeleteHistoryQuery - -} = deleteRequest; diff --git a/src/Services/deposit.request.service.js b/src/Services/deposit.request.service.js deleted file mode 100644 index 65a77fb..0000000 --- a/src/Services/deposit.request.service.js +++ /dev/null @@ -1,55 +0,0 @@ -// investorDetails.service.js -import { createApi, fetchBaseQuery } from "@reduxjs/toolkit/query/react"; -// import { api } from "./api.service"; -import { baseQuery } from "./token.serivce"; - -// const baseUrl = api?.defaults.baseURL; - -// Define a service using a base URL and expected endpoints -export const depositRequest = createApi({ - reducerPath: "depositRequest", - baseQuery: baseQuery, - tagTypes: ["getDepositRequest", "getDepositHistory"], - endpoints: (builder) => ({ - getDepositRequest: builder.query({ - query: ({page, size}) => `/deposit/admin/pending-requests?page=${page}&size=${size}`, - providesTags: ["getDepositRequest"], - }), - - getDepositRequestById: builder.query({ - query: (id) => `/deposit/admin/getById/${id}`, - }), - - updateDepositRequest: builder.mutation({ - query: ({ id, data }) => ({ - url: `/deposit/admin/approved/${id}`, - method: "PATCH", - body: data, - }), - invalidatesTags: ["getDepositRequest", "getDepositHistory"], - }), - - depositReject: builder.mutation({ - query: ({ id, data }) => ({ - url: `/deposit/admin/rejected/${id}`, - method: "PATCH", - body: data, - }), - invalidatesTags: ["getDepositRequest", "getDepositHistory"], - }), - - getDepositHistory: builder.query({ - query: ({page, size}) => `/deposit/admin/history?page=${page}&size=${size}`, - providesTags: ["getDepositHistory"], - }), - }), -}); - -// Export hooks for usage in functional components -export const { - useGetDepositRequestQuery, - useGetDepositRequestByIdQuery, - useUpdateDepositRequestMutation, - useDepositRejectMutation, - useGetDepositHistoryQuery, -} = depositRequest; diff --git a/src/Services/deposite.service.js b/src/Services/deposite.service.js deleted file mode 100644 index a782d91..0000000 --- a/src/Services/deposite.service.js +++ /dev/null @@ -1,101 +0,0 @@ -//sponser.service -// Need to use the React-specific entry point to import createApi -import { createApi, fetchBaseQuery } from "@reduxjs/toolkit/query/react"; -import { api } from "./api.service"; - -const baseUrl = api?.defaults.baseURL; - -// const baseUrl = `${import.meta.env.VITE_API_BASE_URL}/${import.meta.env.VITE_API_VERSION}` - -// Define a service using a base URL and expected endpoints -export const deposite = createApi({ - reducerPath: "deposite", - baseQuery: fetchBaseQuery({ baseUrl: baseUrl }), - tagTypes: ["gtDeposite"], - endpoints: (builder) => ({ - - - - // ======[Get All]===== - - getSponserMaster: builder.query({ - query: ({ page, size }) => `/sponsor/admin?page=${page}&size=${size}`, - providesTags: ["getSponser"], - }), - - - // ========[Get Active]======== - - getActiveSponserMaster: builder.query({ - query: () => `/sponsor/admin/active`, - providesTags: ["getSponser"], - }), - - getSponserMasterActive: builder.query({ - query: () => "/sponsor/admin/active", - }), - - - // ======[Get ID]===== - - getSponserById: builder.query({ - query: (id) => `/sponsor/admin/${id}`, - providesTags: ["getSponser"], - }), - - // ========[Toggle Status]======== - - toggleStatus: builder.mutation({ - query: ({ id }) => ({ - url: `/sponsor/admin/toggle-status/${id}`, - method: "PATCH", - }), - invalidatesTags: ["getSponser"], - }), - - // ========[Create Sponser]======== - - createSponser: builder.mutation({ - query: (data) => ({ - url: `/sponsor/admin`, - method: "POST", - body: data, - }), - invalidatesTags: ["getSponser"], - }), - - // ========[Update Sponser]======== - - updateSponser: builder.mutation({ - query: ({ data, id }) => ({ - url: `/sponsor/admin/${id}`, - method: "PATCH", - body: data, - }), - invalidatesTags: ["getSponser"], - }), - - // ========[Delete Sponser]======== - - deleteSponser: builder.mutation({ - query: (id) => ({ - url: `/sponsor/admin/delete/${id}`, - method: "DELETE", - }), - invalidatesTags: ["getSponser"], - }), - - }), -}); - -// Export hooks for usage in functional components -export const { - useGetSponserMasterQuery, - useGetSponserMasterActiveQuery, - useToggleStatusMutation, - useCreateSponserMutation, - useUpdateSponserMutation, - useGetSponserByIdQuery, - useDeleteSponserMutation, - useGetActiveSponserMasterQuery -} = sponserMaster; diff --git a/src/Services/drawal.request.service.js b/src/Services/drawal.request.service.js deleted file mode 100644 index 11c87c1..0000000 --- a/src/Services/drawal.request.service.js +++ /dev/null @@ -1,56 +0,0 @@ -// investorDetails.service.js -import { createApi, fetchBaseQuery } from "@reduxjs/toolkit/query/react"; -// import { api } from "./api.service"; -import { baseQuery } from "./token.serivce"; - -// const baseUrl = api?.defaults.baseURL; - -// Define a service using a base URL and expected endpoints -export const drawalRequest = createApi({ - reducerPath: "drawalRequest", - baseQuery: baseQuery, - tagTypes: ["getDrawalRequest", "getDepositHistory"], - endpoints: (builder) => ({ - - getDrawalRequest: builder.query({ - query: () => `/withdrawal/admin`, - providesTags: ["getDrawalRequest"], - }), - - getDrawalRequestById: builder.query({ - query: (id) => `/withdrawal/admin/getById/${id}`, - }), - - updateDrawalRequest: builder.mutation({ - query: ({ id, data }) => ({ - url: `/withdrawal/admin/updateApprove/${id}`, - method: "PATCH", - body: data, - }), - invalidatesTags: ["getDrawalRequest", "getDepositHistory"], - }), - - depositReject: builder.mutation({ - query: ({ id, data }) => ({ - url: `/deposit/admin/rejected/${id}`, - method: "PATCH", - body: data, - }), - invalidatesTags: ["getDepositRequest", "getDepositHistory"], - }), - - getDrawalHistory: builder.query({ - query: () => `/withdrawal/admin/history`, - providesTags: ["getDepositHistory"], - }), - }), -}); - -// Export hooks for usage in functional components -export const { - useGetDrawalRequestQuery, - useUpdateDrawalRequestMutation, - useGetDrawalRequestByIdQuery, - useDepositRejectMutation, - useGetDrawalHistoryQuery -} = drawalRequest; diff --git a/src/Services/exchange.rate.service.js b/src/Services/exchange.rate.service.js deleted file mode 100644 index 79c40bb..0000000 --- a/src/Services/exchange.rate.service.js +++ /dev/null @@ -1,49 +0,0 @@ -// exchangeRate.service.js -import { createApi, fetchBaseQuery } from "@reduxjs/toolkit/query/react"; -// import { api } from "./api.service"; -import { baseQuery } from "./token.serivce"; - -// const baseUrl = api?.defaults.baseURL; - -// Define a service using a base URL and expected endpoints -export const exchangeRate = createApi({ - reducerPath: "exchangeRate", - baseQuery: baseQuery, - tagTypes: ["getAllExchangeRate", "getExchangeById"], - - endpoints: (builder) => ({ - - getAllExchangeRates: builder.query({ - query: ({ page, size }) => - `/currencyExchange/admin?page=${page}&size=${size}`, - providesTags: ["getAllExchangeRate"], - }), - - getExchangeRateById: builder.query({ - query: (id) => `/currencyExchange/admin/${id}`, - providesTags: ["getExchangeById"], - }), - - updateExchangeRate: builder.mutation({ - query: ({ data, id }) => ({ - url: `/currencyExchange/admin/${id}`, - method: "PATCH", - body: data, - }), - invalidatesTags: ["getAllExchangeRate"], - }), - - getCurrencyHistoryById: builder.query({ - query: (id) => `/currencyExchange/admin/history/${id}`, - providesTags: ["getAllExchangeRate"], - }), - }), -}); - -// Export hooks for usage in functional components -export const { - useGetAllExchangeRatesQuery, - useGetExchangeRateByIdQuery, - useUpdateExchangeRateMutation, - useGetCurrencyHistoryByIdQuery, -} = exchangeRate; diff --git a/src/Services/investment.documents.service.js b/src/Services/investment.documents.service.js deleted file mode 100644 index ddc439b..0000000 --- a/src/Services/investment.documents.service.js +++ /dev/null @@ -1,61 +0,0 @@ -// io.service.js -import { createApi, fetchBaseQuery } from "@reduxjs/toolkit/query/react"; -// import { api } from "./api.service"; -import { baseQuery } from "./token.serivce"; - -// const baseUrl = api?.defaults.baseURL; - -export const ioService = createApi({ - reducerPath: "ioService", - baseQuery: baseQuery, - tagTypes: ["getInvestmentDocuments"], - - - - endpoints: (builder) => ({ - // =====[get] - getInvestmentDocuments: builder.query({ - query: ({id}) => `/io/admin/document/${id}`, - providesTags: ["getInvestmentDocuments"], - }), - - - - - - - // =====[create] - createInvestmentDocuments: builder.mutation({ - query: ({data, id}) => ({ - url: `/io/admin/document/${id}`, - method: "POST", - body: data, - }), - - invalidatesTags: ["getInvestmentDocuments"], - }), - - - - updateIO: builder.mutation({ - query: ({ data, id }) => ({ - url: `/io/admin/${id}`, - method: "PATCH", - body: data, - }), - invalidatesTags: ["getInvestmentDocuments"], - }), - - - - - - - }), -}); - -// Export hooks for usage in functional components -export const { - useCreateInvestmentDocumentsMutation, -} = - ioService; diff --git a/src/Services/investment.type.service.js b/src/Services/investment.type.service.js deleted file mode 100644 index 1dbc1e1..0000000 --- a/src/Services/investment.type.service.js +++ /dev/null @@ -1,72 +0,0 @@ -// // investmentType.service.js -// import { createApi, fetchBaseQuery } from "@reduxjs/toolkit/query/react"; -// // import { api } from "./api.service"; -// import { baseQuery } from "./token.serivce"; - -// // const baseUrl = api?.defaults.baseURL; - -// // Define a service using a base URL and expected endpoints -// export const investmentType = createApi({ -// reducerPath: "investmentType", -// baseQuery: baseQuery, -// tagTypes: ["getInvestmentType", "getInvestmentTypeID"], -// endpoints: (builder) => ({ - -// // ========[Get All]========= - -// getInvestmentTypes: builder.query({ -// query: ({ page, size }) => -// `/investmentType/admin?page=${page}&size=${size}`, -// providesTags: ["getInvestmentType"], -// }), - -// // ========[Get ID]========= - -// getInvestmentTypeById: builder.query({ -// query: (id) => `/investmentType/admin/${id}`, -// providesTags: ["getInvestmentTypeID"], -// }), - -// // ========[Create Investment]======== - -// createInvestmentType: builder.mutation({ -// query: (data) => ({ -// url: `/investmentType/admin/`, -// method: "POST", -// body: data, -// }), -// invalidatesTags: ["getInvestmentType"], -// }), - -// // ========[Update Investment]======= - -// updateInvestmentType: builder.mutation({ -// query: ({ data, id }) => ({ -// url: `/investmentType/admin/${id}`, -// method: "PATCH", -// body: data, -// }), -// invalidatesTags: ["getInvestmentTypeID", "getInvestmentType"], -// }), - -// // ========[Delete Investment]======= - -// deleteInvestmentType: builder.mutation({ -// query: (id) => ({ -// url: `/investmentType/admin/delete/${id}`, -// method: "DELETE", -// }), -// invalidatesTags: ["getInvestmentType"], -// }), - -// }), -// }); - -// // Export hooks for usage in functional components -// export const { -// useGetInvestmentTypesQuery, -// useGetInvestmentTypeByIdQuery, -// useCreateInvestmentTypeMutation, -// useUpdateInvestmentTypeMutation, -// useDeleteInvestmentTypeMutation, -// } = investmentType; diff --git a/src/Services/investor.details.service.js b/src/Services/investor.details.service.js deleted file mode 100644 index e77d6a7..0000000 --- a/src/Services/investor.details.service.js +++ /dev/null @@ -1,42 +0,0 @@ -// investorDetails.service.js -import { createApi, fetchBaseQuery } from "@reduxjs/toolkit/query/react"; -// import { api } from "./api.service"; -import { baseQuery } from "./token.serivce"; - -// const baseUrl = api?.defaults.baseURL; - -// Define a service using a base URL and expected endpoints -export const investorDetails = createApi({ - reducerPath: "investorDetails", - baseQuery: baseQuery, - tagTypes: [], - endpoints: (builder) => ({ - getInvestors: builder.query({ - query: ({ page, size }) => - `/investorDetails/admin?page=${page}&size=${size}`, - providesTags: ["getInvestors"], - }), - - // =====[get investment details ] - getInvestorsDetailsById: builder.query({ - query: (id) => `/investorDetails/admin/byId/${id}`, - providesTags: ["getInvestors"], - }), - - // =====[get investment details ] - getInvestorsDetailsById_InInvCur: builder.query({ - query: ({ id, currencyIn }) => - currencyIn - ? `/investorDetails/admin/byId/${id}?currencyIn=InvCur` - : `/investorDetails/admin/byId/${id}`, - providesTags: ["getInvestors"], - }), - }), -}); - -// Export hooks for usage in functional components -export const { - useGetInvestorsQuery, - useGetInvestorsDetailsByIdQuery, - useGetInvestorsDetailsById_InInvCurQuery, -} = investorDetails; diff --git a/src/Services/investor.transaction.service.js b/src/Services/investor.transaction.service.js deleted file mode 100644 index 8277f26..0000000 --- a/src/Services/investor.transaction.service.js +++ /dev/null @@ -1,23 +0,0 @@ -// investorTransaction.service.js -import { createApi, fetchBaseQuery } from "@reduxjs/toolkit/query/react"; -import { baseQuery } from "./token.serivce"; - -// const baseUrl = import.meta.env.VITE_API_BASE_URL + "/api"; - -// Define a service using a base URL and expected endpoints -export const investorTransaction = createApi({ - reducerPath: "investorTransaction", - baseQuery: baseQuery, - tagTypes: [], - endpoints: (builder) => ({ - getTransactions: builder.query({ - query: () => '/getTransactions', - }), - getTransactionById: builder.query({ - query: (id) => `/getTransaction/${id}`, - }), - }), -}); - -// Export hooks for usage in functional components -export const { useGetTransactionsQuery, useGetTransactionByIdQuery } = investorTransaction; diff --git a/src/Services/io.service.js b/src/Services/io.service.js deleted file mode 100644 index 9ffe66e..0000000 --- a/src/Services/io.service.js +++ /dev/null @@ -1,493 +0,0 @@ -// io.service.js -import { createApi, fetchBaseQuery } from "@reduxjs/toolkit/query/react"; -// import { api } from "./api.service"; -import { baseQuery } from "./token.serivce"; - -// const baseUrl = api?.defaults.baseURL; -// Define a service using a base URL and expected endpoints -export const ioService = createApi({ - reducerPath: "ioService", - baseQuery: baseQuery, - tagTypes: [ - "prePopulate", - "getIO", - "getKeyMerits", - "getArtifactsVideo", - "getInvestmentDocuments", - "getIOById", - "getSponser", - "getInvestmentType", - "getInvestmentTypeID" - ], - endpoints: (builder) => ({ - // =====[get prepopulate data] - getIOprepopulateData: builder.query({ - query: () => `/io/admin/pre-populate`, - providesTags: ["prePopulate"], - }), - - // =====[get] - getIOs: builder.query({ - query: ({ page, size }) => `/io/admin?page=${page}&size=${size}`, - providesTags: ["getIO"], - }), - - getIOById: builder.query({ - query: (id) => ({ url: `/io/admin/${id}` }), - providesTags: ["getIOById"], - }), - - // =====[create] - createIO: builder.mutation({ - query: (data) => ({ - url: `/io/admin`, - method: "POST", - body: data, - }), - invalidatesTags: ["getIO"], - }), - - updateIO: builder.mutation({ - query: ({ data, id }) => ({ - url: `/io/admin/${id}`, - method: "PATCH", - body: data, - }), - invalidatesTags: ["getIOById", "getIO", "prePopulate"], - }), - - // =====[Key Merits] - getKeyMerits: builder.query({ - query: (id) => `/io/admin/key-merits/${id}`, - providesTags: ["getKeyMerits"], - }), - - createKeyMerits: builder.mutation({ - query: ({ data, id }) => ({ - url: `/io/admin/key-merits/${id}`, - method: "POST", - body: data, - // No need to manually set 'Content-Type' - }), - invalidatesTags: ["getIOById"], - }), - - deleteKeyMerits: builder.mutation({ - query: (id) => ({ - url: `/io/admin/key-merits/hard-delete/${id}`, - method: "DELETE", - }), - invalidatesTags: ["getIOById"], - }), - - updateKeyMerits: builder.mutation({ - query: ({ data, id }) => ({ - url: `/io/admin/key-merits/byId/${id}`, - method: "PATCH", - body: data, - }), - invalidatesTags: ["getIOById"], - }), - - // =====[getIODocument] - createInvestmentDocuments: builder.mutation({ - query: ({ data, id }) => ({ - url: `/io/admin/document/${id}`, - method: "POST", - body: data, - }), - - invalidatesTags: ["getIOById"], - }), - - updateInvestmentDocuments: builder.mutation({ - query: ({ data, id }) => ({ - url: `/io/admin/document/byId/${id}`, - method: "PATCH", - body: data, - }), - invalidatesTags: ["getIOById"], - }), - - getInvestmentDocuments: builder.query({ - query: (id) => `/io/admin/document/${id}`, - providesTags: ["getInvestmentDocuments"], - }), - - deleteIODocs: builder.mutation({ - query: (id) => ({ - url: `/io/admin/document/hard-delete/${id}`, - method: "DELETE", - }), - invalidatesTags: ["getIOById"], - }), - - // =====[Artifacts] - getArtifactsVideo: builder.query({ - query: (id) => `/io/artifact/artifactVideo/${id}`, - providesTags: ["getArtifactsVideo"], - }), - - // =====[createImageArtifacts] - createImageArtifacts: builder.mutation({ - query: ({ data, id }) => ({ - url: `/io/admin/artifact/image/${id}`, - method: "POST", - body: data, - }), - - invalidatesTags: ["getIOById"], - }), - - updateImageArtifacts: builder.mutation({ - query: ({ data, id }) => ({ - url: `/io/admin/artifact/image/byId/${id}`, - method: "PATCH", - body: data, - }), - invalidatesTags: ["getIOById"], - }), - - // =====[createVideoArtifacts] - createVideoArtifacts: builder.mutation({ - query: ({ data, id }) => ({ - url: `/io/admin/artifact/video/${id}`, - method: "POST", - body: data, - }), - - invalidatesTags: ["getIOById"], - }), - - deleteVideoArtifacts: builder.mutation({ - query: (id) => ({ - url: `/io/admin/artifact/video/byId/${id}`, - method: "DELETE", - }), - invalidatesTags: ["getIOById"], - }), - - deleteImageArtifacts: builder.mutation({ - query: (id) => ({ - url: `/io/admin/artifact/image/byId/${id}`, - method: "DELETE", - }), - invalidatesTags: ["getIOById"], - }), - - updateVideoArtifacts: builder.mutation({ - query: ({ data, id }) => ({ - url: `/io/admin/artifact/video/byId/${id}`, - method: "PATCH", - body: data, - }), - invalidatesTags: ["getIOById"], - }), - - updateStatusIo: builder.mutation({ - query: ({ data, id }) => ({ - url: `/io/admin/transaction/${id}/update-status/`, - method: "POST", - body: data, - }), - invalidatesTags: ["getIOById", "getIO"], - }), - - createIoCash: builder.mutation({ - query: ({ data, id }) => ({ - url: `/io/admin/transaction/${id}/io-cash/`, - method: "POST", - body: data, - }), - - invalidatesTags: ["getIOById"], - }), - - createIoNav: builder.mutation({ - query: ({ data, id }) => ({ - url: `/io/admin/transaction/${id}/io-nav/`, - method: "POST", - body: data, - }), - - invalidatesTags: ["getIOById"], - }), - - // =====[ Amount Investment ] ====== - amountIvestment: builder.mutation({ - query: ({ data, id }) => ({ - url: `/io/admin/transaction/${id}/amount-invested`, - - method: "POST", - body: data, - }), - invalidatesTags: ["getIOById"], - }), - - // ======== [ Distribution Transaction ] ======== - - getDistributionInvestor: builder.mutation({ - query: ({ id, data }) => ({ - url: `/io/admin/transaction/${id}/calculate-distribution-amt`, - method: "POST", - body: data, - }), - invalidatesTags: ["getIOById"], - }), - - getDistributedToInvestor: builder.mutation({ - query: ({ id, data }) => ({ - url: `/io/admin/transaction/${id}/distributed-to-investor`, - method: "POST", - body: data, - }), - invalidatesTags: ["getIOById"], - }), - - updateExitToInvestor: builder.mutation({ - query: ({ id, data }) => ({ - url: `/io/admin/transaction/${id}/exit`, - method: "POST", - body: data, - }), - invalidatesTags: ["getIOById"], - }), - - - -// ==============[ Displaye Orders ]=============== - - setDisplayOrder: builder.mutation({ - query: ({ data }) => ({ - url: `/io/admin/key-merits/resetDisplayOrder`, - method: "PATCH", - body: data, - }), - invalidatesTags: ["getIOById"], - }), - - setDisplayOrderIODocuments: builder.mutation({ - query: ({ data }) => ({ - url: `/io/admin/document/resetDisplayOrder`, - method: "PATCH", - body: data, - }), - invalidatesTags: ["getIOById"], - }), - - setDisplayOrderIOArtifactsImage: builder.mutation({ - query: ({ data }) => ({ - url: `/io/admin/artifact/image/resetDisplayOrder`, - method: "PATCH", - body: data, - }), - invalidatesTags: ["getIOById"], - }), - - setDisplayOrderIOArtifactsVideo: builder.mutation({ - query: ({ data }) => ({ - url: `/io/admin/artifact/video/resetDisplayOrder`, - method: "PATCH", - body: data, - }), - invalidatesTags: ["getIOById"], - }), - - // ========[Create Sponser]======== - - createSponser: builder.mutation({ - query: (data) => ({ - url: `/sponsor/admin`, - method: "POST", - body: data, - }), - invalidatesTags: ["getSponser","prePopulate"], - }), - - // ========[Update Sponser]======== - - updateSponser: builder.mutation({ - query: ({ data, id }) => ({ - url: `/sponsor/admin/${id}`, - method: "PATCH", - body: data, - }), - invalidatesTags: ["getSponser","prePopulate"], - }), - - // ======[Get All]===== - - getSponserMaster: builder.query({ - query: ({ page, size }) => `/sponsor/admin?page=${page}&size=${size}`, - providesTags: ["getSponser"], - }), - - // ========[Delete Sponser]======== - - deleteSponser: builder.mutation({ - query: (id) => ({ - url: `/sponsor/admin/delete/${id}`, - method: "DELETE", - }), - invalidatesTags: ["getSponser"], - }), - - // ========[Get Active]======== - - getActiveSponserMaster: builder.query({ - query: () => `/sponsor/admin/active`, - }), - - getSponserMasterActive: builder.query({ - query: () => "/sponsor/admin/active", - }), - - // ======[Get ID]===== - - getSponserById: builder.query({ - query: (id) => `/sponsor/admin/${id}`, - }), - - // ========[Get Active]======== - - getActiveSponserMaster: builder.query({ - query: () => `/sponsor/admin/active`, - }), - - - - -// ===============================[ Investment Type ]=================================== - - - // ========[Get All]========= - - getInvestmentTypes: builder.query({ - query: ({ page, size }) => - `/investmentType/admin?page=${page}&size=${size}`, - providesTags: ["getInvestmentType"], - }), - - // ========[Get ID]========= - - getInvestmentTypeById: builder.query({ - query: (id) => `/investmentType/admin/${id}`, - providesTags: ["getInvestmentTypeID"], - }), - - // ========[Create Investment]======== - - createInvestmentType: builder.mutation({ - query: (data) => ({ - url: `/investmentType/admin/`, - method: "POST", - body: data, - }), - invalidatesTags: ["getInvestmentType", "prePopulate"], - }), - - // ========[Update Investment]======= - - updateInvestmentType: builder.mutation({ - query: ({ data, id }) => ({ - url: `/investmentType/admin/${id}`, - method: "PATCH", - body: data, - }), - invalidatesTags: ["getInvestmentTypeID", "getInvestmentType", "prePopulate"], - }), - - // ========[Delete Investment]======= - - deleteInvestmentType: builder.mutation({ - query: (id) => ({ - url: `/investmentType/admin/delete/${id}`, - method: "DELETE", - }), - invalidatesTags: ["getInvestmentType", 'prePopulate'], - }), - - - - - - - - - - - - - - - - }), -}); - -// Export hooks for usage in functional components -export const { - useGetIOprepopulateDataQuery, - - useGetIOsQuery, - useGetIOByIdQuery, - useCreateIOMutation, - useUpdateIOMutation, - - useGetKeyMeritsQuery, - useCreateKeyMeritsMutation, - useDeleteKeyMeritsMutation, - useUpdateKeyMeritsMutation, - - useGetInvestmentDocumentsQuery, - useCreateInvestmentDocumentsMutation, - useDeleteIODocsMutation, - useUpdateInvestmentDocumentsMutation, - - useCreateImageArtifactsMutation, - useUpdateImageArtifactsMutation, - useUpdateVideoArtifactsMutation, - - useGetArtifactsVideoQuery, - useCreateVideoArtifactsMutation, - useDeleteVideoArtifactsMutation, - useDeleteImageArtifactsMutation, - - - useSetDisplayOrderMutation, - useSetDisplayOrderIODocumentsMutation, - useSetDisplayOrderIOArtifactsImageMutation, - useSetDisplayOrderIOArtifactsVideoMutation, - - useCreateIoCashMutation, - useCreateIoNavMutation, - - useUpdateStatusIoMutation, - - useAmountIvestmentMutation, - - useGetDistributionInvestorMutation, - - useGetDistributedToInvestorMutation, - useUpdateExitToInvestorMutation, - - -// ==============[ Sponser ]=============== - useGetSponserMasterQuery, - useGetSponserMasterActiveQuery, - useCreateSponserMutation, - useUpdateSponserMutation, - useGetSponserByIdQuery, - useDeleteSponserMutation, - useGetActiveSponserMasterQuery, - - - // ============[ Investment Type ]======== - - - useGetInvestmentTypesQuery, - useGetInvestmentTypeByIdQuery, - useCreateInvestmentTypeMutation, - useUpdateInvestmentTypeMutation, - useDeleteInvestmentTypeMutation, - -} = ioService; diff --git a/src/Services/register.corporate.service.js b/src/Services/register.corporate.service.js new file mode 100644 index 0000000..fb4ec6a --- /dev/null +++ b/src/Services/register.corporate.service.js @@ -0,0 +1,38 @@ +// investorDetails.service.js +import { createApi } from "@reduxjs/toolkit/query/react"; +// import { api } from "./api.service"; +import { baseQuery } from "./token.serivce"; + +// const baseUrl = api?.defaults.baseURL; + +// Define a service using a base URL and expected endpoints +export const registerCorporate = createApi({ + reducerPath: "registerCorporate", + baseQuery: baseQuery, + tagTypes: ["getAllCorp"], + + endpoints: (builder) => ({ + + + getAllCorp: builder.query({ + // query: (searchData) => `/corporate/admin`, + query: (searchData) => `/corporate/admin/?search_data=${searchData}?page=${1}&size=${100}`, + providesTags: ["getAllCorp"], + }), + + + // =====[create] + corporateQuickAdd: builder.mutation({ + query: (data) => ({ + url: `/corporate/admin/quick-add`, + method: "POST", + body: data, + }), + invalidatesTags: ["getAllCorp"], + }), + + }), +}); + +// Export hooks for usage in functional components +export const { useCorporateQuickAddMutation, useGetAllCorpQuery } = registerCorporate; diff --git a/src/Services/sponser.service.js b/src/Services/sponser.service.js deleted file mode 100644 index c2e5a82..0000000 --- a/src/Services/sponser.service.js +++ /dev/null @@ -1,105 +0,0 @@ -// //sponser.service -// // Need to use the React-specific entry point to import createApi -// import { createApi, fetchBaseQuery } from "@reduxjs/toolkit/query/react"; -// // import { api } from "./api.service"; -// import { baseQuery } from "./token.serivce"; -// import { ioService } from "./io.service"; - -// // const baseUrl = api?.defaults.baseURL; - - - -// // const baseUrl = `${import.meta.env.VITE_API_BASE_URL}/${import.meta.env.VITE_API_VERSION}` - - - -// // Define a service using a base URL and expected endpoints -// export const sponserMaster = createApi({ -// reducerPath: "sponserMaster", -// baseQuery: baseQuery, -// tagTypes: ["getSponser", "prePopulate"], -// endpoints: (builder) => ({ - - - -// // ======[Get All]===== - -// getSponserMaster: builder.query({ -// query: ({ page, size }) => `/sponsor/admin?page=${page}&size=${size}`, -// providesTags: ["getSponser"], -// }), - - -// // ========[Get Active]======== - -// getActiveSponserMaster: builder.query({ -// query: () => `/sponsor/admin/active`, -// }), - -// getSponserMasterActive: builder.query({ -// query: () => "/sponsor/admin/active", -// }), - - -// // ======[Get ID]===== - -// getSponserById: builder.query({ -// query: (id) => `/sponsor/admin/${id}`, -// }), - -// // ========[Toggle Status]======== - -// toggleStatus: builder.mutation({ -// query: ({ id }) => ({ -// url: `/sponsor/admin/toggle-status/${id}`, -// method: "PATCH", -// }), -// invalidatesTags: ["getSponser"], -// }), - -// // ========[Create Sponser]======== - -// createSponser: builder.mutation({ -// query: (data) => ({ -// url: `/sponsor/admin`, -// method: "POST", -// body: data, -// }), -// invalidatesTags: ["getSponser","prePopulate"], -// }), - -// // ========[Update Sponser]======== - -// updateSponser: builder.mutation({ -// query: ({ data, id }) => ({ -// url: `/sponsor/admin/${id}`, -// method: "PATCH", -// body: data, -// }), -// invalidatesTags: ["getSponser"], -// }), - -// // ========[Delete Sponser]======== - -// deleteSponser: builder.mutation({ -// query: (id) => ({ -// url: `/sponsor/admin/delete/${id}`, -// method: "DELETE", -// }), -// invalidatesTags: ["getSponser"], -// }), - -// }), -// }); - -// // Export hooks for usage in functional components -// export const { -// useGetSponserMasterQuery, -// useGetSponserMasterActiveQuery, -// useToggleStatusMutation, -// useCreateSponserMutation, -// useUpdateSponserMutation, -// useGetSponserByIdQuery, -// useDeleteSponserMutation, -// useGetActiveSponserMasterQuery -// } = sponserMaster; diff --git a/src/Services/token.serivce.js b/src/Services/token.serivce.js index b21936d..01dfb5b 100644 --- a/src/Services/token.serivce.js +++ b/src/Services/token.serivce.js @@ -1,21 +1,6 @@ import { createApi, fetchBaseQuery } from "@reduxjs/toolkit/query/react"; import Cookies from "js-cookie"; -// Define a base query function with RTK Query -// export const baseQuery = fetchBaseQuery({ -// baseUrl: 'https://sprint4.tanami.betadelivery.com/api/v1', -// prepareHeaders: (headers) => { -// const token = localStorage.getItem('accessToken'); -// if (token) { -// headers.set('x-auth-token', `${token}`); -// } -// return headers; -// }, -// }); - -// Define a base query function with token refresh logic - -console.log(import.meta.env.VITE_BASE_URL); export const baseQuery = async (args, api, extraOptions) => { let result = await fetchBaseQuery({ baseUrl: import.meta.env.VITE_BASE_URL, @@ -137,6 +122,14 @@ export const apiSlice = createApi({ }), }), + setOtp: builder.mutation({ + query: (data) => ({ + url: "/auth/admin/verify-otp", + method: "POST", + body: data , + }), + }), + @@ -157,4 +150,4 @@ export const apiSlice = createApi({ }), }); -export const { useLoginMutation, useRefreshTokenMutation, useForgotPasswordMutation, useResetPasswordMutation,useResendOtpMutation } = apiSlice; +export const { useLoginMutation, useRefreshTokenMutation, useForgotPasswordMutation, useResetPasswordMutation,useResendOtpMutation, useSetOtpMutation } = apiSlice; diff --git a/src/Store/Store.js b/src/Store/Store.js index 5de50f9..240f5dd 100644 --- a/src/Store/Store.js +++ b/src/Store/Store.js @@ -1,37 +1,13 @@ import { configureStore } from "@reduxjs/toolkit"; import { setupListeners } from "@reduxjs/toolkit/query"; -// import { sponserMaster } from "../Services/sponser.service"; -// import { investmentType } from "../Services/investment.type.service"; -import { exchangeRate } from "../Services/exchange.rate.service"; -import { ioService } from "../Services/io.service"; -import { investorDetails } from "../Services/investor.details.service"; -import { investorTransaction } from "../Services/investor.transaction.service"; -// import { api } from "../Services/api.service"; -// import { keyMerits } from "../Services/Key.merits.service"; -import { bankDetails } from "../Services/bank.details.service"; -import { contact } from "../Services/contact.service"; -import { depositRequest } from "../Services/deposit.request.service"; import { apiSlice, baseQuery } from "../Services/token.serivce"; -import { drawalRequest } from "../Services/drawal.request.service"; -import { deleteRequest } from "../Services/delete.request.service"; -import { banInvestorDetails } from "../Services/ban.investor.service"; +import { registerCorporate } from "../Services/register.corporate.service"; export const store = configureStore({ reducer: { [apiSlice.reducerPath]: apiSlice.reducer, - // [sponserMaster.reducerPath]: sponserMaster.reducer, - // [investmentType.reducerPath]: investmentType.reducer, - [exchangeRate.reducerPath]: exchangeRate.reducer, - [ioService.reducerPath]: ioService.reducer, - [investorDetails.reducerPath]: investorDetails.reducer, - [investorTransaction.reducerPath]: investorTransaction.reducer, - [bankDetails.reducerPath]: bankDetails.reducer, - [contact.reducerPath]: contact.reducer, - [depositRequest.reducerPath]: depositRequest.reducer, - [drawalRequest.reducerPath]: drawalRequest.reducer, - [deleteRequest.reducerPath]: deleteRequest.reducer, - [banInvestorDetails.reducerPath]: banInvestorDetails.reducer, - // Add other reducers as needed + [registerCorporate.reducerPath]: registerCorporate.reducer, + }, middleware: (getDefaultMiddleware) => getDefaultMiddleware({ @@ -40,18 +16,7 @@ export const store = configureStore({ }, }).concat( apiSlice.middleware, - // sponserMaster.middleware, - // investmentType.middleware, - exchangeRate.middleware, - ioService.middleware, - investorDetails.middleware, - investorTransaction.middleware, - bankDetails.middleware, - contact.middleware, - depositRequest.middleware, - drawalRequest.middleware, - deleteRequest.middleware, - banInvestorDetails.middleware, + registerCorporate.middleware, ), }); diff --git a/src/assets/Whitelogo.svg b/src/assets/Whitelogo.svg new file mode 100644 index 0000000..79a2bc7 --- /dev/null +++ b/src/assets/Whitelogo.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/assets/pattern_white.png b/src/assets/pattern_white.png new file mode 100644 index 0000000000000000000000000000000000000000..fefb5ecfe1408b533de508e3bcfe079bf9c22775 GIT binary patch literal 88175 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 z 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 I+3(u_0j>h-<^TWy literal 0 HcmV?d00001