import {update_item, update_items, store_items, remove_item} from './base'

const initial_state = {
  recruiters: {},
  teams: {},
  self: null,
}

export function recruiters(state = initial_state, action) {
  switch (action.type) {
    case "store_recruiters":
      return store_items(
        state,
        "recruiters",
        action.recruiters.map(({default_deal: {id: default_deal_id}, ...recruiter}) => ({
          ...recruiter,
          default_deal_id,
        }))
      )
    case "update_profile":
      let self = state.self
      if (action.profile.id) {
        self = action.profile.id
      }
      let recruiter = action.profile
      if (state.recruiters[self]) {
        recruiter = {
          ...state.recruiters[self],
          ...recruiter,
        }
      }
      if (self) {
        return {
          ...state,
          recruiters: {
            ...state.recruiters,
            [self]: recruiter,
          },
          self,
        }
      }
      return state
    case "update_recruiter":
      return update_item(state, "recruiters", action.recruiter)
    case "update_recruiters":
      return update_items(state, "recruiters", action.recruiters)
    case "store_teams":
      return store_items(state, "teams", action.teams)
    case "remove_team":
      return remove_item(state, "teams", action.team_id)
    default:
      return state
  }
}
