Пример #1
0
        private bool RepeatValid(MonthRepeat repeat, DateTime date)
        {
            bool valid = false;

            if (((date.Month - repeat.RangeStart.Month) + 12 * (date.Year - repeat.RangeStart.Year)) % repeat.NMonth == 0)
            {
                if (repeat.MonthDayTypeEnum.Value == MonthDayTypeEnum.Monday.Value)
                {
                    DateTime?dt = GetSequenceDayOfWeek(repeat.NDayMonthEnum.Value, DayOfWeek.Monday, date);
                    return(dt != null && Convert.ToDateTime(dt).Date == date.Date);
                }
                else if (repeat.MonthDayTypeEnum.Value == MonthDayTypeEnum.Tuesday.Value)
                {
                    DateTime?dt = GetSequenceDayOfWeek(repeat.NDayMonthEnum.Value, DayOfWeek.Tuesday, date);
                    return(dt != null && Convert.ToDateTime(dt).Date == date.Date);
                }
                else if (repeat.MonthDayTypeEnum.Value == MonthDayTypeEnum.Wednesday.Value)
                {
                    DateTime?dt = GetSequenceDayOfWeek(repeat.NDayMonthEnum.Value, DayOfWeek.Wednesday, date);
                    return(dt != null && Convert.ToDateTime(dt).Date == date.Date);
                }
                else if (repeat.MonthDayTypeEnum.Value == MonthDayTypeEnum.Thursday.Value)
                {
                    DateTime?dt = GetSequenceDayOfWeek(repeat.NDayMonthEnum.Value, DayOfWeek.Thursday, date);
                    return(dt != null && Convert.ToDateTime(dt).Date == date.Date);
                }
                else if (repeat.MonthDayTypeEnum.Value == MonthDayTypeEnum.Friday.Value)
                {
                    DateTime?dt = GetSequenceDayOfWeek(repeat.NDayMonthEnum.Value, DayOfWeek.Friday, date);
                    return(dt != null && Convert.ToDateTime(dt).Date == date.Date);
                }
                else if (repeat.MonthDayTypeEnum.Value == MonthDayTypeEnum.Saturday.Value)
                {
                    DateTime?dt = GetSequenceDayOfWeek(repeat.NDayMonthEnum.Value, DayOfWeek.Saturday, date);
                    return(dt != null && Convert.ToDateTime(dt).Date == date.Date);
                }
                else if (repeat.MonthDayTypeEnum.Value == MonthDayTypeEnum.Sunday.Value)
                {
                    DateTime?dt = GetSequenceDayOfWeek(repeat.NDayMonthEnum.Value, DayOfWeek.Sunday, date);
                    return(dt != null && Convert.ToDateTime(dt).Date == date.Date);
                }
                else if (repeat.MonthDayTypeEnum.Value == MonthDayTypeEnum.Work.Value)
                {
                    DateTime?dt = GetSequenceDayOfWork(repeat.NDayMonthEnum.Value, date);
                    return(dt != null && Convert.ToDateTime(dt).Date == date.Date);
                }
                else if (repeat.MonthDayTypeEnum.Value == MonthDayTypeEnum.Nature.Value)
                {
                    return(GetSequenceDayOfNaturl(repeat.NDayMonthEnum.Value, date).Date == date.Date);
                }
            }
            return(valid);
        }
Пример #2
0
        public List <CalendarADay> GetByDate(DateTime start, DateTime end, List <Notes> source)
        {
            List <CalendarADay> cd = new List <CalendarADay>();

            if (source != null && source.Count > 0)
            {
                _AccountID = source[0].Owner.Id;
                foreach (Notes notes in source)
                {
                    if (notes.RepeatType is MonthRepeat)
                    {
                        MonthRepeat type = (MonthRepeat)notes.RepeatType;

                        DateTime tempstart = type.RangeStart > start ? type.RangeStart : start;
                        DateTime tempend   = type.RangeEnd == null || type.RangeEnd > end
                                               ? end
                                               : Convert.ToDateTime(type.RangeEnd);
                        DateTime date = tempstart;
                        int      days = (tempend.Date - tempstart.Date).Days;
                        _PlanDutyFrom = new DateTime(tempstart.Year, tempstart.Month, 1);
                        _PlanDutyTo   = GetLastDate(tempend);
                        for (int i = 0; i <= days; i++)
                        {
                            if (RepeatValid(type, date))
                            {
                                List <MonthItem> monthitems = new List <MonthItem>();
                                MonthItem        monthitem  =
                                    new MonthItem(notes.Content,
                                                  RepeatUtility.DetailString(notes, notes.Start, notes.End), date,
                                                  CalendarShowType.Note);
                                monthitems.Add(monthitem);
                                List <DayItem> dayitems = new List <DayItem>();
                                DayItem        dayItem  =
                                    new DayItem(RepeatUtility.ConvertToDateTime(date, notes.Start),
                                                RepeatUtility.ConvertToDateTime(date, notes.End), notes.Content,
                                                CalendarShowType.Note);
                                dayItem.ObjectID = notes.PKID;
                                dayitems.Add(dayItem);
                                CalendarADay aday = new CalendarADay(date, monthitems, dayitems);
                                cd.Add(aday);
                            }
                            date = date.AddDays(1);
                        }
                    }
                }
            }

            return(cd);
        }