Example #1
0
        public async Task <MessageCommentResponse> SendComment(AddMessageCommentRequest request)
        {
            User user = await _userManager.FindByEmailAsync(_contextAccessor.HttpContext.User.Identity.Name);

            MessageComment comment = _dbContext.MessageComments.FirstOrDefault(x => x.MessageId == request.MessageId);

            if (comment != null)
            {
                request.MessageId = comment.MessageId;
            }
            else
            {
                if (_dbContext.Messages.All(x => x.Id != request.MessageId))
                {
                    throw new BadRequestException($"MessageId = {request.MessageId} does not exists");
                }
            }

            var newComment = _mapper.Map <MessageComment>(request);

            newComment.UserId    = user.Id;
            newComment.CreatedAt = DateTime.UtcNow;
            _dbContext.Add(newComment);
            Message message = _dbContext.Messages.FirstOrDefault(x => x.Id == newComment.MessageId);

            if (message != null)
            {
                message.DeleteAt = message.DeleteAt?.Add(_messageExtraLifeTime);
                _dbContext.Entry(message).State = EntityState.Modified;
            }

            await _dbContext.SaveChangesAsync();

            return(_mapper.Map <MessageCommentResponse>(newComment));
        }
Example #2
0
            public async Task <MessageCommentsDto> Handle(Command request, CancellationToken cancellationToken)
            {
                var message = await _context.Messages.FindAsync(request.MessageId);

                if (message == null)
                {
                    throw new RestException(HttpStatusCode.NotFound, new { Message = "Not found" });
                }

                var user = await _context.Users.SingleOrDefaultAsync(x => x.UserName == request.Username);

                var comment = new MessageComment
                {
                    Author    = user,
                    Message   = message,
                    Body      = request.Body,
                    CreatedAt = DateTime.Now
                };

                // job.Comments.Add(jobcomment);
                message.MessageComments.Add(comment);

                var success = await _context.SaveChangesAsync() > 0;

                if (success)
                {
                    return(_mapper.Map <MessageCommentsDto>(comment));
                }

                throw new Exception("Problem saving changes");
            }