diff --git a/src/components/collections/CollectionList.jsx b/src/components/collections/CollectionList.jsx index 7ef961c3..bb94130e 100644 --- a/src/components/collections/CollectionList.jsx +++ b/src/components/collections/CollectionList.jsx @@ -27,16 +27,16 @@ const CollectionList = ({ fromDate, toDate, isPending, searchString }) => { const selectedProject = useSelectedProject(); const searchDebounce = useDebounce(searchString, 500); - + const { data, isLoading, isError, error } = useCollections( - ITEMS_PER_PAGE, - currentPage, + selectedProject, + searchDebounce, localToUtc(fromDate), localToUtc(toDate), - isPending, + ITEMS_PER_PAGE, + currentPage, true, - selectedProject, - searchDebounce + isPending ); const { setProcessedPayment, setAddPayment, setViewCollection } = useCollectionContext(); @@ -186,84 +186,84 @@ const CollectionList = ({ fromDate, toDate, isPending, searchString }) => { canViewCollection || canEditCollection || canCreate) && ( - -
- + +
+ -
- - )} + {/* Mark Payment */} + {isAdmin && ( +
  • + + setProcessedPayment({ + isOpen: true, + invoiceId: row.id, + }) + } + > + + Mark Payment + +
  • + )} + + )} + +
    + + )} )) ) : ( diff --git a/src/hooks/useCollections.jsx b/src/hooks/useCollections.jsx index c300462d..324c678a 100644 --- a/src/hooks/useCollections.jsx +++ b/src/hooks/useCollections.jsx @@ -2,39 +2,80 @@ import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; import { CollectionRepository } from "../repositories/ColllectionRepository"; import showToast from "../services/toastService"; +// export const useCollections = ( +// pageSize, +// pageNumber, +// fromDate, +// toDate, +// isPending, +// isActive, +// projectId, +// searchString +// ) => { +// return useQuery({ +// queryKey: [ +// "collections", +// pageSize, +// pageNumber, +// fromDate, +// toDate, +// isPending, +// isActive, +// projectId, +// searchString, +// ], + +// queryFn: async () => { +// const response = await CollectionRepository.getCollections( +// pageSize, +// pageNumber, +// fromDate, +// toDate, +// isPending, +// isActive, +// projectId, +// searchString +// ); +// return response.data; +// }, + +// keepPreviousData: true, +// staleTime: 1000 * 60 * 1, +// }); +// }; export const useCollections = ( - pageSize, - pageNumber, + projectId, + searchString, fromDate, toDate, - isPending, + pageSize, + pageNumber, isActive, - projectId, - searchString + isPending ) => { return useQuery({ queryKey: [ "collections", - pageSize, - pageNumber, - fromDate, - toDate, - isPending, - isActive, projectId, searchString, + fromDate, + toDate, + pageSize, + pageNumber, + isActive, + isPending, ], queryFn: async () => { const response = await CollectionRepository.getCollections( - pageSize, - pageNumber, + projectId, + searchString, fromDate, toDate, - isPending, + pageSize, + pageNumber, isActive, - projectId, - searchString + isPending ); return response.data; }, @@ -44,15 +85,14 @@ export const useCollections = ( }); }; - -export const useCollection =(collectionId)=>{ +export const useCollection = (collectionId) => { return useQuery({ - queryKey:["collection",collectionId], - queryFn:async()=> { + queryKey: ["collection", collectionId], + queryFn: async () => { const resp = await CollectionRepository.getCollection(collectionId); return resp.data }, - enabled:!!collectionId + enabled: !!collectionId }) } @@ -133,11 +173,11 @@ export const useAddComment = (onSuccessCallBack) => { }); }; -export const useUpdateCollection =(onSuccessCallBack)=>{ - const client = useQueryClient(); +export const useUpdateCollection = (onSuccessCallBack) => { + const client = useQueryClient(); return useMutation({ - mutationFn:async({collectionId,payload})=> await CollectionRepository.updateCollection(collectionId,payload), - onSuccess: () => { + mutationFn: async ({ collectionId, payload }) => await CollectionRepository.updateCollection(collectionId, payload), + onSuccess: () => { client.invalidateQueries({ queryKey: ["collections"] }); client.invalidateQueries({ queryKey: ["collection"] }); showToast("Collection Updated Successfully", "success"); diff --git a/src/pages/collections/CollectionPage.jsx b/src/pages/collections/CollectionPage.jsx index fbac9564..3a67d94c 100644 --- a/src/pages/collections/CollectionPage.jsx +++ b/src/pages/collections/CollectionPage.jsx @@ -117,7 +117,8 @@ const CollectionPage = () => { {/* Left side: Date Picker + Show Pending (stacked on mobile) */}
    - +
    diff --git a/src/repositories/ColllectionRepository.jsx b/src/repositories/ColllectionRepository.jsx index 8eb512da..04db4369 100644 --- a/src/repositories/ColllectionRepository.jsx +++ b/src/repositories/ColllectionRepository.jsx @@ -4,26 +4,46 @@ import { DirectoryRepository } from "./DirectoryRepository"; export const CollectionRepository = { createNewCollection: (data) => api.post(`/api/Collection/invoice/create`, data), - updateCollection:(id,data)=>{ - api.put(`/api/Collection/invoice/edit/${id}`,data) + updateCollection: (id, data) => { + api.put(`/api/Collection/invoice/edit/${id}`, data) }, - getCollections: (pageSize, pageNumber,fromDate,toDate, isPending,isActive,projectId, searchString) => { - let url = `/api/Collection/invoice/list?pageSize=${pageSize}&pageNumber=${pageNumber}&isPending=${isPending}&isActive=${isActive}&searchString=${searchString}`; + // getCollections: (pageSize, pageNumber,fromDate,toDate, isPending,isActive,projectId, searchString) => { + // let url = `/api/Collection/invoice/list?pageSize=${pageSize}&pageNumber=${pageNumber}&isPending=${isPending}&isActive=${isActive}&searchString=${searchString}`; + // const params = []; + // if (fromDate) params.push(`fromDate=${fromDate}`); + // if (toDate) params.push(`toDate=${toDate}`); + // if(projectId) params.push(`projectId=${projectId}`) + + // if (params.length > 0) { + // url += `&${params.join("&")}`; + // } + // return api.get(url); + // }, + + getCollections: (projectId, searchString, fromDate, toDate, pageSize, pageNumber, isActive, isPending) => { + let url = `/api/Collection/invoice/list`; const params = []; - if (fromDate) params.push(`fromDate=${fromDate}`); - if (toDate) params.push(`toDate=${toDate}`); - if(projectId) params.push(`projectId=${projectId}`) + + if (projectId) params.push(`projectId=${projectId}`); + if (searchString) params.push(`search=${searchString}`); + if (fromDate) params.push(`dateFrom=${fromDate}`); + if (toDate) params.push(`dateTo=${toDate}`); + if (pageSize) params.push(`pageSize=${pageSize}`); + if (pageNumber) params.push(`pageNumber=${pageNumber}`); + if (isActive) params.push(`isActive=${isActive}`); + if (isPending) params.push(`isPending=${isPending}`); if (params.length > 0) { - url += `&${params.join("&")}`; + url += "?" + params.join("&"); } - return api.get(url); + + return api.get(url); }, - makeReceivePayment:(data)=> api.post(`/api/Collection/invoice/payment/received`,data), - markPaymentReceived:(invoiceId)=>api.put(`/api/Collection/invoice/marked/completed/${invoiceId}`), - getCollection:(id)=>api.get(`/api/Collection/invoice/details/${id}`), - addComment:(data)=>api.post(`/api/Collection/invoice/add/comment`,data) + makeReceivePayment: (data) => api.post(`/api/Collection/invoice/payment/received`, data), + markPaymentReceived: (invoiceId) => api.put(`/api/Collection/invoice/marked/completed/${invoiceId}`), + getCollection: (id) => api.get(`/api/Collection/invoice/details/${id}`), + addComment: (data) => api.post(`/api/Collection/invoice/add/comment`, data) };