import { EntityAdapter, EntityState } from '@ngrx/entity/src/models'; import { createEntityAdapter } from '@ngrx/entity'; import * as exemptEpActions from '../actions/exempt-ep.action'; import { assign, get } from 'lodash'; import { SeamsHttpResponse } from '../../shared/models/http-response'; import { CaseNotes } from '../models/case-notes/case-notes'; export interface LocalState extends EntityState { loading: boolean; closeExemptEpModal: boolean; errors: SeamsHttpResponse; } export const adapter: EntityAdapter = createEntityAdapter({ selectId: (t: CaseNotes) => t.caseNotesId, }); export const initialState: LocalState = adapter.getInitialState({ loading: false, closeExemptEpModal: undefined, errors: undefined, }); export function reducer(state: LocalState = initialState, action: exemptEpActions.AssessmentDecisionActions): LocalState { switch (action.type) { case exemptEpActions.AssessmentDecisionActionTypes.SaveAssessmentDecision: { return assign({}, state, { loading: true }); } case exemptEpActions.AssessmentDecisionActionTypes.SaveAssessmentDecisionSuccess: { return assign({}, state, { loading: false, closeExemptEpModal: true, }); } case exemptEpActions.AssessmentDecisionActionTypes.SaveAssessmentDecisionFail: { return assign({}, state, { loading: false, errors: action.payload, closeExemptEpModal: false, }); } default: { return state; } } } export const getErrors: (state: LocalState) => SeamsHttpResponse = (state: LocalState) => state.errors; export const getLoading: (state: LocalState) => boolean = (state: LocalState) => state.loading; export const getCloseExemptEpModal: (state: LocalState) => boolean = (state: LocalState) => state.closeExemptEpModal;