示例#1
0
        public async Task <OperationResult <UpdateCommentResponse> > Handle(UpdateCommentRequest request)
        {
            var retro = await this.retroReposirotory.Get(request.RetroId);

            if (retro == null)
            {
                return(OperationResultCreator.Failed <UpdateCommentResponse>("Retro not found"));
            }

            var comment = retro.Groups
                          .SingleOrDefault(g => g.Id == request.GroupId)?
                          .Comments.SingleOrDefault(c => c.Id == request.Comment.Id);

            if (comment == null)
            {
                return(OperationResultCreator.Failed <UpdateCommentResponse>("Comment not found"));
            }

            comment.Text = request.Comment.Text;

            removedActions(request, comment);
            addActions(request, comment);

            await this.retroReposirotory.Update(retro);

            var response = new UpdateCommentResponse
            {
                Comment = new CommentDTO(comment, this.userContextProvider.GetUserId()),
                GroupId = request.GroupId,
                RetroId = request.RetroId
            };

            return(OperationResultCreator.Suceeded(response));
        }
示例#2
0
        private static void addActions(UpdateCommentRequest request, Domain.Comment comment)
        {
            var newActions = request.Comment.Actions.Where(a => a.Id == Guid.Empty);

            foreach (var action in newActions)
            {
                comment.Actions.Add(new Domain.Action(action.Text));
            }
        }
示例#3
0
        private static void removedActions(UpdateCommentRequest request, Domain.Comment comment)
        {
            var removedActions = comment.Actions
                                 .Where(a => !request.Comment.Actions.Select(ac => ac.Id).Contains(a.Id));

            foreach (var action in removedActions)
            {
                comment.Actions.Remove(action);
            }
        }