Skip to content
Snippets Groups Projects
EventReducer.js 2.71 KiB
import {
  GET_EVENTS,
  GET_EVENT_BY_ID,
  VISITOR_CHANGE,
  WRITE_EVENT,
  ADD_EVENT,
  DELETE_EVENT,
  CLEAR_WRITE,
  ABSENT_CHANGE,
  CHANGE_NO,
} from '../actions/types';

const INITIAL_STATE = { events: [], newEvent: {} };

export default (state = INITIAL_STATE, action) => {
  switch (action.type) {
    case GET_EVENTS:
      return { ...state, events: [...action.payload] };
    case GET_EVENT_BY_ID:
      return { ...state, selectedEvent: action.payload };
    case VISITOR_CHANGE:
      if (state.selectedEvent.visitors.includes(action.payload)) {
        // Benne van nem kell megváltoztatni
        return { ...state }
      }
      if (state.selectedEvent.absent.indexOf(action.payload) > -1) {
        // Ha az absentbe van ki kell venni
        state.selectedEvent.absent.splice(state.selectedEvent.absent.indexOf(action.payload), 1);
      }
      state.selectedEvent.visitors.push(action.payload)
      return {
        ...state,
        selectedEvent: {
          ...state.selectedEvent,
          visitors: state.selectedEvent.visitors,
          absent: state.selectedEvent.absent,
        },
      };
    case ABSENT_CHANGE:
      if (state.selectedEvent.absent.includes(action.payload)) {
        return { ...state };
      }
      if (state.selectedEvent.visitors.indexOf(action.payload) > -1) {
        state.selectedEvent.visitors.splice(state.selectedEvent.visitors.indexOf(action.payload), 1);
      }
      state.selectedEvent.absent.push(action.payload);
      return {
        ...state,
        selectedEvent: {
          ...state.selectedEvent,
          visitors: state.selectedEvent.visitors,
          absent: state.selectedEvent.absent,
        },
      };
    case CHANGE_NO:
      if (state.selectedEvent.visitors.indexOf(action.payload) > -1) {
        state.selectedEvent.visitors.splice(state.selectedEvent.visitors.indexOf(action.payload), 1);
      }
      if (state.selectedEvent.absent.indexOf(action.payload) > -1) {
        // Ha az absentbe van ki kell venni
        state.selectedEvent.absent.splice(state.selectedEvent.absent.indexOf(action.payload), 1);
      }
      return {
        ...state,
        selectedEvent: {
          ...state.selectedEvent,
          visitors: state.selectedEvent.visitors,
          absent: state.selectedEvent.absent,
        },
      };
    case WRITE_EVENT:
      return { ...state, newEvent: { ...state.newEvent, [action.target]: action.payload } };
    case ADD_EVENT:
      return { ...state, events: [...state.events, action.payload] };
    case DELETE_EVENT:
      state.events.splice(state.events.indexOf(action.payload), 1);
      return { ...state, events: [...state.events] };
    case CLEAR_WRITE:
      return { ...state, newEvent: {} };
    default:
      return state;
  }
};