diff --git a/src/pages/PaymentRequest/PaymentRequestPage.jsx b/src/pages/PaymentRequest/PaymentRequestPage.jsx new file mode 100644 index 00000000..f530f5b0 --- /dev/null +++ b/src/pages/PaymentRequest/PaymentRequestPage.jsx @@ -0,0 +1,168 @@ +import React, { createContext, useState, useEffect, useContext } from "react"; +import Breadcrumb from "../../components/common/Breadcrumb"; +import GlobalModel from "../../components/common/GlobalModel"; +import ManagePaymentRequest from "../../components/PaymentRequest/ManagePaymentRequest"; +import ExpenseFilterPanel from "../../components/Expenses/ExpenseFilterPanel"; +import { useFab } from "../../Context/FabContext"; +import PaymentRequestList from "../../components/PaymentRequest/PaymentRequestList"; +import PaymentRequestFilterPanel from "../../components/PaymentRequest/PaymentRequestFilterPanel"; +import { defaultPaymentRequestFilter,SearchPaymentRequestSchema } from "../../components/PaymentRequest/PaymentRequestSchema"; +import ViewPaymentRequest from "../../components/PaymentRequest/ViewPaymentRequest"; +import PreviewDocument from "../../components/Expenses/PreviewDocument"; +import MakeExpense from "../../components/PaymentRequest/MakeExpense"; + +export const PaymentRequestContext = createContext(); +export const usePaymentRequestContext = () => { + const context = useContext(PaymentRequestContext); + if (!context) { + throw new Error("usePaymentRequestContext must be used within an ExpenseProvider"); + } + return context; +}; +const PaymentRequestPage = () => { + const [ManageRequest, setManageRequest] = useState({ + IsOpen: null, + RequestId: null, + }); + const [ViewRequest,setVieRequest] = useState({view:false,requestId:null}) + const { setOffcanvasContent, setShowTrigger } = useFab(); + const [filters, setFilters] = useState(defaultPaymentRequestFilter); + const [ViewDocument, setDocumentView] = useState({ + IsOpen: false, + Image: null, + }); + const [isExpenseGenerate,setIsExpenseGenerate] = useState({IsOpen: null, + RequestId: null,}) + const [modalSize,setModalSize] = useState("md") + const [search, setSearch] = useState(""); + + const contextValue = { + setManageRequest, + setVieRequest, + setDocumentView, + setModalSize, + setIsExpenseGenerate, + isExpenseGenerate + }; + + useEffect(() => { + + setShowTrigger(true); + setOffcanvasContent( + "Payment Request Filters", + + ); + + return () => { + setShowTrigger(false); + setOffcanvasContent("", null); + }; + }, []); + + return ( + +
+ {/* Breadcrumb */} + + + {/* Top Bar */} +
+
+
+
+ setSearch(e.target.value)} + /> +
+ +
+ +
+
+
+
+ + + {/* Add/Edit Modal */} + {ManageRequest.IsOpen && ( + + setManageRequest({ IsOpen: null, expenseId: null }) + } + > + + setManageRequest({ IsOpen: null, RequestId: null }) + } + /> + + )} + + {ViewRequest.view && ( + setVieRequest({ requestId: null, view: false })} + > + + + )} + {isExpenseGenerate.IsOpen && ( + setIsExpenseGenerate({IsOpen:false, requestId: null})} + > + setIsExpenseGenerate({IsOpen:false, requestId: null})} /> + + )} + + {ViewDocument.IsOpen && ( + setDocumentView({ IsOpen: false, Image: null })} + > + + + )} + +
+
+ ); +}; + +export default PaymentRequestPage; diff --git a/src/router/AppRoutes.jsx b/src/router/AppRoutes.jsx index bae2bb8f..4db795ba 100644 --- a/src/router/AppRoutes.jsx +++ b/src/router/AppRoutes.jsx @@ -56,6 +56,7 @@ import ImageGalleryPage from "../pages/Gallary/ImageGallaryPage"; import CollectionPage from "../pages/collections/CollectionPage"; import SubscriptionSummary from "../pages/Home/SubscriptionSummary"; import MakeSubscription from "../pages/Home/MakeSubscription"; +import PaymentRequestPage from "../pages/PaymentRequest/PaymentRequestPage"; const router = createBrowserRouter( [ { @@ -106,6 +107,7 @@ const router = createBrowserRouter( { path: "/gallary", element: }, { path: "/expenses/:status?/:project?", element: }, { path: "/expenses", element: }, + { path: "/payment-request", element: }, { path: "/collection", element: }, { path: "/masters", element: }, { path: "/tenants", element: },