-
Manage Bucket
+
+
-
+ {action ? (
+ <>
+
{
+ setAction(null);
+ setSelectedBucket(null);
+ }}
+ isPending={creating || updating}
+ />
+ {action === "edit" && selectedBucket && (
+
+ )}
+ >
+ ) : (
+ <>
+
+ setSearchTerm(e.target.value)}
+ />
+
+
+
+ {
+ setSelectedBucket(bucket);
+ setAction("edit");
+ }}
+ onDelete={(id) => console.log("delete", id)}
+ />
+ >
+ )}
);
};
-
export default ManageBucket1;
diff --git a/src/hooks/useDirectory.js b/src/hooks/useDirectory.js
index e3f3d301..26e1feb1 100644
--- a/src/hooks/useDirectory.js
+++ b/src/hooks/useDirectory.js
@@ -1,9 +1,10 @@
import { useEffect, useState } from "react";
import { DirectoryRepository } from "../repositories/DirectoryRepository";
import { cacheData, getCachedData } from "../slices/apiDataManager";
-import { useQuery } from "@tanstack/react-query";
+import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
+import showToast from "../services/toastService";
-export const useDirectory = (isActive,prefernceContacts) => {
+export const useDirectory = (isActive, prefernceContacts) => {
const [contacts, setContacts] = useState([]);
const [loading, setLoading] = useState(false);
const [error, setError] = useState(null);
@@ -11,7 +12,10 @@ export const useDirectory = (isActive,prefernceContacts) => {
const fetch = async (activeParam = isActive) => {
setLoading(true);
try {
- const response = await DirectoryRepository.GetContacts(activeParam,prefernceContacts);
+ const response = await DirectoryRepository.GetContacts(
+ activeParam,
+ prefernceContacts
+ );
setContacts(response.data);
cacheData("contacts", { data: response.data, isActive: activeParam });
} catch (error) {
@@ -23,12 +27,16 @@ export const useDirectory = (isActive,prefernceContacts) => {
useEffect(() => {
const cachedContacts = getCachedData("contacts");
- if (!cachedContacts?.data || cachedContacts.isActive !== isActive || prefernceContacts) {
- fetch(isActive,prefernceContacts);
+ if (
+ !cachedContacts?.data ||
+ cachedContacts.isActive !== isActive ||
+ prefernceContacts
+ ) {
+ fetch(isActive, prefernceContacts);
} else {
setContacts(cachedContacts.data);
}
- }, [isActive,prefernceContacts]);
+ }, [isActive, prefernceContacts]);
return {
contacts,
@@ -55,7 +63,7 @@ export const useBuckets = () => {
error?.response?.data?.message ||
error?.message ||
"Something went wrong";
- setError( msg );
+ setError(msg);
setLoading(false);
}
};
@@ -78,35 +86,30 @@ export const useContactProfile = (id) => {
const [Error, setError] = useState("");
const fetchContactProfile = async () => {
-
- setLoading(true);
- try {
- const resp = await DirectoryRepository.GetContactProfile(id);
- setContactProfile(resp.data);
- cacheData("Contact Profile", { data: resp.data, contactId: id });
- } catch (err) {
- const msg =
- err?.response?.data?.message ||
- err?.message ||
- "Something went wrong";
- setError(msg);
- } finally {
- setLoading(false);
- }
-
+ setLoading(true);
+ try {
+ const resp = await DirectoryRepository.GetContactProfile(id);
+ setContactProfile(resp.data);
+ cacheData("Contact Profile", { data: resp.data, contactId: id });
+ } catch (err) {
+ const msg =
+ err?.response?.data?.message || err?.message || "Something went wrong";
+ setError(msg);
+ } finally {
+ setLoading(false);
+ }
};
- useEffect( () =>
- {
+ useEffect(() => {
const cached = getCachedData("Contact Profile");
- if (!cached || cached.contactId !== id) {
+ if (!cached || cached.contactId !== id) {
fetchContactProfile(id);
} else {
setContactProfile(cached.data);
}
}, [id]);
- return { contactProfile, loading, Error ,refetch:fetchContactProfile};
+ return { contactProfile, loading, Error, refetch: fetchContactProfile };
};
export const useContactNotes = (id, IsActive) => {
@@ -114,36 +117,31 @@ export const useContactNotes = (id, IsActive) => {
const [loading, setLoading] = useState(false);
const [Error, setError] = useState("");
- const fetchContactNotes = async (id,IsActive) => {
-
-
- setLoading(true);
- try {
- const resp = await DirectoryRepository.GetNote(id, IsActive);
- setContactNotes(resp.data);
- cacheData("Contact Notes", { data: resp.data, contactId: id });
- } catch (err) {
- const msg =
- err?.response?.data?.message ||
- err?.message ||
- "Something went wrong";
- setError(msg);
- } finally {
- setLoading(false);
- }
-
+ const fetchContactNotes = async (id, IsActive) => {
+ setLoading(true);
+ try {
+ const resp = await DirectoryRepository.GetNote(id, IsActive);
+ setContactNotes(resp.data);
+ cacheData("Contact Notes", { data: resp.data, contactId: id });
+ } catch (err) {
+ const msg =
+ err?.response?.data?.message || err?.message || "Something went wrong";
+ setError(msg);
+ } finally {
+ setLoading(false);
+ }
};
useEffect(() => {
const cached = getCachedData("Contact Notes");
if (!cached || cached.contactId !== id) {
- id && fetchContactNotes(id,IsActive);
- } else {
+ id && fetchContactNotes(id, IsActive);
+ } else {
setContactNotes(cached.data);
}
- }, [id,IsActive]);
+ }, [id, IsActive]);
- return { contactNotes, loading, Error,refetch:fetchContactNotes };
+ return { contactNotes, loading, Error, refetch: fetchContactNotes };
};
export const useOrganization = () => {
@@ -212,21 +210,115 @@ export const useDesignation = () => {
return { designationList, loading, error };
};
-// ------------------------------Query--------------------------------------------
+// ------------------------------Query------------------------------------------------------------------
-export const useBucketList =()=>{
+export const useBucketList = () => {
return useQuery({
- queryKey:["bucketList"],
- queryFn:async()=>{
+ queryKey: ["bucketList"],
+ queryFn: async () => {
const resp = await DirectoryRepository.GetBucktes();
return resp.data;
- }
+ },
+ });
+};
+
+export const useDirectoryNotes = (
+ pageSize,
+ pageNumber,
+ filter,
+ searchString
+) => {
+ return useQuery({
+ queryKey: ["directoryNotes", pageSize, pageNumber, filter, searchString],
+ queryFn: async () =>
+ await DirectoryRepository.GetBucktes(
+ pageSize,
+ pageNumber,
+ filter,
+ searchString
+ ),
+ });
+};
+
+// ---------------------------Mutation------------------------------------------------------------------
+
+export const useCreateBucket =(onSuccessCallBack)=>{
+ const queryClient = useQueryClient();
+ return useMutation({
+ mutationFn:async(BucketPayload)=> await DirectoryRepository.CreateBuckets(BucketPayload),
+ onSuccess: (_, variables) => {
+ queryClient.invalidateQueries({queryKey: ["bucketList"]})
+ showToast("Bucket created Successfully", "success");
+ if (onSuccessCallBack) onSuccessCallBack();
+ },
+ onError: (error) => {
+ showToast(
+ error.response.data.message ||
+ "Something went wrong.Please try again later.",
+ "error"
+ );
+ },
})
}
-export const useDirectoryNotes=(pageSize, pageNumber, filter, searchString)=>{
- return useQuery({
- queryKey:["directoryNotes",pageSize, pageNumber, filter, searchString],
- queryFn:async()=> await DirectoryRepository.GetBucktes(pageSize, pageNumber, filter, searchString),
+
+export const useUpdateBucket = (onSuccessCallBack) => {
+ const queryClient = useQueryClient();
+
+ return useMutation({
+ mutationFn: async ({ bucketId, BucketPayload}) => await DirectoryRepository.UpdateBuckets(bucketId, BucketPayload),
+ onSuccess: (_, variables) => {
+ queryClient.invalidateQueries({ queryKey: ["bucketList"] });
+ showToast("Bucket updated successfully", "success");
+ if (onSuccessCallBack) onSuccessCallBack();
+ },
+ onError: (error) => {
+ showToast(
+ error?.response?.data?.message ||
+ "Something went wrong. Please try again later.",
+ "error"
+ );
+ },
+ });
+};
+
+
+export const useAssignEmpToBucket =()=>{
+ return useMutation({
+
+ mutationFn:async({bucketId,EmployeePayload})=> await DirectoryRepository.AssignedBuckets(bucketId,EmployeePayload),
+ onSuccess: (_, variables) => {
+ const {EmployeePayload} = variables
+ queryClient.invalidateQueries({queryKey: ["bucketList"]})
+ showToast(`Bucket shared ${EmployeePayload?.length} Employee Successfully`, "success");
+ if (onSuccessCallBack) onSuccessCallBack();
+ },
+ onError: (error) => {
+ showToast(
+ error.response.data.message ||
+ "Something went wrong.Please try again later.",
+ "error"
+ );
+ },
})
-}
\ No newline at end of file
+}
+export const useDeleteBucket = (onSuccessCallBack) => {
+ const queryClient = useQueryClient();
+ return useMutation({
+ mutationFn: async (bucketId) =>
+ await DirectoryRepository.DeleteBucket(bucketId),
+ onSuccess: (_, variables) => {
+ queryClient.invalidateQueries({queryKey: ["bucketList"]})
+ showToast("Bucket deleted Successfully", "success");
+ if (onSuccessCallBack) onSuccessCallBack();
+ },
+ onError: (error) => {
+ showToast(
+ error.response.data.message ||
+ "Something went wrong.Please try again later.",
+ "error"
+ );
+ },
+ });
+};
+