/**
 * <%= titleCase(componentName) %> Component
 */
import { Component } from '@angular/core';
import { Store } from '@ngrx/store';
import { NgRxCoreAngularNavActions } from '@zionapps/ngrx-angular';
import { INgRxCoreMeta } from '@zionapps/ngrx-core';<% if (ngRxSubStoreLocation === '@zionapps/ngrx-management') { %>
import { ManagementUserSelectors, <%= pascalCase(singularDomainName) %> } from '@zionapps/ngrx-management';<% } else if (ngRxSubStoreLocation) { %>
import { ManagementUserSelectors } from '@zionapps/ngrx-management';
import { <%= pascalCase(singularDomainName) %> } from '<%= ngRxSubStoreLocation %>';<% } else { %>
import { <%= pascalCase(singularDomainName) %> } from '../../store/<%= paramCase(pluralDomainName) %>/<%= paramCase(pluralDomainName) %>.domain';<% } %>

@Component({
  selector: 'app-<%= paramCase(componentName) %>',
  templateUrl: './<%= paramCase(componentName) %>.component.html',
  styleUrls: ['./<%= paramCase(componentName) %>.component.scss'],
})
export class <%= pascalCase(componentName) %>Component {
  hasAccess$ = this.store$.select(ManagementUserSelectors.HasAccess);
  pageSizeOptions = [25, 50, 100];
  readonly meta: INgRxCoreMeta;

  constructor(private store$: Store<any>) {
    this.meta = { source: '<%= pascalCase(componentName) %>Component' };
  }

  onRightButtonClick() {
    this.store$.dispatch(NgRxCoreAngularNavActions.NavigateByUrlRequest('/<%= paramCase(componentName) %>/new', this.meta));
  }

  onEdit<%= pascalCase(singularDomainName) %>(<%= camelCase(singularDomainName) %>: <%= pascalCase(singularDomainName) %>): void {
    this.store$.dispatch(NgRxCoreAngularNavActions.NavigateByUrlRequest(`/<%= paramCase(componentName) %>/edit/${<%= camelCase(singularDomainName) %>.id}`, this.meta));
  }

  onView<%= pascalCase(singularDomainName) %>(<%= camelCase(singularDomainName) %>: <%= pascalCase(singularDomainName) %>): void {
    this.store$.dispatch(NgRxCoreAngularNavActions.NavigateByUrlRequest(`/<%= paramCase(componentName) %>/view/${<%= camelCase(singularDomainName) %>.id}`, this.meta));
  }
}
