private string PrepareScheduleValues(AutomaticScheduleDTO schedule)
        {
            var res = "";

            if (schedule.ScheduleTypeId == (int)ScheduleTypesEnum.Monthly)
            {
                if (schedule.IsLastDayInMonth.HasValue && schedule.IsLastDayInMonth.Value)
                {
                    res += "32,";
                }
                if (schedule.IsFirstDayInMonth.HasValue && schedule.IsFirstDayInMonth.Value)
                {
                    res += "1,";
                }
                if (schedule.DayNumberInMonth.HasValue)
                {
                    res += schedule.DayNumberInMonth.Value + ",";
                }
            }

            else if (schedule.ScheduleTypeId == (int)ScheduleTypesEnum.Weekly)
            {
                foreach (var item in schedule.WeeksDay)
                {
                    res += item + ",";
                }
            }

            return(res.TrimEnd(','));
        }
        public AutomaticScheduleDTO GetScheduleFromEntity(ReportSchedule schedule)
        {
            var res = new AutomaticScheduleDTO();

            res.ScheduleTypeId = schedule.ScheduleTypeId;
            if (schedule.ScheduleTypeId == (int)ScheduleTypesEnum.Monthly)
            {
                var tempList = schedule.ScheduleValues.Split(',');
                if (tempList.Any())
                {
                    foreach (var item in tempList)
                    {
                        if (item == "32")
                        {
                            res.IsLastDayInMonth = true;
                        }
                        else if (item == "1")
                        {
                            res.IsFirstDayInMonth = true;
                        }
                        else
                        {
                            int dayNum = 0;
                            if (int.TryParse(item, out dayNum))
                            {
                                res.DayNumberInMonth = dayNum;
                            }
                        }
                    }
                }
            }

            else if (schedule.ScheduleTypeId == (int)ScheduleTypesEnum.Weekly)
            {
                var tempList = schedule.ScheduleValues.Split(',');
                if (tempList.Any())
                {
                    foreach (var item in tempList)
                    {
                        int dayNum = 0;
                        if (int.TryParse(item, out dayNum))
                        {
                            res.WeeksDay.Add(dayNum);  // 0 Sunday
                        }
                    }
                }
            }
            res.SendHour = schedule.SendHour;
            return(res);
        }
        private bool IsOnTime(AutomaticScheduleDTO schedule)
        {
            bool isTime = false;

            if (schedule != null && schedule.SendHour <= DateTime.Now.Hour)
            {
                if (schedule.ScheduleTypeId == (int)ScheduleTypesEnum.Daily)
                {
                    isTime = true;
                }
                else if (schedule.ScheduleTypeId == (int)ScheduleTypesEnum.Weekly)
                {
                    isTime = schedule.WeeksDay.Any(x => x == (int)DateTime.Now.DayOfWeek);
                }
                else if (schedule.ScheduleTypeId == (int)ScheduleTypesEnum.Monthly)
                {
                    if (schedule.IsLastDayInMonth.HasValue && schedule.IsLastDayInMonth.Value)
                    {
                        if (DateTime.Now.Day == DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month))
                        {
                            isTime = true;
                        }
                    }
                    if (schedule.IsFirstDayInMonth.HasValue && schedule.IsFirstDayInMonth.Value)
                    {
                        if (DateTime.Now.Day == 1)
                        {
                            isTime = true;
                        }
                    }
                    if (schedule.DayNumberInMonth.HasValue)
                    {
                        if (DateTime.Now.Day == schedule.DayNumberInMonth.Value)
                        {
                            isTime = true;
                        }
                    }
                }
            }
            return(isTime);
        }