import { Action } from '@ngrx/store'; import { filter, keys, map } from 'lodash'; import { CaseDetails } from '../models/case-details'; export enum CaseDetailsActionTypes { LoadCaseDetails = '[Case Details] Load', LoadCaseDetailsSuccess = '[Case Details] Load Success', LoadCaseDetailsFail = '[Case Details] 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(CaseDetailsActionTypes); // tslint:disable-next-line:no-any return map(actionTypes.filter((k: string) => k.indexOf(name) > -1), (s: any) => CaseDetailsActionTypes[s]); } export class LoadCaseDetailsAction implements Action { readonly type: string = CaseDetailsActionTypes.LoadCaseDetails as string; constructor(public payload: number) { } } export class LoadCaseDetailsSuccessAction implements Action { readonly type: string = CaseDetailsActionTypes.LoadCaseDetailsSuccess as string; constructor(public payload: CaseDetails) { } } export class LoadCaseDetailsFailAction implements Action { readonly type: string = CaseDetailsActionTypes.LoadCaseDetailsFail as string; // tslint:disable-next-line:no-any constructor(public payload?: any) { } } export type CoreCaseDetailsActions = LoadCaseDetailsAction | LoadCaseDetailsSuccessAction | LoadCaseDetailsFailAction;