import { Dezrez } from '@dezrez/typings-rezi'; import { toArray, map, filter } from 'lodash'; import DailyRecurringSchedule = Dezrez.Core.DataContracts.External.Api.Events.ScheduledEvents.Command.DailyRecurringScheduleDataContract; import Enum = Dezrez.Core.DataContracts.External.Api.System.EnumDataContract; import Frequency = Dezrez.Core.Enums.Frequency; import Days = Dezrez.Core.Enums.DayOfWeek; import Quarters = Dezrez.Core.Enums.Quarter; import QuarterlyInterval = Dezrez.Core.Enums.QuarterlyInterval; import MonthlyInterval = Dezrez.Core.Enums.MonthlyInterval; import MailMergeSchedule = Dezrez.Core.DataContracts.External.Api.Events.ScheduledEvents.Command.MailMergeScheduledCommandDataContract; import MonthlyRecurringSchedule = Dezrez.Core.DataContracts.External.Api.Events.ScheduledEvents.Command.MonthlyRecurringScheduleDataContract; import QuarterlyRecurringSchedule = Dezrez.Core.DataContracts.External.Api.Events.ScheduledEvents.Command.QuarterlyRecurringScheduleDataContract; import RecurringSchedule = Dezrez.Core.DataContracts.External.Api.Events.ScheduledEvents.Command.RecurringScheduleDataContract; import WeeklyRecurringSchedule = Dezrez.Core.DataContracts.External.Api.Events.ScheduledEvents.Command.WeeklyRecurringScheduleDataContract; import YearlyRecurringSchedule = Dezrez.Core.DataContracts.External.Api.Events.ScheduledEvents.Command.YearlyRecurringScheduleDataContract; class ScheduleHelper { public Months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; getType(...params) { return this[params[0].toLowerCase()](params); } daily(params): DailyRecurringSchedule { const daily = new DailyRecurringSchedule(); daily.Frequency = Frequency.Daily; daily.StartDate = params[1]; return daily; } monthly(params): MonthlyRecurringSchedule { const monthly = new MonthlyRecurringSchedule(); monthly.Frequency = Frequency.Monthly; monthly.DayOfMonth = params[1]; return monthly; } quarterly(params): QuarterlyRecurringSchedule { const quarterly = new QuarterlyRecurringSchedule(); quarterly.Frequency = Frequency.Quarterly; quarterly.Quarters = [params[1]]; quarterly.QuarterlyIntervals = [params[2]]; quarterly.MonthlyIntervals = [params[3]]; quarterly.Days = [params[4]]; return quarterly; } weekly(params): WeeklyRecurringSchedule { const weekly = new WeeklyRecurringSchedule(); weekly.Frequency = Frequency.Weekly; weekly.Days = [params[1]]; return weekly; } yearly(params): YearlyRecurringSchedule { const yearly = new YearlyRecurringSchedule(); yearly.Frequency = Frequency.Yearly; yearly.AnniversaryDay = params[1]; yearly.AnniversaryMonth = this.Months.indexOf(params[2]) + 1; return yearly; } enumToArray(values: any) { const arr = map(values, (value) => { return value; }); const arrLength: number = arr.length / 2; return map(arr.slice(0, arrLength), (item, index) => { return { item, value: arr.slice(arrLength)[index] }; }); } } export const scheduleHelper = new ScheduleHelper();