/// <inheritdoc/> public async Task <List <EventModel> > GetEventsByStartTime(DateTime startTime) { if (startTime.Kind != DateTimeKind.Utc) { throw new Exception("Get Event By Start Time - Start Time is not UTC"); } return(await calendarAPI.GetEventsByStartTime(startTime)); }
protected async Task <List <EventModel> > GetEventsByTime(DateTime?startDate, DateTime?startTime, DateTime?endDate, DateTime?endTime, TimeZoneInfo userTimeZone, ICalendar calendarService) { // todo: check input datetime is utc var rawEvents = new List <EventModel>(); var resultEvents = new List <EventModel>(); bool searchByStartTime = startTime != null && endDate == null && endTime == null; startDate = startDate ?? TimeConverter.ConvertUtcToUserTime(DateTime.UtcNow, userTimeZone); endDate = endDate ?? startDate ?? TimeConverter.ConvertUtcToUserTime(DateTime.UtcNow, userTimeZone); var searchStartTime = startTime == null ? new DateTime(startDate.Value.Year, startDate.Value.Month, startDate.Value.Day) : new DateTime(startDate.Value.Year, startDate.Value.Month, startDate.Value.Day, startTime.Value.Hour, startTime.Value.Minute, startTime.Value.Second); searchStartTime = TimeZoneInfo.ConvertTimeToUtc(searchStartTime, userTimeZone); var searchEndTime = endTime == null ? new DateTime(endDate.Value.Year, endDate.Value.Month, endDate.Value.Day, 23, 59, 59) : new DateTime(endDate.Value.Year, endDate.Value.Month, endDate.Value.Day, endTime.Value.Hour, endTime.Value.Minute, endTime.Value.Second); searchEndTime = TimeZoneInfo.ConvertTimeToUtc(searchEndTime, userTimeZone); if (searchByStartTime) { rawEvents = await calendarService.GetEventsByStartTime(searchStartTime); } else { rawEvents = await calendarService.GetEventsByTime(searchStartTime, searchEndTime); } foreach (var item in rawEvents) { if (item.StartTime >= searchStartTime && item.IsCancelled != true) { resultEvents.Add(item); } } return(resultEvents); }
protected async Task <List <EventModel> > GetEventsByTime(List <DateTime> startDateList, List <DateTime> startTimeList, List <DateTime> endDateList, List <DateTime> endTimeList, TimeZoneInfo userTimeZone, ICalendar calendarService) { // todo: check input datetime is utc var rawEvents = new List <EventModel>(); var resultEvents = new List <EventModel>(); DateTime?startDate = null; if (startDateList.Any()) { startDate = startDateList.Last(); } DateTime?endDate = null; if (endDateList.Any()) { endDate = endDateList.Last(); } bool searchByStartTime = startTimeList.Any() && endDate == null && !endTimeList.Any(); startDate = startDate ?? TimeConverter.ConvertUtcToUserTime(DateTime.UtcNow, userTimeZone); endDate = endDate ?? startDate ?? TimeConverter.ConvertUtcToUserTime(DateTime.UtcNow, userTimeZone); var searchStartTimeList = new List <DateTime>(); var searchEndTimeList = new List <DateTime>(); if (startTimeList.Any()) { foreach (var time in startTimeList) { searchStartTimeList.Add(TimeZoneInfo.ConvertTimeToUtc( new DateTime(startDate.Value.Year, startDate.Value.Month, startDate.Value.Day, time.Hour, time.Minute, time.Second), userTimeZone)); } } else { searchStartTimeList.Add(TimeZoneInfo.ConvertTimeToUtc( new DateTime(startDate.Value.Year, startDate.Value.Month, startDate.Value.Day), userTimeZone)); } if (endTimeList.Any()) { foreach (var time in endTimeList) { searchEndTimeList.Add(TimeZoneInfo.ConvertTimeToUtc( new DateTime(endDate.Value.Year, endDate.Value.Month, endDate.Value.Day, time.Hour, time.Minute, time.Second), userTimeZone)); } } else { searchEndTimeList.Add(TimeZoneInfo.ConvertTimeToUtc( new DateTime(endDate.Value.Year, endDate.Value.Month, endDate.Value.Day, 23, 59, 59), userTimeZone)); } DateTime?searchStartTime = null; if (searchByStartTime) { foreach (var startTime in searchStartTimeList) { rawEvents = await calendarService.GetEventsByStartTime(startTime); if (rawEvents.Any()) { searchStartTime = startTime; break; } } } else { for (var i = 0; i < searchStartTimeList.Count(); i++) { rawEvents = await calendarService.GetEventsByTime( searchStartTimeList[i], searchEndTimeList.Count() > i?searchEndTimeList[i] : searchEndTimeList[0]); if (rawEvents.Any()) { searchStartTime = searchStartTimeList[i]; break; } } } foreach (var item in rawEvents) { if (item.StartTime >= searchStartTime && item.IsCancelled != true) { resultEvents.Add(item); } } return(resultEvents); }
public async Task GetEventsByStartTimeTest() { await CalendarService.GetEventsByStartTime(DateTime.SpecifyKind(new DateTime(), DateTimeKind.Utc)); }
/// <inheritdoc/> public async Task <List <EventModel> > GetEventsByStartTime(DateTime startTime) { return(await calendarAPI.GetEventsByStartTime(startTime)); }