private void Disconnect_button_Click(object sender, RoutedEventArgs e) { var callback = new ClientCallback(); var client = new FourRowServiceClient(new InstanceContext(callback)); if (string.IsNullOrEmpty(TbUsername.Text)) { MessageBox.Show("insert valid username to disconnet THIS BUTTON IS FOR DEBUG USAGE ONLY!!"); } else { var userName = TbUsername.Text.Trim(); try { client.ClientDisconnected(userName); } catch (DbException ex) { MessageBox.Show(ex.Message); } catch (FaultException<UserDoesntExistsFault> ex) { MessageBox.Show(ex.Detail.Details); TbPasswrd.Clear(); TbUsername.Clear(); return; } catch (Exception ex) { MessageBox.Show(ex.Message); } MessageBox.Show(userName + " disconnected successfully"); } }
private void ButtonSubmit_Click(object sender, RoutedEventArgs e) { if (!utils.AllTextboxesFilled(MainGrid)) { MessageBox.Show("Please insert User name and Password"); return; } var callback = new ClientCallback(); var client = new FourRowServiceClient(new InstanceContext(callback)); var userName = TbUsername.Text.Trim(); var pass = TbPasswrd.Password.Trim(); try { client.ClientRegistered(userName, utils.HashValue(pass).ToString()); } catch (DbException dex) { MessageBox.Show(dex.Message); } catch (FaultException <UserExistsFault> fault) { MessageBox.Show(fault.Detail.Details); return; } catch (Exception ex) { MessageBox.Show(ex.Message); } Close(); }
/// <summary> /// this function is static for use at other windiws. /// need to check ping and need to return false when no link to server after time. /// this function is danny kotler code, with my extra. /// </summary> /// <param name="client">Client ref</param> /// <returns></returns> public static bool CheckPingToServer(FourRowServiceClient client) { if (client.Endpoint.Binding != null) { var ts = client.Endpoint.Binding.ReceiveTimeout; var time = new TimeSpan(0, 0, 10); client.Endpoint.Binding.CloseTimeout = time; client.Endpoint.Binding.OpenTimeout = time; client.Endpoint.Binding.ReceiveTimeout = time; client.Endpoint.Binding.SendTimeout = time; if (client.Ping()) { if (client.Endpoint.Binding != null) { client.Endpoint.Binding.ReceiveTimeout = ts; } return(true); } if (client.Endpoint.Binding != null) { client.Endpoint.Binding.ReceiveTimeout = ts; } } return(false); }
} /*end of constructor*/ private void Button_Connect_Click(object sender, RoutedEventArgs e) { var callback = new ClientCallback(); var client = new FourRowServiceClient(new InstanceContext(callback)); if (!utils.AllTextboxesFilled(MainGrid)) { MessageBox.Show("Please insert User name and Password"); return; } var userName = TbUsername.Text.Trim(); var pass = TbPasswrd.Password.Trim(); try { client.ClientConnected(userName, utils.HashValue(pass).ToString()); } catch (DbException ex) { MessageBox.Show(ex.Message); } catch (FaultException<UserDoesntExistsFault> ex) { MessageBox.Show(ex.Detail.Details); TbPasswrd.Clear(); TbUsername.Clear(); return; } catch (FaultException<UserAlreadyConnectedFault> ex) { MessageBox.Show(ex.Detail.Details); return; } catch (Exception ex) { MessageBox.Show(ex.Message); } WaitingWindow waitingWindow = null; try { var ww = new WaitingWindow { Username = userName, Client = client, Callback = callback, Title = "Wellcome " + userName }; waitingWindow = ww; } catch (Exception ex) { MessageBox.Show(ex.Message); client.ClientDisconnected(userName); } Close(); waitingWindow?.Show(); }
//private void Button_Register_Click(object sender, RoutedEventArgs e) //{ // if (!AllTextboxesFilled()) // { // MessageBox.Show("Please insert User name and Password"); // return; // } // ClientCallback callback = new ClientCallback(); // FourRowServiceClient client = new FourRowServiceClient(new InstanceContext(callback)); // string userName = tbUsername.Text.Trim(); // string pass = tbPasswrd.Password.Trim(); // ////Hashing thing // //ASCIIEncoding ascii = new ASCIIEncoding( ); // //var data = Encoding.ASCII.GetBytes(pass); // //var sha1 = new SHA1CryptoServiceProvider(); // //var sha1data = sha1.ComputeHash(data); // //string hashedPassword = ascii.GetString(sha1data); // try // { // client.clientRegisterd(userName, HashValue(pass).ToString()); // } // catch (Exception ex) // { // MessageBox.Show(ex.Message); // } // tbPasswrd.Clear(); // tbUsername.Clear(); // da.From = 10; // da.To = 14; // da.AutoReverse = true; // da.RepeatBehavior = new RepeatBehavior(3); // da.Duration = new Duration(TimeSpan.FromSeconds(0.5)); // tbRegistred.Visibility = Visibility.Visible; // tbRegistred.BeginAnimation(TextBlock.FontSizeProperty, da); //} private void ClearUsers_Click(object sender, RoutedEventArgs e) { var callback = new ClientCallback(); var client = new FourRowServiceClient(new InstanceContext(callback)); try { client.ClearUsers(); } catch (Exception ex) { MessageBox.Show(ex.Message); } }
/// <summary> /// this function called when click the register button. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void RegisterButton_OnClick(object sender, RoutedEventArgs e) { bool hasChangeDb = false; // when DB has update. at the end of register. string password = TbPassword.Password.Trim(); if (!string.IsNullOrEmpty(TbUsername.Text) && !string.IsNullOrEmpty(TbPassword.Password) && !string.IsNullOrEmpty(TbEmojiName.Text)) { var clientCallBack = new ClientCallBack(); // temp callback obj. var client = new FourRowServiceClient(new InstanceContext(clientCallBack)); // client for this moment. var userName = TbUsername.Text.Trim(); var emojiName = TbEmojiName.Text; try { if (WaitingRoomWindow.CheckPingToServer(client)) // try to register at the server. { hasChangeDb = client.Register(userName, LoginWindow.HashValue(password), emojiName); } } catch (FaultException <UserExistsFault> fault) // user exist at the DB (key-username). { MessageBox.Show(fault.Detail.Details, "Error", MessageBoxButton.OK, MessageBoxImage.Error); } catch (FaultException <DbFault> fault) // DB exception has happened at the server. { if (fault.InnerException != null) { MessageBox.Show( fault.Detail.Details + " ##\n##\n" + fault.InnerException.Message); } } catch (TimeoutException) // timeout exceptions. { MessageBox.Show("The Server Has Disconnected!", "Error", MessageBoxButton.OK, MessageBoxImage.Error); } catch (Exception ex) // all un know exceptions. { if (ex.InnerException != null && ex.InnerException.Message.Contains("Unable to connect to the remote server")) { MessageBox.Show(ex.InnerException.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error); } else { MessageBox.Show(ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error); } } if (hasChangeDb) // notify about the DB update. { MessageBox.Show("Register Success ✔️, Database UpDate!", "Information", MessageBoxButton.OK, MessageBoxImage.Information); _manualClosing = true; // for moving the waiting room without ask if want the exit. Close(); } } else // no all field are fill. { if (!string.IsNullOrEmpty(TbUsername.Text)) { MessageBox.Show("Please Fill Username!", "Error", MessageBoxButton.OK, MessageBoxImage.Error); } else if (!string.IsNullOrEmpty(TbPassword.Password)) { MessageBox.Show("Please Fill Password!", "Error", MessageBoxButton.OK, MessageBoxImage.Error); } else { MessageBox.Show("Please Browser a Icon!", "Error", MessageBoxButton.OK, MessageBoxImage.Error); } } }
/// <summary> /// this function is when click at the connect button. /// check at the DB and create a client. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void ConnectButton_OnClick(object sender, RoutedEventArgs e) { if (!string.IsNullOrEmpty(TbUsername.Text) && !string.IsNullOrEmpty(TbPassword.Password)) { ConnectButton.Cursor = Cursors.Wait; var clientCallBack = new ClientCallBack(); // create a client callback. var client = new FourRowServiceClient(new InstanceContext(clientCallBack)); // create the client. string username = TbUsername.Text.Trim(); var name = username; string password = TbPassword.Password.Trim(); try { if (WaitingRoomWindow.CheckPingToServer(client)) { client.Connect(username, HashValue(password)); // try to connect. var waitingRoomWindow = new WaitingRoomWindow(clientCallBack) // create a waiting window.. { Client = client, Username = username, Title = username + " Waiting Room" }; _manualClosing = true; // manual closing is happened. Close(); ConnectButton.Cursor = Cursors.Arrow; waitingRoomWindow.Show(); } else { MessageBox.Show("The Server Has Disconnected!", "Error", MessageBoxButton.OK, MessageBoxImage.Error); } } catch (FaultException <UserExistsFault> fault) // user found at the DB at the server. { MessageBox.Show(fault.Detail.Details, "Error", MessageBoxButton.OK, MessageBoxImage.Error); } catch (FaultException <UserNotExistsFault> fault) // user not found at the DB at the server. { MessageBox.Show(fault.Detail.Details, "Error", MessageBoxButton.OK, MessageBoxImage.Error); } catch (FaultException <WrongPasswordFault> fault) // user wrong password error. { MessageBox.Show(fault.Detail.Details, "Error", MessageBoxButton.OK, MessageBoxImage.Error); } catch (TimeoutException) // timeout exceptions. { MessageBox.Show("The Server Has Disconnected!", "Error", MessageBoxButton.OK, MessageBoxImage.Error); } catch (Exception ex) // all un know exceptions. { if (ex.InnerException != null && ex.InnerException.Message.Contains("Unable to connect to the remote server")) { MessageBox.Show(ex.InnerException.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error); } else { MessageBox.Show(ex.Message); } } } else { if (string.IsNullOrEmpty(TbUsername.Text)) { MessageBox.Show("Please Fill Username!", "Error", MessageBoxButton.OK, MessageBoxImage.Error); } else { MessageBox.Show("Please Fill Password!", "Error", MessageBoxButton.OK, MessageBoxImage.Error); } } }