protected override async Task <IReadOnlyCollection <EventReadModel> > Process(EventRangeQuery request, CancellationToken cancellationToken)
        {
            var tenant = await DataContext.Tenants
                         .FindAsync(request.TenantId)
                         .ConfigureAwait(false);

            var query = DataContext.Sessions
                        .AsNoTracking()
                        .Where(q => q.TenantId == request.TenantId)
                        .Where(q => q.StartDate >= request.Start && q.StartDate < request.End)
                        .OrderBy(q => q.StartDate)
                        .ThenBy(q => q.StartTime);

            var sessions = await query
                           .ProjectTo <SessionReadModel>(Mapper.ConfigurationProvider)
                           .ToListAsync(cancellationToken)
                           .ConfigureAwait(false);

            // convert to event
            var events = new List <EventReadModel>();

            foreach (var session in sessions)
            {
                var eventModel = new EventReadModel();
                eventModel.Id       = session.Id.ToString();
                eventModel.AllDay   = false;
                eventModel.Editable = false;
                eventModel.Required = session.IsRequired;

                eventModel.Title       = $"{session.TopicTitle} - {session.GroupName}";
                eventModel.Description = session.TopicSummary;
                eventModel.Location    = session.LocationName;

                if (session.IsRequired)
                {
                    if (eventModel.ClassNames == null)
                    {
                        eventModel.ClassNames = new List <string>();
                    }

                    eventModel.ClassNames.Add("event-required");
                }

                var startDate = DateTimeFactory.Create(session.StartDate, session.StartTime, session.TenantTimeZone);
                eventModel.Start = startDate?.ToUniversalTime();

                var endDate = DateTimeFactory.Create(session.EndDate, session.EndTime, session.TenantTimeZone);
                eventModel.End = endDate?.ToUniversalTime();

                eventModel.Modified = session.Updated;

                var url = _urlHelper.Page(
                    "/topic/view",
                    values: new
                {
                    tenant = tenant.Slug,
                    id     = session.TopicId
                }
                    );

                eventModel.Url = url;

                events.Add(eventModel);
            }
            return(events);
        }
 /// <summary>
 /// Create a new instance of <see cref="ChineseDateTime"/><br />
 /// 创建一个新的 <see cref="ChineseDateTime"/> 实例。
 /// </summary>
 /// <param name="year"></param>
 /// <param name="month"></param>
 /// <param name="day"></param>
 /// <returns></returns>
 public static ChineseDateTime Of(int year, int month, int day)
 {
     return(new ChineseDateTime(DateTimeFactory.Create(year, month, day)));
 }
 /// <summary>
 /// Create a new instance of <see cref="IslamicDateInfo"/><br />
 /// 创建一个新的 <see cref="IslamicDateInfo"/> 实例。
 /// </summary>
 /// <param name="year"></param>
 /// <param name="month"></param>
 /// <param name="day"></param>
 /// <param name="calendar"></param>
 /// <returns></returns>
 public static IslamicDateInfo Of(int year, int month, int day, CalendarSystem calendar = null)
 {
     return(new IslamicDateInfo(DateTimeFactory.Create(year, month, day), calendar ?? _islamicCalendar));
 }
示例#4
0
 /// <summary>
 /// Create a new instance of <see cref="IslamicDateTime"/><br />
 /// 创建一个新的 <see cref="IslamicDateTime"/> 实例。
 /// </summary>
 /// <param name="year"></param>
 /// <param name="month"></param>
 /// <param name="day"></param>
 /// <param name="hour"></param>
 /// <param name="minute"></param>
 /// <param name="second"></param>
 /// <param name="millisecond"></param>
 /// <param name="calendar"></param>
 /// <returns></returns>
 public static IslamicDateTime Of(int year, int month, int day, int hour, int minute, int second, int millisecond, CalendarSystem calendar = null)
 {
     return(new(DateTimeFactory.Create(year, month, day, hour, minute, second, millisecond), calendar ?? _islamicCalendar));
 }
 /// <summary>
 /// 设置日期
 /// </summary>
 /// <param name="dt">时间</param>
 /// <param name="year">年</param>
 /// <param name="month">月</param>
 public static DateTime SetDate(this DateTime dt, int year, int month) => DateTimeFactory.Create(year, month, dt.Day, dt.Hour, dt.Minute, dt.Second, dt.Millisecond, dt.Kind);
 /// <summary>
 /// 设置时间 - 毫秒
 /// </summary>
 /// <param name="dt">时间</param>
 /// <param name="millisecond">毫秒</param>
 public static DateTime SetMillisecond(this DateTime dt, int millisecond) => DateTimeFactory.Create(dt.Year, dt.Month, dt.Day, dt.Hour, dt.Minute, dt.Second, millisecond, dt.Kind);
 /// <summary>
 /// 设置时间
 /// </summary>
 /// <param name="dt">时间</param>
 /// <param name="hour">时</param>
 /// <param name="minute">分</param>
 /// <param name="second">秒</param>
 /// <param name="millisecond">毫秒</param>
 public static DateTime SetTime(this DateTime dt, int hour, int minute, int second, int millisecond) => DateTimeFactory.Create(dt.Year, dt.Month, dt.Day, hour, minute, second, millisecond, dt.Kind);