added expense releated master - Expense Type, status and paymentModa

This commit is contained in:
pramod mahajan 2025-08-05 23:58:31 +05:30
parent b9a75efd5c
commit d580ca0a15
2 changed files with 266 additions and 242 deletions

View File

@ -12,213 +12,6 @@ import showToast from "../../services/toastService";
// const useMaster = () => {
// const selectedMaster = useSelector((store)=>store.localVariables.selectedMaster);
// const [data, setData] = useState([]);
// const [loading, setLoading] = useState(true);
// const [error, setError] = useState("");
// useEffect(() => {
// const fetchData = async () => {
// if (!selectedMaster) return;
// setLoading(true);
// try {
// const cachedData = getCachedData(selectedMaster);
// if (cachedData) {
// setData(cachedData);
// } else {
// let response;
// switch (selectedMaster) {
// case "Application Role":
// response = await MasterRespository.getRoles();
// response = response.data;
// break;
// case "Job Role":
// response = await MasterRespository.getJobRole();
// response = response.data
// break;
// case "Activity":
// response = await MasterRespository.getActivites();
// response = response.data
// break;
// case "Work Category":
// response = await MasterRespository.getWorkCategory();
// response = response.data
// break;
// case "Contact Category":
// response = await MasterRespository.getContactCategory();
// response = response.data
// break;
// case "Contact Tag":
// response = await MasterRespository.getContactTag();
// response = response.data
// break;
// case "Status":
// response = [{description: null,featurePermission: null,id: "02dd4761-363c-49ed-8851-3d2489a3e98d",status:"status 1"},{description: null,featurePermission: null,id: "03dy9761-363c-49ed-8851-3d2489a3e98d",status:"status 2"},{description: null,featurePermission: null,id: "03dy7761-263c-49ed-8851-3d2489a3e98d",status:"Status 3"}];
// break;
// default:
// response = [];
// }
// if (response) {
// setData(response);
// cacheData(selectedMaster, response);
// }
// }
// } catch (err) {
// setError("Failed to fetch data.");
// } finally {
// setLoading(false);
// }
// };
// if ( selectedMaster )
// {
// fetchData();
// }
// }, [selectedMaster]);
// return { data, loading, error }
// };
// export const useActivitiesMaster = () =>
// {
// const [ activities, setActivites ] = useState( [] )
// const [ loading, setloading ] = useState( false );
// const [ error, setError ] = useState()
// const fetchActivities =async () => {
// setloading(true);
// try {
// const response = await MasterRespository.getActivites();
// setActivites(response.data);
// cacheData( "ActivityMaster", response.data );
// setloading(false);
// } catch (err) {
// setError(err);
// setloading(false);
// }
// }
// useEffect( () =>
// {
// const cacheddata = getCachedData( "ActivityMaster" );
// if ( !cacheddata )
// {
// fetchActivities()
// } else
// {
// setActivites(cacheddata);
// }
// }, [] )
// return {activities,loading,error}
// }
// export const useWorkCategoriesMaster = () =>
// {
// const [ categories, setCategories ] = useState( [] )
// const [ categoryLoading, setloading ] = useState( false );
// const [ categoryError, setError ] = useState( "" )
// const fetchCategories =async () => {
// const cacheddata = getCachedData("Work Category");
// if (!cacheddata) {
// setloading(true);
// try {
// const response = await MasterRespository.getWorkCategory();
// setCategories(response.data);
// cacheData("Work Category", response.data);
// } catch (err) {
// setError(err);
// console.log(err);
// } finally {
// setloading(false);
// }
// } else {
// setCategories(cacheddata);
// }
// }
// useEffect( () =>
// {
// fetchCategories()
// }, [] )
// return {categories,categoryLoading,categoryError}
// }
// export const useContactCategory = () =>
// {
// const [ contactCategory, setContactCategory ] = useState( [] )
// const [ loading, setLoading ] = useState( false )
// const [ Error, setError ] = useState()
// const fetchConatctCategory = async() =>
// {
// const cache_Category = getCachedData( "Contact Category" );
// if ( !cache_Category )
// {
// try
// {
// let resp = await MasterRespository.getContactCategory();
// setContactCategory( resp.data );
// cacheData("Contact Category",resp.data)
// } catch ( error )
// {
// setError(error)
// }
// } else
// {
// setContactCategory(cache_Category)
// }
// }
// useEffect( () =>
// {
// fetchConatctCategory()
// }, [] )
// return { contactCategory,loading,Error}
// }
// export const useContactTags = () => {
// const [contactTags, setContactTags] = useState([]);
// const [loading, setLoading] = useState(false);
// const [error, setError] = useState(null);
// useEffect(() => {
// const fetchContactTag = async () => {
// const cache_Tags = getCachedData("Contact Tag");
// if (!cache_Tags) {
// setLoading(true);
// try {
// const resp = await MasterRespository.getContactTag();
// setContactTags(resp.data);
// cacheData("Contact Tag", resp.data);
// } catch (err) {
// setError(err);
// } finally {
// setLoading(false);
// }
// } else {
// setContactTags(cache_Tags);
// }
// };
// fetchContactTag();
// }, []);
// return { contactTags, loading, error };
// };
// Separate matser-------------
export const useActivitiesMaster = () =>
{
@ -300,6 +93,76 @@ export const useContactTags = () => {
return { contactTags, loading, error };
};
export const useExpenseType =()=>{
const {
data: ExpenseTypes = [],
isLoading: loading,
error,
} = useQuery({
queryKey: ["Expense Type"],
queryFn: async () => {
const res = await MasterRespository.getExpenseType()
return res.data;
},
onError: (error) => {
showToast(
error?.response?.data?.message ||
error.message ||
"Failed to fetch Expense Type",
"error"
);
},
});
return { ExpenseTypes, loading, error };
}
export const usePaymentMode =()=>{
const {
data: PaymentModes = [],
isLoading: loading,
error,
} = useQuery({
queryKey: ["Payment Mode"],
queryFn: async () => {
const res = await MasterRespository.getPaymentMode()
return res.data;
},
onError: (error) => {
showToast(
error?.response?.data?.message ||
error.message ||
"Failed to fetch Payment Mode",
"error"
);
},
});
return { PaymentModes, loading, error };
}
export const useExpenseStatus =()=>{
const {
data: ExpenseStatus = [],
isLoading: loading,
error,
} = useQuery({
queryKey: ["Expense Status"],
queryFn: async () => {
const res = await MasterRespository.getExpenseStatus()
return res.data;
},
onError: (error) => {
showToast(
error?.response?.data?.message ||
error.message ||
"Failed to fetch Expense Status",
"error"
);
},
});
return { ExpenseStatus, loading, error };
}
// ===Application Masters Query=================================================
const fetchMasterData = async (masterType) => {
@ -316,6 +179,12 @@ const fetchMasterData = async (masterType) => {
return (await MasterRespository.getContactCategory()).data;
case "Contact Tag":
return (await MasterRespository.getContactTag()).data;
case "Expense Type":
return (await MasterRespository.getExpenseType()).data;
case "Payment Mode":
return (await MasterRespository.getPaymentMode()).data;
case "Expense Status":
return (await MasterRespository.getExpenseStatus()).data;
case "Status":
return [
{
@ -666,6 +535,140 @@ export const useUpdateContactTag = (onSuccessCallback) =>
});
}
// ----------------------Expense Type------------------
export const useCreateExpenseType = (onSuccessCallback)=>{
const queryClient = useQueryClient();
return useMutation( {
mutationFn: async ( payload ) =>
{
const resp = await MasterRespository.createExpenseType(payload);
return resp.data;
},
onSuccess: ( data ) =>
{
queryClient.invalidateQueries( {queryKey:[ "masterData", "Expense Type" ]} )
showToast( "Expense Type added successfully", "success" );
if(onSuccessCallback) onSuccessCallback(data)
},
onError: ( error ) =>
{
showToast(error.message || "Something went wrong", "error");
}
})
}
export const useUpdateExpenseType = (onSuccessCallback) =>
{
const queryClient = useQueryClient();
return useMutation({
mutationFn: async ( {id, payload} ) =>
{
const response = await MasterRespository.updateExpenseType(id,payload);
return response.data;
},
onSuccess: (data, variables) => {
queryClient.invalidateQueries({
queryKey: ["masterData", "Expense Type"],
});
showToast("Expense Type updated successfully.", "success");
if (onSuccessCallback) onSuccessCallback(data);
},
onError: (error) => {
showToast(error.message || "Something went wrong", "error");
},
});
}
// -----------------Payment Mode -------------
export const useCreatePaymentMode = (onSuccessCallback)=>{
const queryClient = useQueryClient();
return useMutation( {
mutationFn: async ( payload ) =>
{
const resp = await MasterRespository.createPaymentMode(payload);
return resp.data;
},
onSuccess: ( data ) =>
{
queryClient.invalidateQueries( {queryKey:[ "masterData", "Payment Mode" ]} )
showToast( "Payment Mode added successfully", "success" );
if(onSuccessCallback) onSuccessCallback(data)
},
onError: ( error ) =>
{
showToast(error.message || "Something went wrong", "error");
}
})
}
export const useUpdatePaymentMode = (onSuccessCallback)=>{
const queryClient = useQueryClient();
return useMutation( {
mutationFn: async ( {id,payload} ) =>
{
const resp = await MasterRespository.updatePaymentMode(id,payload);
return resp.data;
},
onSuccess: ( data ) =>
{
queryClient.invalidateQueries( {queryKey:[ "masterData", "Payment Mode" ]} )
showToast( "Payment Mode Updated successfully", "success" );
if(onSuccessCallback) onSuccessCallback(data)
},
onError: ( error ) =>
{
showToast(error.message || "Something went wrong", "error");
}
})
}
// -------------------Expense Status----------------------------------
export const useCreateExpenseStatus =(onSuccessCallback)=>{
const queryClient = useQueryClient();
return useMutation( {
mutationFn: async ( payload ) =>
{
const resp = await MasterRespository.createExpenseStatus(payload);
return resp.data;
},
onSuccess: ( data ) =>
{
queryClient.invalidateQueries( {queryKey:[ "masterData", "Expense Status" ]} )
showToast( "Expense Status added successfully", "success" );
if(onSuccessCallback) onSuccessCallback(data)
},
onError: ( error ) =>
{
showToast(error.message || "Something went wrong", "error");
}
})
}
export const useUpdateExpenseStatus = (onSuccessCallback)=>{
const queryClient = useQueryClient();
return useMutation( {
mutationFn: async ( {id,payload} ) =>
{
const resp = await MasterRespository.updateExepnseStatus(id,payload);
return resp.data;
},
onSuccess: ( data ) =>
{
queryClient.invalidateQueries( {queryKey:[ "masterData", "Expense Status" ]} )
showToast( "Expense Status Updated successfully", "success" );
if(onSuccessCallback) onSuccessCallback(data)
},
onError: ( error ) =>
{
showToast(error.message || "Something went wrong", "error");
}
})
}
// -Delete Master --------
export const useDeleteMasterItem = () => {
const queryClient = useQueryClient();

View File

@ -12,50 +12,71 @@ export const RolesRepository = {
createRoles: (data) => api.post("/users", data),
updateRoles: (id, data) => api.put(`/users/${id}`, data),
deleteRoles: (id) => api.delete(`/users/${id}`),
getEmployeeRoles:(id)=>api.get(`/api/employee/roles/${id}`),
createEmployeeRoles:(data)=>api.post("/api/roles/assign-roles",data)
getEmployeeRoles: (id) => api.get(`/api/employee/roles/${id}`),
createEmployeeRoles: (data) => api.post("/api/roles/assign-roles", data),
};
export const MasterRespository = {
getRoles: () => api.get("/api/roles"),
createRole: (data) => api.post("/api/roles", data),
updateRoles:(id,data) => api.put(`/api/roles/${id}`,data),
getFeatures: () => api.get( `/api/feature` ),
updateRoles: (id, data) => api.put(`/api/roles/${id}`, data),
getFeatures: () => api.get(`/api/feature`),
createJobRole: (data) => api.post("api/roles/jobrole", data),
getJobRole: () => api.get("/api/roles/jobrole"),
updateJobRole: (id, data) => api.put(`/api/roles/jobrole/${id}`, data),
createJobRole:(data)=>api.post('api/roles/jobrole',data),
getJobRole :()=>api.get("/api/roles/jobrole"),
updateJobRole: ( id, data ) => api.put( `/api/roles/jobrole/${ id }`, data ),
getActivites: () => api.get("api/master/activities"),
createActivity: (data) => api.post("api/master/activity", data),
updateActivity: (id, data) =>
api.post(`api/master/activity/edit/${id}`, data),
getIndustries: () => api.get("api/master/industries"),
getActivites: () => api.get( 'api/master/activities' ),
createActivity: (data) => api.post( 'api/master/activity',data ),
updateActivity:(id,data) =>api.post(`api/master/activity/edit/${id}`,data),
getIndustries: () => api.get( 'api/master/industries' ),
// delete
"Job Role": ( id ) => api.delete( `/api/roles/jobrole/${ id }` ),
"Activity": ( id ) => api.delete( `/api/master/activity/delete/${ id }` ),
"Application Role":(id)=>api.delete(`/api/roles/${id}`),
"Work Category": ( id ) => api.delete( `api/master/work-category/${ id }` ),
"Contact Category": ( id ) => api.delete( `/api/master/contact-category/${id}` ),
"Contact Tag" :(id)=>api.delete(`/api/master/contact-tag/${id}`),
"Job Role": (id) => api.delete(`/api/roles/jobrole/${id}`),
Activity: (id) => api.delete(`/api/master/activity/delete/${id}`),
"Application Role": (id) => api.delete(`/api/roles/${id}`),
"Work Category": (id) => api.delete(`api/master/work-category/${id}`),
"Contact Category": (id) => api.delete(`/api/master/contact-category/${id}`),
"Contact Tag": (id) => api.delete(`/api/master/contact-tag/${id}`),
"Expense Type": (id, isActive) =>
api.delete(`/api/Master/expenses-type/delete/${id}`, (isActive = false)),
"Payment Mode": (id, isActive) =>
api.delete(`/api/Master/payment-mode/delete/${id}`, (isActive = false)),
"Expense Status": (id, isActive) =>
api.delete(`/api/Master/expenses-status/delete/${id}`, (isActive = false)),
getWorkCategory:() => api.get(`/api/master/work-categories`),
createWorkCategory: (data) => api.post(`/api/master/work-category`,data),
updateWorkCategory: ( id, data ) => api.post( `/api/master/work-category/edit/${ id }`, data ),
getContactCategory: () => api.get( `/api/master/contact-categories` ),
createContactCategory: (data ) => api.post( `/api/master/contact-category`, data ),
updateContactCategory: ( id, data ) => api.post( `/api/master/contact-category/edit/${ id }`, data ),
getContactTag: () => api.get( `/api/master/contact-tags` ),
createContactTag: (data ) => api.post( `/api/master/contact-tag`, data ),
updateContactTag: ( id, data ) => api.post( `/api/master/contact-tag/edit/${ id }`, data ),
getWorkCategory: () => api.get(`/api/master/work-categories`),
createWorkCategory: (data) => api.post(`/api/master/work-category`, data),
updateWorkCategory: (id, data) =>
api.post(`/api/master/work-category/edit/${id}`, data),
getAuditStatus:()=>api.get('/api/Master/work-status')
}
getContactCategory: () => api.get(`/api/master/contact-categories`),
createContactCategory: (data) =>
api.post(`/api/master/contact-category`, data),
updateContactCategory: (id, data) =>
api.post(`/api/master/contact-category/edit/${id}`, data),
getContactTag: () => api.get(`/api/master/contact-tags`),
createContactTag: (data) => api.post(`/api/master/contact-tag`, data),
updateContactTag: (id, data) =>
api.post(`/api/master/contact-tag/edit/${id}`, data),
getAuditStatus: () => api.get("/api/Master/work-status"),
getExpenseType: () => api.get("/api/Master/expenses-types"),
createExpenseType: (data) => api.post("/api/Master/expenses-type", data),
updateExpenseType: (id, data) =>
api.put(`/api/Master/expenses-type/edit/${id}`, data),
getPaymentMode: () => api.get("/api/Master/payment-modes"),
createPaymentMode: (data) => api.post(`/api/Master/payment-mode`, data),
updatePaymentMode: (id, data) =>
api.put(`/api/Master/payment-mode/edit/${id}`, data),
getExpenseStatus: () => api.get("/api/Master/expenses-status"),
createExpenseStatus: (data) => api.post("/api/Master/expenses-status", data),
updateExepnseStatus: (id, data) =>
api.put(`/api/Master/expenses-status/edit/${id}`, data),
};