public static UpdateViewModel FromGroupClass(Model.Domain.GroupClass groupClass, int utcOffset) { return(new UpdateViewModel { Name = groupClass.Name, Anchors = groupClass.Anchors.Select(x => x.UserId).ToList(), RoomId = groupClass.Room?.Id, Participants = groupClass.Participants.Select(x => new ParticipantDto { Id = x.UserId, Name = $"{x.User.FirstName} {x.User.LastName}", Role = x.Role }).OrderBy(x => x.Name).ToList(), IsSolo = groupClass.IsSolo, GroupLevelId = groupClass.GroupLevel?.Id, Start = groupClass.StartClasses.AddMinutes(utcOffset), DurationTimeInMinutes = groupClass.DurationTimeInMinutes, NumberOfClasses = groupClass.NumberOfClasses, GroupClassId = groupClass.Id, ParticipantLimit = groupClass.ParticipantLimits, DayOfWeeks = groupClass.ClassDaysOfWeek.Select(x => new ClassDayOfWeekDto() { BeginTime = x.Hour.UTCTimeSpanToLocal(utcOffset), DayOfWeek = x.DayOfWeek }).ToList() }); }
public async Task <DataResult> Handle(Command request, CancellationToken cancellationToken) { Model.Domain.GroupClass groupClass = await _context.GroupClass.FirstOrDefaultAsync(x => x.Id == request.Id, cancellationToken); if (groupClass is null) { return(DataResult.Error(PolishReadableMessage.GroupClass.NotFound)); } _context.Remove(groupClass); await _context.SaveChangesAsync(cancellationToken); return(DataResult.Success()); }
public async Task <DataResult <GroupClassDetail> > Handle(Query request, CancellationToken cancellationToken) { Model.Domain.GroupClass groupClass = await _context.GroupClass .Include(x => x.GroupLevel) .Include(x => x.Room) .Include(x => x.Anchors) .ThenInclude(x => x.User) .Include(x => x.ClassDaysOfWeek) .FirstOrDefaultAsync(x => x.Id == request.Id, cancellationToken); if (groupClass is null) { return(DataResult <GroupClassDetail> .Error(PolishReadableMessage.GroupClass.NotFound)); } GroupClassDetail groupClassDetail = GroupClassDetail.From(groupClass, request.UtcOffsetInMinutes); return(DataResult <GroupClassDetail> .Success(groupClassDetail)); }
public async Task <DataResult <UpdateViewModel> > Handle(Query request, CancellationToken cancellationToken) { Model.Domain.GroupClass groupClass = await _context.GroupClass.Where(x => x.Id == request.GroupId) .Include(x => x.Anchors) .Include(x => x.Room) .Include(x => x.Participants) .ThenInclude(x => x.User) .Include(x => x.ClassDaysOfWeek) .FirstOrDefaultAsync(cancellationToken); if (groupClass is null) { return(DataResult <UpdateViewModel> .Error(PolishReadableMessage.GroupClass.NotFound)); } UpdateViewModel updateViewModel = UpdateViewModel.FromGroupClass(groupClass, request.UtcOffsetInMinutes).AsEdit(); return(DataResult <UpdateViewModel> .Success(updateViewModel)); }