marco.pms.web/src/slices/localVariablesSlice.jsx

167 lines
4.4 KiB
JavaScript

import { createSlice } from "@reduxjs/toolkit";
const localVariablesSlice = createSlice({
name: "localVariables",
initialState: {
selectedMaster: "Application Role",
// Attendances
attendance: {
regularizationCount: 0,
defaultDateRange: { startDate: null, endDate: null },
SelectedOrg: "",
},
// PopUp
popups: {},
// Modal for all simple pass Name
modals: {
auth: { isOpen: false },
organization: { isOpen: false },
},
projectId: null,
reload: false,
OrganizationModal: {
isOpen: false,
orgData: null,
prevStep: null,
startStep: 1,
flowType: "default",
},
AuthModal: {
isOpen: false,
},
selfTenant: {
tenantEnquireId: null,
planId: null,
details: null,
frequency: null,
paymentDetailId: null,
},
},
reducers: {
changeMaster: (state, action) => {
state.selectedMaster = action.payload;
},
// ─── ATTENDANCE ─────────────────────────
updateRegularizationCount: (state, action) => {
state.attendance.regularizationCount = action.payload;
},
setDefaultDateRange: (state, action) => {
state.attendance.defaultDateRange = action.payload;
},
setOrganization: (state, action) => {
state.attendance.SelectedOrg = action.payload;
},
setProjectId: (state, action) => {
localStorage.setItem("project", null);
state.projectId = action.payload;
localStorage.setItem("project", state.projectId || null);
},
refreshData: (state, action) => {
state.reload = action.payload;
},
openOrgModal: (state, action) => {
state.OrganizationModal.isOpen = true;
state.OrganizationModal.orgData = action.payload?.orgData || null;
if (state.OrganizationModal.startStep) {
state.OrganizationModal.prevStep = state.OrganizationModal.startStep;
}
state.OrganizationModal.startStep = action.payload?.startStep || 1;
state.OrganizationModal.flowType = action.payload?.flowType || "default";
},
closeOrgModal: (state) => {
state.OrganizationModal.isOpen = false;
state.OrganizationModal.orgData = null;
state.OrganizationModal.startStep = 1;
state.OrganizationModal.prevStep = null;
},
toggleOrgModal: (state) => {
state.OrganizationModal.isOpen = !state.OrganizationModal.isOpen;
},
openAuthModal: (state, action) => {
state.AuthModal.isOpen = true;
},
closeAuthModal: (state, action) => {
state.AuthModal.isOpen = false;
},
openModal: (state, action) => {
const { modalType, data } = action.payload;
state.modals[modalType] = {
isOpen: true,
data: data ?? {},
};
},
closeModal: (state, action) => {
const { modalType } = action.payload;
state.modals[modalType] = {
isOpen: false,
data: null,
};
},
toggleModal: (state, action) => {
const { modalType } = action.payload;
const modal = state.modals[modalType] || {};
modal.isOpen = !modal.isOpen;
},
setSelfTenant: (state, action) => {
state.selfTenant.tenantEnquireId =
action.payload.tenantEnquireId ?? state.selfTenant.tenantEnquireId;
state.selfTenant.planId =
action.payload.planId ?? state.selfTenant.planId;
state.selfTenant.details =
action.payload.details ?? state.selfTenant.details;
state.selfTenant.frequency =
action.payload.frequency ?? state.selfTenant.frequency;
state.selfTenant.paymentDetailId =
action.payload.paymentDetailId ?? state.selfTenant.paymentDetailId;
},
openPopup: (state, action) => {
const id = action.payload;
state.popups[id] = true;
},
closePopup: (state, action) => {
const id = action.payload;
state.popups[id] = false;
},
togglePopup: (state, action) => {
const id = action.payload;
state.popups[id] = !state.popups[id];
}
},
});
export const {
changeMaster,
updateRegularizationCount,
setProjectId,
refreshData,
setDefaultDateRange,
openOrgModal,
closeOrgModal,
toggleOrgModal,
openAuthModal,
closeAuthModal,
setOrganization,
openModal,
closeModal,
toggleModal,
setSelfTenant,openPopup, closePopup, togglePopup
} = localVariablesSlice.actions;
export default localVariablesSlice.reducer;