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); }
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); }