export function reducer()

in src/app/customers/cases/store/tasks/tasks.reducer.ts [36:89]


export function reducer(state = initialState, action: task.Actions): State {

  switch (action.type) {

    case task.LOAD_ALL: {
      return initialState;
    }

    case task.LOAD_ALL_COMPLETE: {
      const entities = action.payload;

      const commands = state.commands.map(command => {
        return Object.assign({}, command, {
          tasks: entities.filter(instance => instance.taskDefinition.actions.indexOf(command.action) > -1)
        });
      });

      return {
        commands
      };
    }

    case task.EXECUTE_TASK_SUCCESS: {
      const payload = action.payload;

      const commands = state.commands.map(command => {
        if (command.action !== payload.action) {
          return command;
        }

        return Object.assign({}, command, {
          tasks: command.tasks.map(task => {
            if (task.taskDefinition.identifier !== payload.taskIdentifier) {
              return task;
            }

            return Object.assign({}, task, {
              executedOn: payload.executed ? new Date().toISOString() : undefined,
              executedBy: payload.executedBy
            });
          })
        });
      });

      return {
        commands
      };
    }

    default: {
      return state;
    }
  }
}