/// <summary> /// DayComparer private method to check day, used by CheckEventByDate on request eg: DayComparer(dateEnd, checkDate, eventObject). /// </summary> private bool DayComparer(DateTime start, DateTime origin, GameCalendarEventObject eventObject) { DateTime tempTime = new DateTime(start.Year, start.Month, start.Day); if (DateTime.Compare(tempTime, origin) > 0) { return(false); } if (eventObject.Daily > 0) { for (int i = 0; i <= eventObject.Daily; i++) { DateTime temp = start; temp = temp.AddDays(i); if (temp.DayOfWeek == origin.DayOfWeek) { return(true); } } } else { return(start.DayOfWeek == origin.DayOfWeek); } return(false); }
/// <summary> /// CreateEvent put new GameCalendarEventObject object to calendar events collection. /// </summary> public void CreateEvent(GameCalendarEventObject newEvent) { if (newEvent.Daily == 0 && newEvent.Weekly == 0 && newEvent.Monthly == 0 && newEvent.Yearly == 0) { _events.Add(newEvent); } else if (newEvent.RepeatByDate) { _eventsRepeatedByDate.Add(newEvent); } else { _eventsRepeated.Add(newEvent); } FillDaylyEventsList(_today); SortEvents(); }
/// <summary> /// ReturnEndedEvents private method helper. /// </summary> private GameCalendarEventObject ReturnEndedEvents(GameCalendarEventObject eventObject, DateTime checkDate) { DateTime dateEnd = eventObject.DateEnd; DateTime dateEndY = dateEnd.AddYears(eventObject.Yearly); DateTime dateEndM = dateEndY.AddMonths(eventObject.Monthly); DateTime dateEndW = dateEndM.AddDays(eventObject.Weekly * 7); DateTime dateEndD = dateEndW.AddDays(eventObject.Daily); if ( DateTime.Compare(dateEndD, checkDate) >= 0 ) { return(null); } else { return(eventObject); } }
/// <summary> /// CheckEventByDate private method to find any event for requested date. /// </summary> private GameCalendarEventObject[] CheckEventByDate(GameCalendarEventObject eventObject, DateTime checkDate) { GameCalendarEventObject[] array = new GameCalendarEventObject[] { null, null }; DateTime dateStart = eventObject.DateStart; DateTime dateEnd = eventObject.DateEnd; DateTime YS = dateStart.AddMonths(eventObject.Yearly * 12); DateTime YE = dateEnd.AddMonths(eventObject.Yearly * 12); if ( YearComparer(dateStart, YS, checkDate) && MonthComparer(dateStart, dateStart.AddMonths(eventObject.Monthly), checkDate) && WeekComparer(dateStart, dateStart.AddDays(eventObject.Daily), checkDate, eventObject.Weekly) && DayComparer(dateStart, checkDate, eventObject) ) { array[0] = eventObject; } else if ( YearComparer(dateEnd, YE, checkDate) && MonthComparer(dateEnd, dateEnd.AddMonths(eventObject.Monthly), checkDate) && WeekComparer(dateEnd, dateEnd.AddDays(eventObject.Daily), checkDate, eventObject.Weekly) && DayComparer(dateEnd, checkDate, eventObject) ) { array[1] = eventObject; } return(array); }
/// <summary> /// CheckEventRepeatByDate private method to find any event for requested day, repeated by current date(every 1 september). /// </summary> private GameCalendarEventObject[] CheckEventRepeatByDate(GameCalendarEventObject eventObject, DateTime checkDate) { GameCalendarEventObject[] array = new GameCalendarEventObject[] { null, null }; var startDate = eventObject.DateStart.AddMonths(eventObject.Monthly); startDate = startDate.AddYears(eventObject.Yearly); var endDate = eventObject.DateEnd.AddMonths(eventObject.Monthly); endDate = endDate.AddYears(eventObject.Yearly); if ( YearComparer(eventObject.DateStart, startDate, checkDate) && MonthComparer(eventObject.DateStart, startDate, checkDate) && eventObject.DateStart.Day == checkDate.Day ) { array[0] = eventObject; } if ( YearComparer(eventObject.DateEnd, endDate, checkDate) && MonthComparer(eventObject.DateEnd, endDate, checkDate) && eventObject.DateEnd.Day == checkDate.Day ) { array[1] = eventObject; } return(array); }