| /** |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| */ |
| |
| import * as fromRoot from '../../store'; |
| import * as fromTellers from '../store/teller/tellers.reducer'; |
| import * as fromDenominations from '../store/teller/denomination/denominations.reducer'; |
| import {ActionReducer, Store} from '@ngrx/store'; |
| import {createReducer} from '../../store/index'; |
| import {createSelector} from 'reselect'; |
| import { |
| createResourceReducer, |
| getResourceAll, |
| getResourceEntities, |
| getResourceLoadedAt, |
| getResourceSelected, |
| ResourceState |
| } from '../../common/store/resource.reducer'; |
| import {createFormReducer, FormState, getFormError} from '../../common/store/form.reducer'; |
| |
| export interface State extends fromRoot.State { |
| offices: ResourceState; |
| officeForm: FormState; |
| tellers: ResourceState; |
| tellerForm: FormState; |
| denominations: fromDenominations.State; |
| } |
| |
| const reducers = { |
| offices: createResourceReducer('Office'), |
| officeForm: createFormReducer('Office'), |
| tellers: createResourceReducer('Office Teller', fromTellers.reducer, 'code'), |
| tellerForm: createFormReducer('Office Teller'), |
| denominations: fromDenominations.reducer |
| }; |
| |
| export const officeModuleReducer: ActionReducer<State> = createReducer(reducers); |
| |
| export class OfficesStore extends Store<State> {} |
| |
| export function officeStoreFactory(appStore: Store<fromRoot.State>) { |
| //appStore.replaceReducer(officeModuleReducer); |
| return appStore; |
| } |
| |
| export const getOfficesState = (state: State) => state.offices; |
| |
| export const getOfficeFormState = (state: State) => state.officeForm; |
| export const getOfficeFormError = createSelector(getOfficeFormState, getFormError); |
| |
| export const getOfficeEntities = createSelector(getOfficesState, getResourceEntities); |
| export const getOfficesLoadedAt = createSelector(getOfficesState, getResourceLoadedAt); |
| export const getSelectedOffice = createSelector(getOfficesState, getResourceSelected); |
| |
| export const getTellerState = (state: State) => state.tellers; |
| |
| export const getTellerFormState = (state: State) => state.tellerForm; |
| export const getTellerFormError = createSelector(getTellerFormState, getFormError); |
| |
| export const getAllTellerEntities = createSelector(getTellerState, getResourceAll); |
| |
| export const getTellersLoadedAt = createSelector(getTellerState, getResourceLoadedAt); |
| export const getSelectedTeller = createSelector(getTellerState, getResourceSelected); |
| |
| export const getDenominationState = (state: State) => state.denominations; |
| export const getDenominationsEntities = createSelector(getDenominationState, fromDenominations.getDenominationEntities); |