diff --git a/package-lock.json b/package-lock.json index 2219105..8da2698 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,6 +14,7 @@ "@emotion/styled": "^11.11.5", "@hookform/resolvers": "^3.3.4", "@reduxjs/toolkit": "^2.2.3", + "apexcharts": "^3.52.0", "axios": "^1.7.2", "bootstrap": "5.3.3", "chart.js": "^4.4.3", @@ -21,6 +22,7 @@ "framer-motion": "^11.1.5", "js-cookie": "^3.0.5", "react": "^18.2.0", + "react-apexcharts": "^1.4.1", "react-beautiful-dnd": "^13.1.1", "react-chartjs-2": "^5.2.0", "react-dom": "^18.2.0", @@ -2565,6 +2567,11 @@ "vite": "^4 || ^5" } }, + "node_modules/@yr/monotone-cubic-spline": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@yr/monotone-cubic-spline/-/monotone-cubic-spline-1.0.3.tgz", + "integrity": "sha512-FQXkOta0XBSUPHndIKON2Y9JeQz5ZeMqLYZVVK93FliNBFm7LNMIZmY6FrMEB9XPcDbE2bekMbZD6kzDkxwYjA==" + }, "node_modules/@zag-js/dom-query": { "version": "0.16.0", "resolved": "https://registry.npmjs.org/@zag-js/dom-query/-/dom-query-0.16.0.tgz", @@ -2652,6 +2659,20 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/apexcharts": { + "version": "3.52.0", + "resolved": "https://registry.npmjs.org/apexcharts/-/apexcharts-3.52.0.tgz", + "integrity": "sha512-7dg0ADKs8AA89iYMZMe2sFDG0XK5PfqllKV9N+i3hKHm3vEtdhwz8AlXGm+/b0nJ6jKiaXsqci5LfVxNhtB+dA==", + "dependencies": { + "@yr/monotone-cubic-spline": "^1.0.3", + "svg.draggable.js": "^2.2.2", + "svg.easing.js": "^2.0.0", + "svg.filter.js": "^2.0.2", + "svg.pathmorphing.js": "^0.1.3", + "svg.resize.js": "^1.4.3", + "svg.select.js": "^3.0.1" + } + }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -5130,6 +5151,18 @@ "node": ">=0.10.0" } }, + "node_modules/react-apexcharts": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/react-apexcharts/-/react-apexcharts-1.4.1.tgz", + "integrity": "sha512-G14nVaD64Bnbgy8tYxkjuXEUp/7h30Q0U33xc3AwtGFijJB9nHqOt1a6eG0WBn055RgRg+NwqbKGtqPxy15d0Q==", + "dependencies": { + "prop-types": "^15.8.1" + }, + "peerDependencies": { + "apexcharts": "^3.41.0", + "react": ">=0.13" + } + }, "node_modules/react-beautiful-dnd": { "version": "13.1.1", "resolved": "https://registry.npmjs.org/react-beautiful-dnd/-/react-beautiful-dnd-13.1.1.tgz", @@ -5888,6 +5921,89 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/svg.draggable.js": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/svg.draggable.js/-/svg.draggable.js-2.2.2.tgz", + "integrity": "sha512-JzNHBc2fLQMzYCZ90KZHN2ohXL0BQJGQimK1kGk6AvSeibuKcIdDX9Kr0dT9+UJ5O8nYA0RB839Lhvk4CY4MZw==", + "dependencies": { + "svg.js": "^2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.easing.js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/svg.easing.js/-/svg.easing.js-2.0.0.tgz", + "integrity": "sha512-//ctPdJMGy22YoYGV+3HEfHbm6/69LJUTAqI2/5qBvaNHZ9uUFVC82B0Pl299HzgH13rKrBgi4+XyXXyVWWthA==", + "dependencies": { + "svg.js": ">=2.3.x" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.filter.js": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/svg.filter.js/-/svg.filter.js-2.0.2.tgz", + "integrity": "sha512-xkGBwU+dKBzqg5PtilaTb0EYPqPfJ9Q6saVldX+5vCRy31P6TlRCP3U9NxH3HEufkKkpNgdTLBJnmhDHeTqAkw==", + "dependencies": { + "svg.js": "^2.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.js": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/svg.js/-/svg.js-2.7.1.tgz", + "integrity": "sha512-ycbxpizEQktk3FYvn/8BH+6/EuWXg7ZpQREJvgacqn46gIddG24tNNe4Son6omdXCnSOaApnpZw6MPCBA1dODA==" + }, + "node_modules/svg.pathmorphing.js": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/svg.pathmorphing.js/-/svg.pathmorphing.js-0.1.3.tgz", + "integrity": "sha512-49HWI9X4XQR/JG1qXkSDV8xViuTLIWm/B/7YuQELV5KMOPtXjiwH4XPJvr/ghEDibmLQ9Oc22dpWpG0vUDDNww==", + "dependencies": { + "svg.js": "^2.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.resize.js": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/svg.resize.js/-/svg.resize.js-1.4.3.tgz", + "integrity": "sha512-9k5sXJuPKp+mVzXNvxz7U0uC9oVMQrrf7cFsETznzUDDm0x8+77dtZkWdMfRlmbkEEYvUn9btKuZ3n41oNA+uw==", + "dependencies": { + "svg.js": "^2.6.5", + "svg.select.js": "^2.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.resize.js/node_modules/svg.select.js": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/svg.select.js/-/svg.select.js-2.1.2.tgz", + "integrity": "sha512-tH6ABEyJsAOVAhwcCjF8mw4crjXSI1aa7j2VQR8ZuJ37H2MBUbyeqYr5nEO7sSN3cy9AR9DUwNg0t/962HlDbQ==", + "dependencies": { + "svg.js": "^2.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.select.js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/svg.select.js/-/svg.select.js-3.0.1.tgz", + "integrity": "sha512-h5IS/hKkuVCbKSieR9uQCj9w+zLHoPh+ce19bBYyqF53g6mnPB8sAtIbe1s9dh2S2fCmYX2xel1Ln3PJBbK4kw==", + "dependencies": { + "svg.js": "^2.6.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", diff --git a/package.json b/package.json index 301f63a..1cab514 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ "@emotion/styled": "^11.11.5", "@hookform/resolvers": "^3.3.4", "@reduxjs/toolkit": "^2.2.3", + "apexcharts": "^3.52.0", "axios": "^1.7.2", "bootstrap": "5.3.3", "chart.js": "^4.4.3", @@ -23,6 +24,7 @@ "framer-motion": "^11.1.5", "js-cookie": "^3.0.5", "react": "^18.2.0", + "react-apexcharts": "^1.4.1", "react-beautiful-dnd": "^13.1.1", "react-chartjs-2": "^5.2.0", "react-dom": "^18.2.0", diff --git a/src/Components/CurrencyInput.jsx b/src/Components/CurrencyInput.jsx new file mode 100644 index 0000000..45932c4 --- /dev/null +++ b/src/Components/CurrencyInput.jsx @@ -0,0 +1,39 @@ +import React, { forwardRef } from 'react'; +import { Input } from "@chakra-ui/react"; + +export const formatCurrency = (value) => { + if (!value) return ''; + const [integer, decimal] = value.split('.'); + const formattedInteger = integer.replace(/\B(?=(\d{3})+(?!\d))/g, ','); + return decimal ? `${formattedInteger}.${decimal}` : formattedInteger; +}; + +const CurrencyInput = forwardRef(({ value, onChange, ...props }, ref) => { + + const handleChange = (event) => { + let { value } = event.target; + + // Remove non-numeric characters except decimal point + value = value.replace(/[^0-9.]/g, ''); + + // Ensure only one decimal point + const parts = value.split('.'); + if (parts.length > 2) { + value = parts[0] + '.' + parts.slice(1).join(''); + } + + onChange(value); // Pass the raw value to parent or use it directly + }; + + return ( + + ); +}); + +export default CurrencyInput; diff --git a/src/Components/DataTable/DataTable.jsx b/src/Components/DataTable/DataTable.jsx index facf526..94be903 100644 --- a/src/Components/DataTable/DataTable.jsx +++ b/src/Components/DataTable/DataTable.jsx @@ -50,7 +50,7 @@ const DataTable = ({ const [removed] = reorderedItems.splice(result.source.index, 1); reorderedItems.splice(result.destination.index, 0, removed); setData(reorderedItems) - console.log("New Order:", reorderedItems.map((item, index) => ({ index, item }))); + // console.log("New Order:", reorderedItems.map((item, index) => ({ index, item }))); }; return ( diff --git a/src/Components/DataTable/NormalTable.jsx b/src/Components/DataTable/NormalTable.jsx index 832a16b..54da2e8 100644 --- a/src/Components/DataTable/NormalTable.jsx +++ b/src/Components/DataTable/NormalTable.jsx @@ -12,6 +12,7 @@ import { Tfoot, } from "@chakra-ui/react"; import EmptySearchList from "../EmptySearchList"; +import { TABLE_PAGINATION } from "../../Constants/Paginations"; const DataTable = ({ data, @@ -20,6 +21,9 @@ const DataTable = ({ emptyMessage, centered, }) => { + + console.log(data); + const columnWidth = data && data[0] ? `${(100 / Object.keys(data[0]).length).toFixed(2)}%` @@ -42,7 +46,7 @@ const DataTable = ({ } key={index} p={3} - width="120px" // Adjust width as needed + width="20px" // Adjust width as needed color={"#004118"} whiteSpace="normal" // Allow text to wrap wordBreak="normal" // Ensure long words break properly @@ -56,7 +60,7 @@ const DataTable = ({ {isLoading - ? Array.from({ length: 12 }).map((_, index) => ( + ? Array.from({ length: TABLE_PAGINATION?.size }).map((_, index) => ( {tableHeadRow.map((_, i) => ( { + + // Customize colors and series titles here + const [options] = useState({ + chart: { + width: 600, + type: 'donut', + }, + plotOptions: { + pie: { + startAngle: -90, + endAngle: 270, + donut: { + size: '45%' // Adjust the donut size here (percentage of chart size) + } + } + }, + labels:data?.labels, + dataLabels: { + enabled: false + }, + fill: { + type: 'gradient', + }, + colors: data?.backgroundColor, // Customize your colors here + legend: { + show: false, + position: 'right', + labels: { + colors: ['#000'], // Customize the color of the legend labels + useSeriesColors: true + } + }, + responsive: [{ + breakpoint: 480, + options: { + chart: { + width: 500 + }, + legend: { + position: 'center' + } + } + }] + }); + + return ( + + ); +}; + +export default ApexChart; diff --git a/src/Components/Doughnut/ApexLine.jsx b/src/Components/Doughnut/ApexLine.jsx new file mode 100644 index 0000000..1f1ddf9 --- /dev/null +++ b/src/Components/Doughnut/ApexLine.jsx @@ -0,0 +1,62 @@ +import React from 'react'; +import ReactApexChart from 'react-apexcharts'; + +const ApexLine = () => { + const [series] = React.useState([{ + name: 'Rate', + data: [45, 23, 70, 65, 5, 34, 32] + }]); + + const options = { + chart: { + height: 350, + type: 'line', + toolbar: { + show: false // Hide the action icons + } + }, + stroke: { + width: 5, + curve: 'smooth', + colors: ['#598369'], // Customize the line color here + markers: { + size: 6, // Size of markers + colors: ['#FF0000'], // Marker (dot) color + strokeColor: '#000000', // Stroke color of the marker + strokeWidth: 2 + } + }, + xaxis: { + type: 'category', // Change from 'datetime' to 'category' + categories: ['BH', 'KW', 'OM', 'QA', 'SA', 'UAE', 'IND'], + tickAmount: 7 + }, + title: { + text: 'Exchange rate currency', // Adjust the title if needed + align: 'left', + style: { + fontSize: '15px', + color: '#000', + fontWeight:400 + } + }, + fill: { + type: 'gradient', + gradient: { + shade: 'dark', + gradientToColors: ['#004017'], + shadeIntensity: 4, + type: 'horizontal', + opacityFrom: 1, + opacityTo: 1, + stops: [0, 100] // Gradient stops + }, + } + }; + + return ( + + ); +}; + +export default ApexLine; diff --git a/src/Components/Doughnut/DonutChart.jsx b/src/Components/Doughnut/DonutChart.jsx index 1ffa8b9..57a9e74 100644 --- a/src/Components/Doughnut/DonutChart.jsx +++ b/src/Components/Doughnut/DonutChart.jsx @@ -14,7 +14,7 @@ const DonutChart = ({ data, width = 300, height = 250 }) => { data: data.values, backgroundColor: [ '#3182ce', '#004118', '#D69E2E', '#E53E3E' ], borderColor: ['#FFF'], - borderWidth: 1, + borderWidth: 2, }, ], }; diff --git a/src/Components/Doughnut/LineChart.jsx b/src/Components/Doughnut/LineChart.jsx index 010b90f..db31867 100644 --- a/src/Components/Doughnut/LineChart.jsx +++ b/src/Components/Doughnut/LineChart.jsx @@ -70,7 +70,6 @@ const LineChart = ({ width = 300, height = 250 }) => { ] }; - console.log(data); return ( diff --git a/src/Components/DummyComponent.jsx b/src/Components/DummyComponent.jsx index 8858bb5..56f9d5a 100644 --- a/src/Components/DummyComponent.jsx +++ b/src/Components/DummyComponent.jsx @@ -12,9 +12,7 @@ const DummyComponent = () => { const handleToggle = () => { setIsSwitchOn(!isSwitchOn); if(audio.current){ - console.log("hit"); audio.current.play(); - console.log( audio.current); } }; diff --git a/src/Components/FormField.jsx b/src/Components/FormField.jsx index 6136a90..62e6710 100644 --- a/src/Components/FormField.jsx +++ b/src/Components/FormField.jsx @@ -27,6 +27,7 @@ import { Controller } from "react-hook-form"; import { TiWarning } from "react-icons/ti"; import { motion } from "framer-motion"; import { AddIcon, CloseIcon } from "@chakra-ui/icons"; +import CurrencyInput from "./CurrencyInput"; const today = new Date().toISOString().split("T")[0]; @@ -474,7 +475,7 @@ const FormField = ({ {...field} {...props} placeholder={placeHolder ? placeHolder : label} - textAlign={arabic || type === "number" ? "right" : align ? align : "left"} + textAlign={arabic ? "right" : align ? align : "left"} _placeholder={{ fontSize: "sm" }} min={type === "date" ? today : undefined} maxLength={maxLength} @@ -485,7 +486,27 @@ const FormField = ({ /> ); - } else{ + }else if(type === 'number'){ + return ( + + );} else{ return ( {Object?.entries(groupedFields, groupedFieldsTwo).map( ([section, fields], index) => ( - + {section} {/* */} - + {fields.map( ({ value, label, id, width, btn, arabic, type, align }, key) => type === "table" ? ( - +
{value?.map((item, index) => ( @@ -121,7 +121,7 @@ const FormInputView = ({
) : ( - + {label} diff --git a/src/Components/HeaderMain.jsx b/src/Components/HeaderMain.jsx index 5ab28c1..167754d 100644 --- a/src/Components/HeaderMain.jsx +++ b/src/Components/HeaderMain.jsx @@ -35,7 +35,7 @@ const HeaderMain = ({ return ( { + const countdown = getCountdownTimer(utcDateString); + console.log(countdown); + }; + + // Update countdown immediately + updateCountdown(); + + // Set up interval to update countdown every minute (60000 milliseconds) + setInterval(updateCountdown, 60000); +} + export const getFileNameFromPath = (filePath) => { const parts = filePath?.split("/"); return parts?.[parts?.length - 1]; diff --git a/src/Contexts/GlobalStateProvider.jsx b/src/Contexts/GlobalStateProvider.jsx index 8b1503a..2649016 100644 --- a/src/Contexts/GlobalStateProvider.jsx +++ b/src/Contexts/GlobalStateProvider.jsx @@ -46,7 +46,6 @@ const GlobalStateProvider = ({ children }) => { const [slideFromRight, setSlideFormRight] = useState(false); const { colorMode, toggleColorMode } = useColorMode(); const [sponser, setSponser] = useState([]); - const [ioStatus, setIoStatus] = useState([]); const [investors, setInvestors] = useState([ { @@ -1450,7 +1449,6 @@ const GlobalStateProvider = ({ children }) => { }, ]); - const [IODetails, setIODetails] = useState({}); const [depositRequest, setDepositRequest] = useState([ { @@ -1724,6 +1722,17 @@ const GlobalStateProvider = ({ children }) => { }, ]); + + + + + + + + // ==============[ prod state ]=============================== + const [IODetails, setIODetails] = useState(null); + const [ IOStatus, setIoStatus ] = useState(null) + return ( { setAcademicDocuments, iOArtifactsTwo, setIOArtifactsTwo, - ioStatus, - setIoStatus, + + + + + IOStatus, + setIoStatus }} > {children} diff --git a/src/Layout/DefaultLayout.jsx b/src/Layout/DefaultLayout.jsx index 3bebca4..b657b98 100644 --- a/src/Layout/DefaultLayout.jsx +++ b/src/Layout/DefaultLayout.jsx @@ -72,6 +72,7 @@ import shield from "../assets/shield.png"; import SplashScreen from "../Pages/SplashScreen"; import CutomBreadcrumb from "../Components/CutomBreadcrumb"; import CustomBreadcrumb from "../Components/CutomBreadcrumb"; +import { getCountdownTimer } from "../Constants/Constants"; const DashboardLayout = ({ isOnline }) => { const navigate = useNavigate(); @@ -121,6 +122,9 @@ const DashboardLayout = ({ isOnline }) => { // dispach(loginUser(false)); setIsAuthenticate(false); Cookies.remove("isAuthenticated"); + localStorage.removeItem('refreshToken') + localStorage.removeItem('accessToken') + localStorage.removeItem('refreshTokenExp') navigate("/login"); }; @@ -598,7 +602,7 @@ const DashboardLayout = ({ isOnline }) => { - + */} + {getCountdownTimer(localStorage.getItem('accessTokenExp'))} - )} diff --git a/src/Pages/Admin/BankDetails/BankDetails.jsx b/src/Pages/Admin/BankDetails/BankDetails.jsx index 8266930..cae6253 100644 --- a/src/Pages/Admin/BankDetails/BankDetails.jsx +++ b/src/Pages/Admin/BankDetails/BankDetails.jsx @@ -64,7 +64,6 @@ const BankDetails = () => { error, } = useGetBankQuery({ page: 1, size: 10 }); - console.log(bankDetails?.data); useEffect(() => { // Simulate loading @@ -115,8 +114,7 @@ const BankDetails = () => { return nameMatches; }); - - console.log(bankDetails); + const extractedArray = filteredData?.map((item) => ({ id: item?.id, diff --git a/src/Pages/Admin/Contact.jsx b/src/Pages/Admin/Contact.jsx index de72d0d..e0d2fa0 100644 --- a/src/Pages/Admin/Contact.jsx +++ b/src/Pages/Admin/Contact.jsx @@ -120,7 +120,6 @@ const Contact = () => { setIsLoading(true) try { const res = await updateContact(data) - console.log(res?.data?.statusCode); if (res?.data?.statusCode === 200) { toast({ render: () => , diff --git a/src/Pages/Dashbaord.jsx b/src/Pages/Dashbaord.jsx index a28aad1..cfeea3c 100644 --- a/src/Pages/Dashbaord.jsx +++ b/src/Pages/Dashbaord.jsx @@ -1,4 +1,4 @@ -import { Box, HStack, Icon, Text } from '@chakra-ui/react' +import { Box, HStack, Icon, position, Text, VStack } from '@chakra-ui/react' import React from 'react' import { HiOutlineChartSquareBar } from 'react-icons/hi' import { RiMoneyDollarBoxLine } from 'react-icons/ri' @@ -13,6 +13,9 @@ import { GoDotFill } from "react-icons/go"; import { useNavigate } from 'react-router-dom' import LineChart from '../Components/Doughnut/LineChart' import { PiChartLineUpDuotone } from 'react-icons/pi' +import ApexChart from '../Components/Doughnut/ApexDonut' +import ApexLine from '../Components/Doughnut/ApexLine' +import ReactApexChart from 'react-apexcharts' const Dashbaord = () => { const navigate = useNavigate() @@ -48,15 +51,61 @@ const Dashbaord = () => { values: [statusData?.draft?.length, statusData?.open?.length, statusData?.processing?.length, statusData?.closed?.length] }; + + + const series1= [{ + data: [25, 66, 41, 89, 63, 25, 44, 12, 36, 9, 54] + }] + const options1= { + chart: { + type: 'line', + position:"absolute", + right:0, + width: 100, + height: 35, + sparkline: { + enabled: true + } + }, + tooltip: { + fixed: { + enabled: false + }, + x: { + show: false + }, + y: { + title: { + formatter: function (seriesName) { + return '' + } + } + }, + marker: { + show: false + } + } + } + + + + + + + + return ( isIoPreLoading || isIoLoading || isInvestorLoading ? : - navigate("/investor-details")} boxShadow={'lg'} color={"#fff"} p={4} rounded={'xl'} w={'25%'} display={'flex'} bg={'#004118'} flexDirection={'column'} alignItems={'start'} > + navigate("/investor-details")} boxShadow={'lg'} color={"#fff"} p={4} rounded={'xl'} w={'25%'} display={'flex'} bg={'#004118'} flexDirection={'column'} alignItems={'start'} > Total Investors {investorDetails?.data?.totalItems} + + + {/* */} navigate("/view-io")} boxShadow={'lg'} bg={'#fff'} color={"#004118"} p={3} rounded={'xl'} w={'25%'} display={'flex'} flexDirection={'column'} alignItems={'start'} > @@ -77,22 +126,34 @@ const Dashbaord = () => { - - - - Exchange rate currency - + + + + Exchange rate currency + + {/* */} - + + + + + IO Status - - + + {/* */} + {/* */} + + + {/* */} + + {chartData?.labels?.map((item, index) => {item})} + - - {chartData?.labels?.map((item, index) => {item})} - + + + ) diff --git a/src/Pages/Deposit/DepositRequest/DepositRequest.jsx b/src/Pages/Deposit/DepositRequest/DepositRequest.jsx index 38dbdec..e22c959 100644 --- a/src/Pages/Deposit/DepositRequest/DepositRequest.jsx +++ b/src/Pages/Deposit/DepositRequest/DepositRequest.jsx @@ -69,7 +69,6 @@ const DepositRequest = () => { error, } = useGetDepositRequestQuery({ page: currentPage, size: pageSize }); - console.log(data?.data?.rows); useEffect(() => { // Simulate loading diff --git a/src/Pages/Deposit/DepositRequest/DepositRequestApprove.jsx b/src/Pages/Deposit/DepositRequest/DepositRequestApprove.jsx index 517ae79..f13da64 100644 --- a/src/Pages/Deposit/DepositRequest/DepositRequestApprove.jsx +++ b/src/Pages/Deposit/DepositRequest/DepositRequestApprove.jsx @@ -63,7 +63,7 @@ const DepositRequestApprove = ({ isOpen, onClose, firstField, id }) => { try { const res = await updateDepositRequest({ id ,data: formData}) - console.log(res); + if (res?.error) { toast({ @@ -86,13 +86,11 @@ const DepositRequestApprove = ({ isOpen, onClose, firstField, id }) => { } heandleOnClose(); - console.log(data); }; const handleFileChange = (event) => { const selectedFile = event.target.files[0]; setFile(selectedFile); - console.log(file); }; const { data, isLoading } = diff --git a/src/Pages/Deposit/DepositRequest/DepositRequestReject.jsx b/src/Pages/Deposit/DepositRequest/DepositRequestReject.jsx index 4e4578f..f5e6968 100644 --- a/src/Pages/Deposit/DepositRequest/DepositRequestReject.jsx +++ b/src/Pages/Deposit/DepositRequest/DepositRequestReject.jsx @@ -48,7 +48,6 @@ const DepositRequestReject = ({ isOpen, onClose, firstField ,id}) => { setIsBtnLoading(true) try { const res = await depositReject({ id ,data}) - console.log(res?.data?.statusCode); if (res?.error) { toast({ diff --git a/src/Pages/Deposit/DepositViewHistory/DepositHistory.jsx b/src/Pages/Deposit/DepositViewHistory/DepositHistory.jsx index b7dd520..058a068 100644 --- a/src/Pages/Deposit/DepositViewHistory/DepositHistory.jsx +++ b/src/Pages/Deposit/DepositViewHistory/DepositHistory.jsx @@ -63,7 +63,6 @@ const DepositHistory = () => { isLoading: depositHistoryLoading, } = useGetDepositHistoryQuery({ page: currentPage, size: pageSize }); - console.log(data?.data?.rows); useEffect(() => { // Simulate loading diff --git a/src/Pages/IO_Management/CreateIO/AddCashDetails.jsx b/src/Pages/IO_Management/CreateIO/AddCashDetails.jsx index 521eb5c..9ada2af 100644 --- a/src/Pages/IO_Management/CreateIO/AddCashDetails.jsx +++ b/src/Pages/IO_Management/CreateIO/AddCashDetails.jsx @@ -1,243 +1,248 @@ import { - Box, - Button, - Drawer, - DrawerBody, - DrawerCloseButton, - DrawerContent, - DrawerFooter, - DrawerHeader, - DrawerOverlay, - FormControl, - FormErrorMessage, - FormLabel, - Input, - Stack, - Textarea, - useToast, - } from "@chakra-ui/react"; - import * as yup from "yup"; - import React, { useState, useEffect } from "react"; - import { useForm, Controller } from "react-hook-form"; - import { yupResolver } from "@hookform/resolvers/yup"; - import CustomAlertDialog from "../../../Components/CustomAlertDialog"; - import { v4 as uuidv4 } from "uuid"; - import { useCreateVideoArtifactsMutation, useUpdateVideoArtifactsMutation } from "../../../Services/io.service"; - import { useParams } from "react-router-dom"; - import ToastBox from "../../../Components/ToastBox"; - - const investmentVideoSchema = yup.object().shape({ - transactionDate: yup.string().required("Artifact name is required"), - ioTransType_xid: yup.number().required("Artifact name is required"), - transactionAmount: yup.number().required("Artifact name is required"), - comments: yup.string().notRequired(), + Box, + Button, + Drawer, + DrawerBody, + DrawerCloseButton, + DrawerContent, + DrawerFooter, + DrawerHeader, + DrawerOverlay, + FormControl, + FormErrorMessage, + FormLabel, + Input, + Select, + Stack, + Textarea, + useToast, +} from "@chakra-ui/react"; +import * as yup from "yup"; +import React, { useState, useEffect, useContext } from "react"; +import { useForm, Controller } from "react-hook-form"; +import { yupResolver } from "@hookform/resolvers/yup"; +import CustomAlertDialog from "../../../Components/CustomAlertDialog"; +import { v4 as uuidv4 } from "uuid"; +import { useCreateIoCashMutation, useCreateVideoArtifactsMutation, useUpdateVideoArtifactsMutation } from "../../../Services/io.service"; +import { useParams } from "react-router-dom"; +import ToastBox from "../../../Components/ToastBox"; +import GlobalStateContext from "../../../Contexts/GlobalStateContext"; +import CurrencyInput from "../../../Components/CurrencyInput"; + +const cashDetails = yup.object().shape({ + transactionDate: yup.string().required("Artifact name is required"), + ioTransType_xid: yup.number().required("Artifact name is required"), + transactionAmount: yup.number().required("Artifact name is required"), + comments: yup.string().notRequired(), +}); + +const AddCashDetails = ({ isOpen, onClose, firstField, actionId, setActionId, data }) => { + const params = useParams() + const id = params?.id + const [file, setFile] = useState(""); + const [fileName, setFileName] = useState(""); + const [isLoading, setIsLoading] = useState(false) + const [alert, setAlert] = useState(false); + const toast = useToast(); + + + + // ======================[ Cotext Api ] + const { IODetails } = useContext(GlobalStateContext); + const found = data?.find((item) => item?.id === actionId); + + + const [createArtifactsVideo] = useCreateVideoArtifactsMutation() + const [updateVideoArtifacts] = useUpdateVideoArtifactsMutation() + // const { + // data + // } = useGetArtifactsQuery(id) + + const { + control, + handleSubmit, + watch, + reset, + formState: { errors }, + } = useForm({ + resolver: yupResolver(cashDetails), }); - - const AddCashDetails = ({ isOpen, onClose, firstField, actionId, setActionId, data}) => { - const params = useParams() - const id = params?.id - const [file, setFile] = useState(""); - const [fileName, setFileName] = useState(""); - const [ isLoading, setIsLoading] = useState(false) - const [alert, setAlert] = useState(false); - const toast = useToast(); - - - const found = data?.find((item) => item?.id === actionId); - console.log(found); - - const [ createArtifactsVideo ] = useCreateVideoArtifactsMutation() - const [ updateVideoArtifacts ] = useUpdateVideoArtifactsMutation() - // const { - // data - // } = useGetArtifactsQuery(id) - - const { - control, - handleSubmit, - watch, - reset, - formState: { errors }, - } = useForm({ - resolver: yupResolver(investmentVideoSchema), - }); - - - - - const onSubmit = async (data) => { - console.log(data); - - // setIsLoading(true) - - - - // try { - - - // if (found) { - // const res = await updateVideoArtifacts({data, id: found?.id}) - // if (res?.data?.statusCode === 200) { - // toast({ - // render: () => , - // }); - // setAlert(false); - // setIsLoading(false) - // handleClose(); - // } - // } else { - - // const res = await createArtifactsVideo({data, id}) - // if (res?.data?.statusCode === 200) { - // toast({ - // render: () => , - // }); - // setAlert(false); - // setIsLoading(false) - // handleClose(); - // } - - // } - - - // } catch (error) { - // console.log(error); - - // } - - }; - - - - const handleConfirm = () => { - handleSubmit(onSubmit)(); - }; - - const handleSave = () => { - handleSubmit(onSubmit)(); - }; - - const handleClose = () => { - onClose() - reset() + + + const [createIoCash] = useCreateIoCashMutation() + + + const onSubmit = async (data) => { + + setIsLoading(true) + + try { + + const res = await createIoCash({ data, id }) + if (res?.data?.statusCode === 200) { + setIsLoading(false); + toast({ + render: () => , + }); + handleClose() + }else if(res?.error?.status === 400){ + setIsLoading(false); + toast({ + render: () => , + }); + } + + + } catch (error) { + console.log(error); + } - - return ( - <> - - - - - IO Cash Details - - - - - Date Selection - ( - - )} - /> - - {errors.transactionDate?.message} - - - - - Cash transaction - ( - - )} - /> - - {errors.ioTransType_xid?.message} - - - - - - - Transaction Amount - ( - - )} - /> - - {errors.transactionAmount?.message} - - - - - - - Comments - ( -