$(function () { 'use strict'; window.utils = window.utils || {}; $.extend(window.utils, { checkSchedule: { createScheduleManager: function () { var exceptionDateDataSource = BemsWebApplication.db.createDataSource('FmsFacilityScheduleCheckExceptionDate', true), holidayManager = utils.holiday.createHolidayManager(), loadedExceptionDays = []; return { holidayManager: holidayManager, load: function (momentDate, dataModel) { var self = this; var deferred = new $.Deferred(); loadedExceptionDays = []; $.when(exceptionDateDataSource.load(), holidayManager.loadHolidays(momentDate)) .done(function (result) { $.each(result[0], function (i, item) { loadedExceptionDays.push($G.date(moment(item.ExceptionDate()))); }); if (dataModel === undefined) { deferred.resolve(); } else { var events = self.generateScheduleEvents(momentDate, dataModel); deferred.resolve(events); } }) .fail(function (error) { deferred.reject(error); }); return deferred.promise(); }, generateScheduleEvents: function (momentDate, dataModel) { var holidays = holidayManager.generateHolidays(momentDate); var events = utils.fullCalendar.generateScheduleEvents(momentDate, dataModel.StartDate(), dataModel.ScheduleId(), dataModel.Name(), dataModel.CycleTypeId(), dataModel.CycleSize(), dataModel.CycleUnitId(), dataModel.HolidayId(), holidays, loadedExceptionDays); return events; }, }; } } }); });