Files
imexrps/src/redux/reporting/reporting.reducer.js
2025-09-16 12:44:40 -07:00

67 lines
2.2 KiB
JavaScript

import ReportingActionTypes from "./reporting.types";
const INITIAL_STATE = {
dates: { startDate: null, endDate: null },
data: [],
scoreCard: null,
error: null,
loading: false,
auditLoading: false,
audit: {},
auditError: null,
excludedIds: [],
cachedJobs: []
};
const applicationReducer = (state = INITIAL_STATE, action) => {
switch (action.type) {
case ReportingActionTypes.QUERY_REPORTING_DATA:
return {
...state,
loading: true,
error: null,
dates: {
startDate: action.payload.startDate.toISOString(),
endDate: action.payload.endDate.toISOString()
}
};
case ReportingActionTypes.SET_REPORTING_ERROR:
return {
...state,
error: action.payload
};
case ReportingActionTypes.SET_REPORTING_DATA:
return { ...state, data: action.payload };
case ReportingActionTypes.SET_SCORE_CARD:
return { ...state, loading: false, scoreCard: action.payload };
case ReportingActionTypes.CALCULATE_AUDIT:
return { ...state, auditLoading: true };
case ReportingActionTypes.SET_AUDIT_RESULTS:
return { ...state, loading: false, auditLoading: false, auditError: null, audit: action.payload };
case ReportingActionTypes.SET_AUDIT_ERROR:
return { ...state, auditLoading: false, auditError: action.payload };
case ReportingActionTypes.ADD_EXCLUDED_ID:
return { ...state, excludedIds: [...state.excludedIds, action.payload] };
case ReportingActionTypes.REMOVE_EXCLUDED_ID:
return { ...state, excludedIds: state.excludedIds.filter((id) => id !== action.payload) };
case ReportingActionTypes.CLEAR_EXCLUDED_IDS:
return { ...state, excludedIds: [] };
case ReportingActionTypes.SET_CACHED_JOBS:
return { ...state, cachedJobs: action.payload };
case ReportingActionTypes.TOGGLE_GROUP_VERIFIED:
return {
...state,
data: state.data.map((d) => {
if (d.id === action.payload) {
return { ...d, group_verified: !d.group_verified };
} else {
return d;
}
})
};
default:
return state;
}
};
export default applicationReducer;