private void HandlingAskUser(AskConnectUser ask) { List <string> users = new List <string>(); foreach (KeyValuePair <string, TcpClient> client in _DestPrive) { if (client.Key.Equals(ask.asker.Username) == false) { users.Add(client.Key); } } if (users.Count <= 0) { throw new NoUserConnectedException("No other user are connected !"); } Net.SendServerCommunication(_connection.GetStream(), new Response(ask, users)); }
public void HomeMenu() { List <string> choices = new List <string>(); if (_client.User == null) { choices.Add("Log In"); choices.Add("Sign in"); } else { choices.Add("Disconnect"); choices.Add("Join a new Topic"); choices.Add("Create a new Topic"); choices.Add("Select a Topic" + " ->"); choices.Add("Select a User" + " ->"); } choices.Add("<- Exit"); ChoiceSelection.Choice choice = new ChoiceSelection.Choice("Welcome to the Home Menu, what do you want to do ?", choices); int menu = ChoiceSelection.GetChoice(choice, (this._client.User == null) ? null : this._client.User.Username, null); if (_client.User == null) { switch (menu) { case 0: Console.Clear(); ConsoleManager.PrintTrack(); string username = ConsoleManager.Read("Please enter your username : "******"Username = "******"\nPlease enter your password : "******"I'm connected as " + username); } break; case CommunicationException ce: ConsoleManager.TrackWriteLine(ConsoleColor.Red, ce.Message); break; } HomeMenu(); }).OnResponse; break; case 1: Console.Clear(); ConsoleManager.PrintTrack(); username = ConsoleManager.Read("Please enter a username : "******"Username = "******"\nPlease enter a password : "******"Username = "******"\nPassword = "******"\nPlease enter a email : "); //On cherche à créer un User request = new SignIn(username, password, email); Net.SendClientCommunication(this._comm.GetStream(), request); ResponseEvent.MyResponseEvent += new ResponseEvent(request, (response) => { switch (response) { case Success success: //Si la réponse est Success, alors la création s'est bien effectué ConsoleManager.TrackWriteLine(ConsoleColor.Green, success.ToString()); break; case CommunicationException error: ConsoleManager.TrackWriteLine(ConsoleColor.Red, error.Message); break; default: ConsoleManager.TrackWriteLine(ConsoleColor.Red, "Error while creating new User : "******"Please enter the name of the Topic : "); Console.Clear(); ConsoleManager.PrintTrack(); string password = ConsoleManager.Read("Topic name = " + topic_name + "\nPlease enter the password of the Topic : "); //We tried to join the first Topic found ClientCommunication request = new Join(_client.User, topic_name, password); Net.SendClientCommunication(_comm.GetStream(), request); ResponseEvent.MyResponseEvent += new ResponseEvent(request, (response) => { //On écoute la réponse switch (response) { case Topic t: //Si la réponse est bien un Topic, alors le join s'est bien effectué ConsoleManager.TrackWriteLine(ConsoleColor.Green, "Connection to the Topic `" + t.Topic_name + "` ! "); break; case CommunicationException error: ConsoleManager.TrackWriteLine(ConsoleColor.Red, error.Message); break; default: ConsoleManager.TrackWriteLine(ConsoleColor.Red, "Error while joining Topic : " + response); break; } HomeMenu(); }).OnResponse; break; case 2: Console.Clear(); ConsoleManager.PrintTrack(); topic_name = ConsoleManager.Read("Please enter the name of the new Topic : "); Console.Clear(); ConsoleManager.PrintTrack(); password = ConsoleManager.Read("Topic name = " + topic_name + "\nPlease enter the password of the new Topic : "); //We tried to create the Topic request = new Creation(topic_name, _client.User, password); Net.SendClientCommunication(_comm.GetStream(), request); ResponseEvent.MyResponseEvent += new ResponseEvent(request, (response) => { //On écoute la réponse switch (response) { case Topic topic: ConsoleManager.TrackWriteLine(ConsoleColor.Green, "New Topic `" + topic.Topic_name + "` created !"); break; case CommunicationException error: ConsoleManager.TrackWriteLine(ConsoleColor.Red, error.Message); break; default: ConsoleManager.TrackWriteLine(ConsoleColor.Red, "Error while creating Topic : " + response); break; } HomeMenu(); }).OnResponse; break; case 3: SelectTopicMenu(); break; case 4: request = new AskConnectUser(this._client.User); Net.SendClientCommunication(this._comm.GetStream(), request); ResponseEvent.MyResponseEvent += new ResponseEvent(request, (response) => { switch (response) { case List <string> users_names: SelectClientMenu(users_names); break; case NoUserConnectedException e: ConsoleManager.TrackWriteLine(ConsoleColor.Red, e.Message); HomeMenu(); break; default: ConsoleManager.TrackWriteLine(ConsoleColor.Red, "Error while acquiring all connected Users " + response); break; } }).OnResponse; break; case 5: this._client.KillClient(); break; } } }