public async Task ExecuteAsync(SendChatFileMessageCommand message, CancellationToken token) { var users = message.ToUsersId.ToList(); users.Add(message.UserSendingId); var chatRoom = await _chatRoomRepository.GetChatRoomAsync(users, token); if (chatRoom == null) { chatRoom = new ChatRoom(users.Select(s => _userRepository.Load(s)).ToList()); await _chatRoomRepository.AddAsync(chatRoom, token); } var user = _userRepository.Load(message.UserSendingId); var chatMessage = new ChatAttachmentMessage(user, message.Blob, chatRoom); chatRoom.AddMessage(chatMessage); await _chatRoomRepository.UpdateAsync(chatRoom, token); await _chatMessageRepository.AddAsync(chatMessage, token); var id = chatMessage.Id; await _blobProvider.MoveAsync(message.Blob, $"{chatRoom.Id}/{id}", token); }
public async Task ExecuteAsync(SendChatTextMessageCommand message, CancellationToken token) { //var users = message.ToUsersId.ToList(); //users.Add(message.UserSendingId); var users = new[] { message.ToUsersId, message.UserSendingId }; var chatRoom = await _chatRoomRepository.GetChatRoomAsync(users, token); if (chatRoom == null) { var userSending = await _userRepository.LoadAsync(message.UserSendingId, token); var userReceiving = await _userRepository.LoadAsync(message.ToUsersId, token); if (userReceiving.Tutor == null) { throw new ArgumentException("sending a message not to tutor"); } chatRoom = new ChatRoom(new List <User>() { userSending, userReceiving }); await _chatRoomRepository.AddAsync(chatRoom, token); } var user = _userRepository.Load(message.UserSendingId); var chatMessage = new ChatTextMessage(user, message.Message, chatRoom); chatRoom.AddMessage(chatMessage); await _chatRoomRepository.UpdateAsync(chatRoom, token); await _chatMessageRepository.AddAsync(chatMessage, token); // need this in order to get id from nhibernate }