コード例 #1
0
        public async Task <MessageResponse> SendMessage(int userId, SendMessageRequest request)
        {
            request.Validate(ImmediateValidator.Instance);

            using (var conn = _dbConnFactory.CreateConnection())
            {
                var userChat = await conn.QueryFirstOrDefaultAsync <UserChat>
                                   ($"SELECT * FROM user_chats WHERE chat_id='{request.ChatId}' and user_id='{userId}'");

                Check.Value(userChat).NotNull();

                var message = new Message()
                {
                    UserId    = userId,
                    ChatId    = request.ChatId,
                    Text      = request.Message,
                    InvitedAt = DateTime.Now
                };

                await conn.ExecuteAsync("INSERT INTO messages (user_id, chat_id, text, invited_at) " +
                                        "VALUES (@UserId, @ChatId, @Text, @InvitedAt)", message);

                return(AutoMapper.Mapper.Map <Message, MessageResponse>(message));
            }
        }
コード例 #2
0
ファイル: ChatHub.cs プロジェクト: dankunis/web-lab
        public async Task SendMessage(SendMessageRequest request)
        {
            var message = new Message()
            {
                UserId    = this.UserId,
                ChatId    = request.ChatId,
                Text      = request.Message,
                InvitedAt = DateTime.Now
            };
            var response = AutoMapper.Mapper.Map <Message, MessageResponse>(message);

            response.UserEmail = this.UserLogin;

            request.Validate(ImmediateValidator.Instance);
            Check.Value(_chatsConnections.ContainsKey(request.ChatId)).IsTrue();
            Check.Value(_chatsConnections[request.ChatId].Contains(Context.ConnectionId)).IsTrue();

            _messages.GetOrAdd(request.ChatId, new List <Message>()).Add(message);
            await Clients.Group(request.ChatId.ToString()).SendAsync("SendMessage", response);
        }