コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        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);
        }
コード例 #7
0
        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);
        }
コード例 #8
0
        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);
        }
コード例 #9
0
        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);
        }
コード例 #10
0
        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);
        }