public async Task <Unit> Handle(CreateComment request, CancellationToken cancellationToken) { var group = await _context.Groups. Include(g => g.Feed) .ThenInclude(f => f.Items) .ThenInclude(i => i.Comments) .FirstOrDefaultAsync(g => g.Id == request.GroupId, cancellationToken: cancellationToken); if (@group == null) { throw new ApplicationException("Requested group does not exist"); } var post = group.GetById(request.PostId); if (post == null) { throw new ApplicationException("Requested post doest not exist"); } var comment = new Comment(request.Content, null, post); post.AddComment(comment); await _context.Comments.AddAsync(comment, cancellationToken); await _context.SaveChangesAsync(cancellationToken); return(Unit.Value); }
public async Task <Unit> Handle(CreatePost request, CancellationToken cancellationToken) { var group = await _context.Groups .Include(g => g.Feed) .ThenInclude(f => f.Items) .ThenInclude(i => i.Comments) .Include(g => g.Users) .FirstOrDefaultAsync(g => g.Id == request.GroupId, cancellationToken); if (group is null) { throw new ApplicationException($"Group with id {request.GroupId} could not be found"); } var user = await _userAccessor.GetUserFromContext(cancellationToken); var post = new Post(request.Body, user, group); group.AddPost(post); if (!user.IsInGroup(group)) { user.AddGroup(group); } await _context.Items.AddAsync(post, cancellationToken); await _context.SaveChangesAsync(cancellationToken); return(Unit.Value); }
public async Task <Unit> Handle(CreateGroup request, CancellationToken cancellationToken) { var user = await _userAccessor.GetUserFromContext(cancellationToken); if (user is null) { throw new ApplicationException("user is null"); } var exists = await _context.Groups.AnyAsync(g => g.Name == request.Name, cancellationToken); if (exists) { throw new ApplicationException($"Group with name {request.Name} already exists"); } var tags = string.Join(",", request.Tags); var group = new Group(request.Name, tags, user); await _context.Groups.AddAsync(group, cancellationToken); await _context.SaveChangesAsync(cancellationToken); _logger.LogInformation("Creating new group"); return(Unit.Value); }
public async Task <Unit> Handle(DeleteComment request, CancellationToken cancellationToken) { var comment = await _context.Comments.FirstOrDefaultAsync(c => c.Id == request.CommentId, cancellationToken); _context.Comments.Remove(comment); await _context.SaveChangesAsync(cancellationToken); return(Unit.Value); }
public async Task <Unit> Handle(CreateUser request, CancellationToken cancellationToken) { await CheckUsername(request, cancellationToken); await CheckEmail(request, cancellationToken); var user = new User(request.Username, request.Password, request.Email); await _context.Users.AddAsync(user, cancellationToken); await _context.SaveChangesAsync(cancellationToken); return(Unit.Value); }
public async Task <Unit> Handle(DeleteUser request, CancellationToken cancellationToken) { var user = await _context.Users.FirstOrDefaultAsync(u => u.Id == request.UserId, cancellationToken); if (user == null) { throw new UserNotFoundException($"Could not find a user with id {request.UserId}"); } _context.Users.Remove(user); await _context.SaveChangesAsync(cancellationToken); return(Unit.Value); }
public async Task <Unit> Handle(DeletePost request, CancellationToken cancellationToken) { var group = await _context.Groups.FirstOrDefaultAsync(g => g.Id == request.GroupId, cancellationToken); if (group is null) { throw new ApplicationException($"Group with id {request.GroupId} could not be found"); } _context.Groups.Remove(group); await _context.SaveChangesAsync(cancellationToken); return(Unit.Value); }
public async Task <Unit> Handle(UpdateGroup request, CancellationToken cancellationToken) { var group = await _context.Groups.FirstOrDefaultAsync(g => g.Id == request.GroupId, cancellationToken); if (@group == null) { throw new ApplicationException($"Group with id {request.GroupId} could not be found"); } group.Name = request.Name; await _context.SaveChangesAsync(cancellationToken); return(Unit.Value); }
public async Task <Unit> Handle(UpdateGroup request, CancellationToken cancellationToken) { var comment = await _context.Comments.FirstOrDefaultAsync(c => c.Id == request.CommentId, cancellationToken); if (comment is null) { throw new ApplicationException("Requested comment does not exist"); } comment.Content = request.Content; await _context.SaveChangesAsync(cancellationToken); return(Unit.Value); }
public async Task <Unit> Handle(UpdateUser request, CancellationToken cancellationToken) { var user = await _context.Users.FirstOrDefaultAsync(u => u.Id == request.UserId, cancellationToken); if (user is null) { throw new UserNotFoundException($"Could not find a user with id {request.UserId}"); } user.Username = request.Username; user.Email = request.Email; user.Password = request.Password; await _context.SaveChangesAsync(cancellationToken); return(Unit.Value); }