From e2d45e54a04adb09d1a0f14f343b4300cf7bc748 Mon Sep 17 00:00:00 2001 From: pramod mahajan Date: Mon, 28 Jul 2025 13:10:18 +0530 Subject: [PATCH] hide page if have any permission for Expense --- src/pages/Expense/ExpensePage.jsx | 387 ++++++++++++++++-------------- 1 file changed, 202 insertions(+), 185 deletions(-) diff --git a/src/pages/Expense/ExpensePage.jsx b/src/pages/Expense/ExpensePage.jsx index d336bfa4..d14336ce 100644 --- a/src/pages/Expense/ExpensePage.jsx +++ b/src/pages/Expense/ExpensePage.jsx @@ -33,7 +33,11 @@ import { SearchSchema, } from "../../components/Expenses/ExpenseSchema"; import { useHasUserPermission } from "../../hooks/useHasUserPermission"; -import { CREATE_EXEPENSE } from "../../utils/constants"; +import { + CREATE_EXEPENSE, + VIEW_ALL_EXPNESE, + VIEW_SELF_EXPENSE, +} from "../../utils/constants"; const SelectDropdown = ({ label, @@ -100,12 +104,12 @@ export const useExpenseContext = () => { throw new Error("useExpenseContext must be used within an ExpenseProvider"); } return context; -} +}; const ExpensePage = () => { const [isOpen, setIsOpen] = useState(false); - const [filters,setFilter] = useState() - const IsCreatedAble = useHasUserPermission(CREATE_EXEPENSE) + const [filters, setFilter] = useState(); + const IsCreatedAble = useHasUserPermission(CREATE_EXEPENSE); const dropdownRef = useRef(null); const shouldCloseOnOutsideClick = useRef(false); const selectedProjectId = useSelector( @@ -123,7 +127,8 @@ const ExpensePage = () => { IsOpen: false, Image: null, }); - + const IsViewAll = useHasUserPermission(VIEW_ALL_EXPNESE); + const IsViewSelf = useHasUserPermission(VIEW_SELF_EXPENSE); const contextValue = { setViewExpense, setManageExpenseModal, @@ -155,26 +160,25 @@ const ExpensePage = () => { ); const onSubmit = (data) => { - setFilter(data) + setFilter(data); + }; + const isValidDate = (date) => { + return date instanceof Date && !isNaN(date); }; -const isValidDate = (date) => { - return date instanceof Date && !isNaN(date); -}; -const setDateRange = ({ startDate, endDate }) => { - const parsedStart = new Date(startDate); - const parsedEnd = new Date(endDate); - - setValue( - "startDate", - isValidDate(parsedStart) ? parsedStart.toISOString().split("T")[0] : null - ); - setValue( - "endDate", - isValidDate(parsedEnd) ? parsedEnd.toISOString().split("T")[0] : null - ); -}; + const setDateRange = ({ startDate, endDate }) => { + const parsedStart = new Date(startDate); + const parsedEnd = new Date(endDate); + setValue( + "startDate", + isValidDate(parsedStart) ? parsedStart.toISOString().split("T")[0] : null + ); + setValue( + "endDate", + isValidDate(parsedEnd) ? parsedEnd.toISOString().split("T")[0] : null + ); + }; const toggleDropdown = () => { setIsOpen((prev) => { @@ -199,19 +203,17 @@ const setDateRange = ({ startDate, endDate }) => { document.removeEventListener("mousedown", handleClickOutside); }; }, []); - const clearFilter =()=>{ - setFilter( - { - projectIds: [], - statusIds: [], - createdByIds: [], - paidById: [], - startDate: null, - endDate: null, - }) - reset() - - } + const clearFilter = () => { + setFilter({ + projectIds: [], + statusIds: [], + createdByIds: [], + paidById: [], + startDate: null, + endDate: null, + }); + reset(); + }; return ( @@ -222,167 +224,182 @@ const setDateRange = ({ startDate, endDate }) => { { label: "Expense", link: null }, ]} /> -
-
-
-
-
- setIsOpen((v) => !v)} - > - {isOpen && ( + {IsViewAll || IsViewSelf ? ( + <> +
+
+
+
- -
{ - onSubmit(data); - setIsOpen(false); - })} + setIsOpen((v) => !v)} + > + {isOpen && ( +
-
- -
- -
-
- -
- {ExpenseStatus.map((status) => ( - ( -
- { - if (e.target.checked) { - onChange([...value, status.id]); - } else { - onChange( - value.filter( - (v) => v !== status.id - ) - ); - } - }} - /> - -
- )} - /> - ))} -
-
-
- -
- - - `${item.firstName} ${item.lastName}` - } - valueKey="id" - IsLoading={empLoading} - /> - - `${item.firstName} ${item.lastName}` - } - valueKey="id" - IsLoading={empLoading} - /> -
-
- - -
- - +
+ +
+ +
+
+ +
+ {ExpenseStatus.map((status) => ( + ( +
+ { + if (e.target.checked) { + onChange([ + ...value, + status.id, + ]); + } else { + onChange( + value.filter( + (v) => v !== status.id + ) + ); + } + }} + /> + +
+ )} + /> + ))} +
+
+
+ +
+ + + `${item.firstName} ${item.lastName}` + } + valueKey="id" + IsLoading={empLoading} + /> + + `${item.firstName} ${item.lastName}` + } + valueKey="id" + IsLoading={empLoading} + /> +
+
+ + +
+ + +
+ )}
- )} +
+
+ {IsCreatedAble && ( + + )} +
-
- {IsCreatedAble && ( - - )} - -
+ + + ) : ( +
+ +

+ Access Denied: You don't have permission to perform this action. ! +

-
+ )} - {ManageExpenseModal.IsOpen && (