Refactor_Expenses #321
@ -11,20 +11,21 @@ import ConfirmModal from "../common/ConfirmModal";
|
|||||||
import { useHasUserPermission } from "../../hooks/useHasUserPermission";
|
import { useHasUserPermission } from "../../hooks/useHasUserPermission";
|
||||||
import { useSelector } from "react-redux";
|
import { useSelector } from "react-redux";
|
||||||
|
|
||||||
const ExpenseList = ({filters}) => {
|
const ExpenseList = ({ filters }) => {
|
||||||
const [deletingId, setDeletingId] = useState(null);
|
const [deletingId, setDeletingId] = useState(null);
|
||||||
const [IsDeleteModalOpen, setIsDeleteModalOpen] = useState(false);
|
const [IsDeleteModalOpen, setIsDeleteModalOpen] = useState(false);
|
||||||
const { setViewExpense, setManageExpenseModal } = useExpenseContext();
|
const { setViewExpense, setManageExpenseModal } = useExpenseContext();
|
||||||
const IsExpenseEditable = useHasUserPermission()
|
const IsExpenseEditable = useHasUserPermission();
|
||||||
const IsExpesneApprpve = useHasUserPermission(APPROVE_EXPENSE)
|
const IsExpesneApprpve = useHasUserPermission(APPROVE_EXPENSE);
|
||||||
const [currentPage, setCurrentPage] = useState(1);
|
const [currentPage, setCurrentPage] = useState(1);
|
||||||
const pageSize = 10;
|
const pageSize = 10;
|
||||||
|
|
||||||
|
|
||||||
const { mutate: DeleteExpense, isPending } = useDeleteExpense();
|
const { mutate: DeleteExpense, isPending } = useDeleteExpense();
|
||||||
const { data, isLoading, isError, isInitialLoading, error, isFetching } =
|
const { data, isLoading, isError, isInitialLoading, error, isFetching } =
|
||||||
useExpenseList(10, currentPage, filters);
|
useExpenseList(10, currentPage, filters);
|
||||||
const SelfId = useSelector((store)=>store?.globalVariables?.loginUser?.employeeInfo?.id)
|
const SelfId = useSelector(
|
||||||
|
(store) => store?.globalVariables?.loginUser?.employeeInfo?.id
|
||||||
|
);
|
||||||
|
|
||||||
const handleDelete = (id) => {
|
const handleDelete = (id) => {
|
||||||
setDeletingId(id);
|
setDeletingId(id);
|
||||||
@ -64,7 +65,7 @@ const ExpenseList = ({filters}) => {
|
|||||||
const grouped = {};
|
const grouped = {};
|
||||||
|
|
||||||
expenses.forEach((expense) => {
|
expenses.forEach((expense) => {
|
||||||
const dateKey = expense.transactionDate.split("T")[0];
|
const dateKey = expense.transactionDate.split("T")[0];
|
||||||
if (!grouped[dateKey]) grouped[dateKey] = [];
|
if (!grouped[dateKey]) grouped[dateKey] = [];
|
||||||
grouped[dateKey].push(expense);
|
grouped[dateKey].push(expense);
|
||||||
});
|
});
|
||||||
@ -123,17 +124,6 @@ const ExpenseList = ({filters}) => {
|
|||||||
>
|
>
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
{/* <th
|
|
||||||
className="sorting sorting_desc"
|
|
||||||
tabIndex="0"
|
|
||||||
aria-controls="DataTables_Table_0"
|
|
||||||
rowSpan="1"
|
|
||||||
colSpan="2"
|
|
||||||
aria-label="Date: activate to sort column ascending"
|
|
||||||
aria-sort="descending"
|
|
||||||
>
|
|
||||||
<div className="text-start ms-6">Date Time</div>
|
|
||||||
</th> */}
|
|
||||||
<th
|
<th
|
||||||
className="sorting sorting_desc d-none d-sm-table-cell"
|
className="sorting sorting_desc d-none d-sm-table-cell"
|
||||||
tabIndex="0"
|
tabIndex="0"
|
||||||
@ -199,7 +189,7 @@ const ExpenseList = ({filters}) => {
|
|||||||
</th>
|
</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody >
|
<tbody>
|
||||||
{!isInitialLoading &&
|
{!isInitialLoading &&
|
||||||
groupExpensesByDateAndStatus(items).map(
|
groupExpensesByDateAndStatus(items).map(
|
||||||
({ date, expenses }) => (
|
({ date, expenses }) => (
|
||||||
@ -208,8 +198,9 @@ const ExpenseList = ({filters}) => {
|
|||||||
<td colSpan={7} className="text-start">
|
<td colSpan={7} className="text-start">
|
||||||
<strong>{formatUTCToLocalTime(date)}</strong>
|
<strong>{formatUTCToLocalTime(date)}</strong>
|
||||||
</td>
|
</td>
|
||||||
</tr> {expenses.map((expense) => (
|
</tr>{" "}
|
||||||
<tr key={expense.id} >
|
{expenses.map((expense) => (
|
||||||
|
<tr key={expense.id}>
|
||||||
<td className="text-start d-table-cell ms-5">
|
<td className="text-start d-table-cell ms-5">
|
||||||
{expense.expensesType?.name || "N/A"}
|
{expense.expensesType?.name || "N/A"}
|
||||||
</td>
|
</td>
|
||||||
@ -259,44 +250,34 @@ const ExpenseList = ({filters}) => {
|
|||||||
></i>
|
></i>
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
<span className="cursor-pointer">
|
{(expense.status.name === "Draft" ||
|
||||||
{(expense.status.name === "Draft" ||
|
expense.status.name === "Rejected") &&
|
||||||
expense.status.name === "Rejected") &&
|
expense.createdBy.id === SelfId && (
|
||||||
expense.createdBy.id ===
|
<span className="cursor-pointer">
|
||||||
SelfId ? (
|
<i
|
||||||
<i
|
className="bx bx-edit bx-sm text-secondary"
|
||||||
className="bx bx-edit bx-sm text-secondary"
|
onClick={() =>
|
||||||
onClick={() =>
|
setManageExpenseModal({
|
||||||
setManageExpenseModal({
|
IsOpen: true,
|
||||||
IsOpen: true,
|
expenseId: expense.id,
|
||||||
expenseId: expense.id,
|
})
|
||||||
})
|
}
|
||||||
}
|
></i>
|
||||||
></i>
|
</span>
|
||||||
) : (
|
|
||||||
<i
|
|
||||||
className="bx bx-edit bx-sm"
|
|
||||||
style={{ visibility: "hidden" }}
|
|
||||||
></i>
|
|
||||||
)}
|
)}
|
||||||
</span>
|
|
||||||
|
|
||||||
<span className="cursor-pointer">
|
{expense.status.name === "Draft" &&
|
||||||
{(expense.status.name === "Draft" && expense?.createdBy?.id === SelfId ) ? (
|
expense?.createdBy?.id === SelfId && (
|
||||||
<i
|
<span className="cursor-pointer">
|
||||||
className="bx bx-trash bx-sm text-danger"
|
<i
|
||||||
onClick={() => {
|
className="bx bx-trash bx-sm text-danger"
|
||||||
setIsDeleteModalOpen(true);
|
onClick={() => {
|
||||||
setDeletingId(expense.id);
|
setIsDeleteModalOpen(true);
|
||||||
}}
|
setDeletingId(expense.id);
|
||||||
></i>
|
}}
|
||||||
) : (
|
></i>
|
||||||
<i
|
</span>
|
||||||
className="bx bx-trash bx-sm"
|
|
||||||
style={{ visibility: "hidden" }}
|
|
||||||
></i>
|
|
||||||
)}
|
)}
|
||||||
</span>
|
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@ -305,11 +286,11 @@ const ExpenseList = ({filters}) => {
|
|||||||
)
|
)
|
||||||
)}
|
)}
|
||||||
|
|
||||||
{!isInitialLoading && items.length === 0 && <tr rowSpan={8} style={{height:"200px"}}>
|
{!isInitialLoading && items.length === 0 && (
|
||||||
<td colSpan={8}>
|
<tr rowSpan={8} style={{ height: "200px" }}>
|
||||||
No Expnese Found
|
<td colSpan={8}>No Expnese Found</td>
|
||||||
</td>
|
</tr>
|
||||||
</tr>}
|
)}
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user