'use strict'

###
  @ngdoc factory
  @name EmployeeScheduleDayList
  @description A list for an employee with his schedule on a particular day
###
angular.module('payrollhero.api').factory 'EmployeeScheduleDayList',  ->
  class EmployeeScheduleDayList
    ###
      @ngdoc constructor
      @param {moment} day
      @param {Employee} employee
      @param {Array<ScheduleEvent>} schedules
    ###
    constructor: (day, employee, schedules) ->
      @schedules = schedules
      @employee = employee
      @day = day

    hasAny: ->
      _(@schedules).some()

    pluck: (attr) ->
      _(@schedules).pluck(attr)

    map: (itaree) ->
      _(@schedules).map(itaree)

    isEmpty: ->
      !_(@schedules).some()

    kinds: ->
      _(@schedules).pluck('kind')

    friendlyKinds: ->
      _(@kinds()).map (kind) -> _.humanize kind

    friendlyDisplayNames: ->
      _(@schedules).map (schedule) ->
        if schedule.isRestDay()
          schedule.multiplier().name
        else
          _.humanize schedule.kind
