import { LoopScenarioState, initialState } from '../states/loop-scenario.state';
import { Actions, ActionTypes } from '../actions/loop-scenario.action';

export function reducer(
    state: LoopScenarioState = initialState,
    action: Actions
): LoopScenarioState {
    switch (action.type) {
        case ActionTypes.QUERY:
            return (<any>Object).assign({}, state, {
                entries: [...state.entries, ...action.payload]
            });
        case ActionTypes.TOGGLE_SELECTED:
            let selectedEntries = state.selectedEntries;
            if(selectedEntries.indexOf(action.payload) === -1) {
                selectedEntries = [action.payload];
            }
            else {
                selectedEntries = [];
            }
            return (<any>Object).assign({}, state, {
                selectedEntries: selectedEntries
            });
        case ActionTypes.SET_ENTRIES:
            return (<any>Object).assign({}, state, {
                entries: action.payload
            });
        case ActionTypes.SET_SELECTED:
            return (<any>Object).assign({}, state, {
                selectedEntries: action.payload
            });
        default:
            return state;
    }
}
