/**
 * <%= titleCase(pluralDomainName) %> Reducer
 * v<%= zionAppsGeneratorVersion %> | Generated on <%= zionAppsGeneratorBuildDate %>
 */
import { generateNgRxCoreReducer } from '@zionusa-nx-workspace/shared/ngrx-core';
import { <%= pascalCase(singularDomainName) %>, INgRxCoreAction } from '@zionusa-nx-workspace/shared/domain';
// import { <%= pascalCase(pluralDomainName) %>Actions } from './<%= paramCase(pluralDomainName) %>.actions';
import { <%= pascalCase(pluralDomainName) %>Config, <%= pascalCase(pluralDomainName) %>State } from './<%= paramCase(pluralDomainName) %>.domain';
import { <%= camelCase(pluralDomainName) %>Adapter } from './<%= paramCase(pluralDomainName) %>.utils';

const reducer = generateNgRxCoreReducer<<%= pascalCase(singularDomainName) %>, <%= pascalCase(pluralDomainName) %>State>(<%= camelCase(pluralDomainName) %>Adapter, <%= pascalCase(pluralDomainName) %>Config);

export function <%= camelCase(pluralDomainName) %>Reducer(prevState: <%= pascalCase(pluralDomainName) %>State, action: INgRxCoreAction): <%= pascalCase(pluralDomainName) %>State {
  const state = reducer(prevState, action);
  switch (action.type) {
    // case <%= pascalCase(pluralDomainName) %>Actions.Type.EmptyExample: {
    //   return state;
    // }
    // case <%= pascalCase(pluralDomainName) %>Actions.Type.ErrorExample: {
    //   return state;
    // }
    // case <%= pascalCase(pluralDomainName) %>Actions.Type.ItemExample: {
    //   return state;
    // }
    // case <%= pascalCase(pluralDomainName) %>Actions.Type.ListExample: {
    //   return state;
    // }
    default: {
      return state;
    }
  }
}
