コード例 #1
0
        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);
        }
コード例 #2
0
        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
        }