/**
 * <%= titleCase(pluralDomainName) %> Effects
 * v<%= zionAppsGeneratorVersion %> | Generated on <%= zionAppsGeneratorBuildDate %>
 */
import { Injectable, NgZone } from '@angular/core';
import { <%= pascalCase(singularDomainName) %>, INgRxCoreAction } from '@zionusa-nx-workspace/shared/domain';
import { Actions, Effect } from '@ngrx/effects';
import { Store } from '@ngrx/store';
import { NgRxCoreEffects } from '@zionusa-nx-workspace/shared/ngrx-core';
import { Observable } from 'rxjs';
import { <%= pascalCase(pluralDomainName) %>Actions } from './<%= paramCase(pluralDomainName) %>.actions';
import { <%= pascalCase(pluralDomainName) %>Config } from './<%= paramCase(pluralDomainName) %>.domain';
import { <%= pascalCase(pluralDomainName) %>Service } from './<%= paramCase(pluralDomainName) %>.service';

@Injectable()
export class <%= pascalCase(pluralDomainName) %>Effects extends NgRxCoreEffects<<%= pascalCase(singularDomainName) %>, <%= idPropertyDataType %>> {
  @Effect()
  mapToDeleteOneFromDevice$: Observable<INgRxCoreAction> = this.getMapToDeleteOneFromDevice$();
  @Effect()
  mapToSaveAllToDevice$: Observable<INgRxCoreAction> = this.getMapToSaveAllToDevice$();
  @Effect()
  mapToSaveManyToDevice$: Observable<INgRxCoreAction> = this.getMapToSaveManyToDevice$();
  @Effect()
  mapToSaveOneToDevice$: Observable<INgRxCoreAction> = this.getMapToSaveOneToDevice$();

  constructor(
    protected actions$: Actions,
    protected service: <%= pascalCase(pluralDomainName) %>Service,
    protected store: Store<any>,
    protected zone: NgZone,
  ) {
    super(actions$, <%= pascalCase(pluralDomainName) %>Actions, <%= pascalCase(pluralDomainName) %>Config, service, store, zone);
  }
}
