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