public static string ToDisplayDate(DateTime dateTime, TimeZoneInfo userTimezone)
        {
            // today/tomorrow/on date
            var userToday    = TimeConverter.ConvertUtcToUserTime(DateTime.UtcNow, userTimezone);
            var userDateTime = dateTime;

            if (userToday.Date.Equals(userDateTime.Date))
            {
                return(CalendarCommonStrings.TodayLower);
            }
            else if (userToday.AddDays(1).Date.Equals(userDateTime.Date))
            {
                return(CalendarCommonStrings.TomorrowLower);
            }
            else
            {
                return(string.Format(CalendarCommonStrings.ShowEventDateCondition, userDateTime.ToShortDateString()));
            }
        }
Esempio n. 2
0
        public static List <DateTimeResolution> RecognizeDateTime(string dateTimeString, string culture, TimeZoneInfo userTimeZone, bool convertToDate = true)
        {
            var userNow = TimeConverter.ConvertUtcToUserTime(DateTime.UtcNow, userTimeZone);
            var results = DateTimeRecognizer.RecognizeDateTime(DateTimeHelper.ConvertNumberToDateTimeString(dateTimeString, convertToDate), culture, DateTimeOptions.CalendarMode, userNow);

            if (results.Count > 0)
            {
                // Return list of resolutions from first match
                var result = new List <DateTimeResolution>();
                var values = (List <Dictionary <string, string> >)results[0].Resolution["values"];
                foreach (var value in values)
                {
                    result.Add(ReadResolution(value));
                }

                return(result);
            }

            return(null);
        }
        public static async Task <List <EventModel> > GetEventsByTimeAsync(List <DateTime> startDateList, List <DateTime> startTimeList, List <DateTime> endDateList, List <DateTime> endTimeList, TimeZoneInfo userTimeZone, ICalendarService calendarService)
        {
            // todo: check input datetime is utc
            var rawEvents    = new List <EventModel>();
            var resultEvents = new List <EventModel>();

            if (!startDateList.Any() && !startTimeList.Any() && !endDateList.Any() && !endTimeList.Any())
            {
                return(resultEvents);
            }

            DateTime?startDate = null;

            if (startDateList.Any())
            {
                startDate = startDateList.Last();
            }

            DateTime?endDate = null;

            if (endDateList.Any())
            {
                endDate = endDateList.Last();
            }

            var 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.GetEventsByStartTimeAsync(startTime);

                    if (rawEvents.Any())
                    {
                        searchStartTime = startTime;
                        break;
                    }
                }
            }
            else
            {
                for (var i = 0; i < searchStartTimeList.Count(); i++)
                {
                    rawEvents = await calendarService.GetEventsByTimeAsync(
                        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);
        }