示例#1
0
        public override Response Handle(Request request)
        {
            Chat         Chat   = new Chat(int.Parse(request.Data["Chat"]));
            ClientStatus status = ClientStatus.GetInstance(Thread.CurrentThread.ManagedThreadId.ToString());

            if (!UserIsInChat(Chat))
            {
                return(ResponseError.DefineError(request, ResponseErrorType.InvalidChatError));
            }
            else
            {
                Dictionary <string, string> ResponseData = new Dictionary <string, string>
                {
                    ["Author"]  = status.User.Username,
                    ["Message"] = request.Data["Message"]
                };

                foreach (KeyValuePair <SocketHandler, ClientStatus> ClientData in Server.Clients)
                {
                    if (ClientData.Value.User.IsParticipant(Chat) && ClientData.Value.Chat != null && ClientData.Value.Chat.Id == Chat.Id)
                    {
                        Console.WriteLine("SENDED TO {0}", ClientData.Value.User.Username);
                        ClientData.Key.Send(new Response(status: ResponseStatus.Success, onRequest: RequestType.SpreadMessage, data: ResponseData));
                    }
                }
                try
                {
                    Chat.AddMessage(status.User, request.Data["Message"]);
                }
                catch (MySqlException)
                {
                    return(ResponseError.DefineError(request, ResponseErrorType.DatabaseAccessError));
                }
                return(new Response(ResponseStatus.Success, onRequest: request.Type));
            }
        }
 public void Save()
 {
     Chat.AddMessage(User, RequestData["Message"]);
 }