public async Task <ResultDto> ExecuteAsync(RequestAddNewMessageDto request)
        {
            return(await Task.Run(async() =>
            {
                try
                {
                    var chatroom = await _context.Chatrooms
                                   .FirstOrDefaultAsync(c => c.Guid == request.Guid);

                    var user = await _context.Users.FindAsync(request.UserId);

                    #region --Validation--
                    if (user == null || chatroom == null)
                    {
                        return new ResultDto()
                        {
                            Status = Common.Enums.ServiceStatus.NotFound,
                        };
                    }

                    if (!_context.UserInChatrooms.Any(u => u.ChatroomId == chatroom.Id && u.UserId == request.UserId))
                    {
                        return new ResultDto()
                        {
                            Status = Common.Enums.ServiceStatus.AccessDenied,
                        };
                    }

                    #endregion


                    Message message = new Message()
                    {
                        Chatroom = chatroom,
                        ChatroomID = chatroom.Id,
                        SendDate = DateTime.Now,
                        Sender = user,
                        SenderId = request.UserId,
                        Text = request.Text,
                        MessageType = MessageType.Massage
                    };

                    await _context.Messages.AddAsync(message);

                    await _context.SaveChangesAsync();

                    return new ResultDto()
                    {
                        Status = Common.Enums.ServiceStatus.Success
                    };
                }
                catch (Exception)
                {
                    return new ResultDto()
                    {
                        Status = Common.Enums.ServiceStatus.SystemError,
                    };
                }
            }));
        }
예제 #2
0
        public async Task <JsonResult> AddMessage([Bind("Text,Guid")] AddNewMessageViewModel Message)
        {
            RequestAddNewMessageDto request = new RequestAddNewMessageDto()
            {
                Guid   = Message.Guid,
                Text   = Message.Text,
                UserId = User.GetUserId()
            };

            var result = await _messagesFacad.AddNewMessageService.ExecuteAsync(request);

            return(Json(new { Status = result.Status }));
        }