import { Action } from '@ngrx/store'; import { filter, keys, map } from 'lodash'; import { TypedReferenceData } from '../../shared/models/typed-reference-data'; import { ReferenceData } from '../../shared/models/reference-data'; export enum CoreActionTypes { LoadReferenceData = '[Reference Data] Load', LoadReferenceDataSuccess = '[Reference Data] Load Success', LoadReferenceDataFail = '[Reference Data] Load Fail', } // tslint:disable-next-line:no-any export const successActionTypes: any[] = filter(actionTypesByNameContains('Success'), (a: any) => a.indexOf('Load') < 0); // tslint:disable-next-line:no-any export const failActionTypes: any[] = actionTypesByNameContains('Fail'); // tslint:disable-next-line:no-any function actionTypesByNameContains(name: string): any[] { const actionTypes: string[] = keys(CoreActionTypes); // tslint:disable-next-line:no-any return map(actionTypes.filter((k: string) => k.indexOf(name) > -1), (s: any) => CoreActionTypes[s]); } export class LoadReferenceDataAction implements Action { readonly type: string = CoreActionTypes.LoadReferenceData as string; constructor(public payload: string) { } } export class LoadReferenceDataSuccessAction implements Action { readonly type: string = CoreActionTypes.LoadReferenceDataSuccess as string; constructor(public payload: TypedReferenceData[]) { } } export class LoadReferenceDataFailAction implements Action { readonly type: string = CoreActionTypes.LoadReferenceDataFail as string; // tslint:disable-next-line:no-any constructor(public payload?: any) { } } export type CoreReferenceDataActions = LoadReferenceDataAction | LoadReferenceDataSuccessAction | LoadReferenceDataFailAction ;