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, }; } })); }
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 })); }