/**
 * <%= titleCase(pluralDomainName) %> Utils
 * v<%= zionAppsGeneratorVersion %> | Generated on <%= zionAppsGeneratorBuildDate %>
 */
import { Validators } from '@angular/forms';
import { createEntityAdapter, EntityAdapter } from '@ngrx/entity';
import { getIdPropertyValue, sortStringPropertyAscending } from '@zionusa-nx-workspace/shared/core';
import { <%= pascalCase(singularDomainName) %> } from '@zionusa-nx-workspace/shared/domain';
import { <%= pascalCase(pluralDomainName) %>Config } from './<%= paramCase(pluralDomainName) %>.domain';

export const get<%= pascalCase(singularDomainName) %>ById = (item: <%= pascalCase(singularDomainName) %>): <%= idPropertyDataType %> => getIdPropertyValue(item, <%= pascalCase(pluralDomainName) %>Config.idProperty);

export const get<%= pascalCase(singularDomainName) %>DefaultFormGroup = (): any => ({
  // TODO: Fill in the form object for <%= pascalCase(singularDomainName) %>
  createdDateTime: ['', Validators.required],
  id: null,
});

export const sort<%= pascalCase(singularDomainName) %>ByDate = sortStringPropertyAscending('createdDateTime');

export const <%= camelCase(pluralDomainName) %>Adapter: EntityAdapter<<%= pascalCase(singularDomainName) %>> = createEntityAdapter<<%= pascalCase(singularDomainName) %>>({
  selectId: get<%= pascalCase(singularDomainName) %>ById,
  sortComparer: sort<%= pascalCase(singularDomainName) %>ByDate,
});
