120 lines
3.4 KiB
JavaScript
120 lines
3.4 KiB
JavaScript
// AuthContext.jsx
|
|
import { createContext, useContext, useState, useEffect } from 'react';
|
|
import { useDispatch } from 'react-redux';
|
|
import { getSession } from './Services/Others';
|
|
import {
|
|
getEmpAccesData,
|
|
getSAdminUserAccesData,
|
|
} from './Features/BrachLogin/BranchLogin.js';
|
|
import { PricingAppPricingNameData } from './Features/ThemeChange/ThemeChange.js';
|
|
import { GlobalFeatAddOnData } from './Features/BookingScreen/BookingData/BookingData.js';
|
|
import { useSelector } from 'react-redux';
|
|
|
|
export const AuthContext = createContext();
|
|
|
|
export const useAuth = () => useContext(AuthContext);
|
|
|
|
export const AuthProvider = ({ children }) => {
|
|
const AppId = getSession('AppId');
|
|
const CompId = getSession('CompId');
|
|
const BranchId = getSession('BranchId');
|
|
const UserId = getSession('UserId');
|
|
const UserType = getSession('UserType');
|
|
const dispatch = useDispatch();
|
|
const FeatureAddonData = useSelector(GlobalFeatAddOnData);
|
|
|
|
const [Access, setAccess] = useState([]);
|
|
const [SadminuserAccess, setSadminuserAccess] = useState([]);
|
|
const [ProORAdvance, setProORAdvance] = useState(false);
|
|
const [Advance, setAdvance] = useState(false);
|
|
const [freeProductsCount, setFreeProductsCount] = useState(0);
|
|
|
|
let featureaddDetails = FeatureAddonData?.FeatureDtls || [];
|
|
|
|
useEffect(() => {
|
|
getPricingName();
|
|
}, []);
|
|
|
|
useEffect(() => {
|
|
if (UserType === 'Employee') {
|
|
getEmpAccess();
|
|
}
|
|
if (UserType === 'Super Admin User') {
|
|
getSadminUserAccess();
|
|
}
|
|
}, [UserType]);
|
|
|
|
const getPricingName = async () => {
|
|
if (!AppId || !UserId) return;
|
|
let data;
|
|
if (UserType === 'Super Admin' || UserType === 'Super Admin User') {
|
|
data = {
|
|
appId: AppId,
|
|
compId: CompId,
|
|
branchId: BranchId,
|
|
};
|
|
} else {
|
|
data = {
|
|
appId: AppId,
|
|
userId: UserId,
|
|
};
|
|
}
|
|
try {
|
|
const response = await dispatch(PricingAppPricingNameData(data)).unwrap();
|
|
const responseData = response?.data;
|
|
if (responseData?.statusCode !== 1) return setAdvance(false);
|
|
const pricingData = responseData?.data;
|
|
const hasAdvance = pricingData.some(
|
|
(item) => item.PricingName === 'Premium'
|
|
);
|
|
setAdvance(hasAdvance);
|
|
const hasProOrAdvance =
|
|
hasAdvance ||
|
|
pricingData.some((item) => item.PricingName === 'Customized');
|
|
setProORAdvance(hasProOrAdvance);
|
|
} catch (error) {
|
|
console.error('Error fetching pricing name:', error);
|
|
}
|
|
};
|
|
|
|
const getEmpAccess = async () => {
|
|
let data = {
|
|
UserId: UserId,
|
|
AppId: AppId,
|
|
CompId: CompId,
|
|
BranchId: BranchId,
|
|
};
|
|
const response = await dispatch(getEmpAccesData(data)).unwrap();
|
|
if (response?.data?.statusCode === 1) {
|
|
setAccess(response?.data?.data?.[0]?.EmpAccessDetails);
|
|
}
|
|
};
|
|
const getSadminUserAccess = async () => {
|
|
let data = {
|
|
UserId: UserId,
|
|
AppId: AppId,
|
|
};
|
|
const response = await dispatch(getSAdminUserAccesData(data)).unwrap();
|
|
if (response?.data?.statusCode === 1) {
|
|
setSadminuserAccess(response?.data?.data?.[0]?.AppMenuAccessDetails);
|
|
}
|
|
};
|
|
|
|
return (
|
|
<AuthContext.Provider
|
|
value={{
|
|
UserType,
|
|
Access,
|
|
SadminuserAccess,
|
|
Advance,
|
|
ProORAdvance,
|
|
featureaddDetails,
|
|
freeProductsCount,
|
|
setFreeProductsCount,
|
|
}}
|
|
>
|
|
{children}
|
|
</AuthContext.Provider>
|
|
);
|
|
};
|