public void InsertToChat(string chatId) { var dataChat = new InsertToChatMessageModel { RequestType = "InsertToChat", ChatId = chatId, From = Name }; Thread thread = new Thread(() => { ListenAnswerTCP(Client); }); thread.Start(); dataChat.MessageChat = $"User {Name} connected to chat"; _requestHandler.SendData(Client, Utils.SerlizeObject(dataChat)); while (true) { Console.WriteLine("Please enter message to send"); string inputMessage = Console.ReadLine(); Console.WriteLine($"You : {inputMessage}"); dataChat.MessageChat = inputMessage; _requestHandler.SendData(Client, Utils.SerlizeObject(dataChat)); if (inputMessage == "exit") { break; } } }
public void InsertToChat(string chatId) { var allOldMessages = GetAllOldMessages(chatId); var dataChat = new InsertToChatMessageModel { RequestType = MessageType.InsertToChat, ChatId = chatId, From = _user.Name }; dataChat.MessageChat = $"User {_user.Name} connected to chat"; _containerInterfaces.RequestHandler.SendData(_user.Client, Utils.SerlizeObject(dataChat)); string data = _containerInterfaces.ResponseHandler.GetResponse(_user.Client); var successSwithChat = Utils.DeSerlizeObject <MainRequest>(data); if (successSwithChat.RequestType == MessageType.ErrorResponse) { var error = Utils.DeSerlizeObject <ErrorMessage>(data); Console.WriteLine(error.Error); return; } var successChat = Utils.DeSerlizeObject <OkResponseMessage>(data); if (allOldMessages != null) { _containerInterfaces.SystemOutput.Print(allOldMessages); } Console.WriteLine(successChat.Message); Thread thread = new Thread(() => { ListenAnswerTCP(_user.Client); }); thread.Start(); while (true) { _containerInterfaces.SystemOutput.Print("Please enter message to send | for exit press exit"); string inputMessage = _containerInterfaces.SystemInput.StringInput(); _containerInterfaces.SystemOutput.Print($"You : {inputMessage}"); dataChat.MessageChat = inputMessage; _containerInterfaces.RequestHandler.SendData(_user.Client, Utils.SerlizeObject(dataChat)); if (inputMessage == "exit") { break; } } }
private void SendAll(ChatModule foundChat, InsertToChatMessageModel request, string message) { var allUserToSend = GetAllConnectedToSend(foundChat, request); foreach (var client in allUserToSend) { if (client.Client.Connected) { _requestHandler.SendData(client.Client, message); } } }
private void ConnectedToChat(string requestData) { string response = requestData; InsertToChatMessageModel request = Utils.DeSerlizeObject <InsertToChatMessageModel>(response); var clientSneder = _allChatDetails.GetClientByName(Name); ChatModule foundChat = _allChatDetails.GetChatById(request.ChatId); lock (locker) { _allChatDetails.UpdateCurrentChat(clientSneder, foundChat); } Console.WriteLine(clientSneder.CurrentConnectChat); while (true) { request = Utils.DeSerlizeObject <InsertToChatMessageModel>(response); var model = new NewChatMessage { RequestType = "NewChatMessage", From = request.From, Message = request.MessageChat }; string message = Utils.SerlizeObject(model); if (request.MessageChat == "exit") { lock (locker) { _allChatDetails.UpdateCurrentChat(clientSneder, null); //clientSneder.CurrentConnectChat = null; } model.Message = $"The user {model.From} disconnect from this chat"; SendAll(foundChat, request, $"User"); return; } SendAll(foundChat, request, message); foundChat.AddMessage(new MessageModel(MessageType.TextMessage, message, clientSneder, DateTime.Now)); response = _responseHandler.GetResponse(_allChatDetails.GetClientByName(Name).Client); } }
private List <ClientModel> GetAllConnectedToSend(ChatModule chat, InsertToChatMessageModel request) { //var allUserToSend = chat.Clients.Where(c => c.Name != request.From && c.Connected == true && c.CurrentConnectChat.ChatId == chat.ChatId); List <ClientModel> ls = new List <ClientModel>(); foreach (var client in chat.Clients) { if ((client.Name != request.From) && (client.Connected == true)) { if (client.CurrentConnectChat != null) { if (client.CurrentConnectChat.ChatId == chat.ChatId) { lock (locker) { ls.Add(client); } } } } } return(ls); }
private bool ValidateFirstConnectionToChat(IClientModel clientSneder, ChatModule chat, InsertToChatMessageModel data) { if (clientSneder.CurrentConnectChat == null) { if (chat == null) { var errorBody = new ErrorMessage { RequestType = MessageType.ErrorResponse, Error = $"There is not chat with id {data.ChatId}" }; _containerInterfaces.RequestHandler.SendData(clientSneder.Client, Utils.SerlizeObject(errorBody)); return(false); } else { var successBody = new OkResponseMessage { RequestType = MessageType.SuccessResponse, Message = $"user {data.From} in chat with {data.ChatId}" }; _containerInterfaces.RequestHandler.SendData(clientSneder.Client, Utils.SerlizeObject(successBody)); return(true); } } return(true); }