import {tolerant_selector} from './base'
import moment from '../common/moment'
import {
  make_memoized, array_from_set, array_from_hash, split_array, filter_hash, map_hash, range,
  capitalize_first_letter, array_contains,
} from '../common/utilities'
import {event_intersects} from '../common/calendar'
import {tolerant_equal} from './base'

const get_raw_events = (state) => state.calendar.events

const get_not_deleted_events = tolerant_selector(
  [get_raw_events],
  (events) => filter_hash(events, (e) => !e.deleted_at)
)

export const get_user_events = make_memoized((user_id) => tolerant_selector(
  [get_not_deleted_events],
  (events) => split_array(
    array_from_hash(events).filter((event) => event.user_id == user_id),
    ({calenderable_type}) => {
      switch (calenderable_type) {
        case 'User':
          return 'user'
        case 'UserAgency':
          return 'agency'
      }
    },
    ['user', 'agency']
  )
))
