import { Action } from '@ngrx/store'; import { filter, keys, map } from 'lodash'; import { SeamsHttpResponse } from '../../shared/models/http-response'; import { CaseNotes } from '../models/case-notes/case-notes'; import { SaveCaseNotes } from '../models/case-notes/save-case-notes'; export enum CaseNotesActionTypes { LoadCaseNotes = '[Case Notes] Load', LoadCaseNotesSuccess = '[Case Notes] Load Success', LoadCaseNotesFail = '[Case Notes] Load Fail', SaveCaseNotes = '[Case Notes] Save', SaveCaseNotesSuccess = '[Case Notes] Save Success', SaveCaseNotesFail = '[Case Notes] Save 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(CaseNotesActionTypes); // tslint:disable-next-line:no-any return map(actionTypes.filter((k: string) => k.indexOf(name) > -1), (s: any) => CaseNotesActionTypes[s]); } export class LoadCaseNotesAction implements Action { readonly type: string = CaseNotesActionTypes.LoadCaseNotes as string; constructor(public payload: number) { } } export class LoadCaseNotesSuccessAction implements Action { readonly type: string = CaseNotesActionTypes.LoadCaseNotesSuccess as string; constructor(public payload: CaseNotes[]) { } } export class LoadCaseNotesFailAction implements Action { readonly type: string = CaseNotesActionTypes.LoadCaseNotesFail as string; constructor(public payload?: SeamsHttpResponse) { } } export class SaveCaseNotesAction implements Action { readonly type: string = CaseNotesActionTypes.SaveCaseNotes as string; constructor(public payload: SaveCaseNotes) { } } export class SaveCaseNotesSuccessAction implements Action { readonly type: string = CaseNotesActionTypes.SaveCaseNotesSuccess as string; constructor(public payload: number) { } } export class SaveCaseNotesFailAction implements Action { readonly type: string = CaseNotesActionTypes.SaveCaseNotesFail as string; constructor(public payload?: SeamsHttpResponse) { } } export type CaseNotesActions = LoadCaseNotesAction | LoadCaseNotesSuccessAction | LoadCaseNotesFailAction | SaveCaseNotesAction | SaveCaseNotesSuccessAction | SaveCaseNotesFailAction;