Esempio n. 1
0
        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");
            }
        }
Esempio n. 2
0
        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);
        }
Esempio n. 4
0
        } /*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();
        }
Esempio n. 5
0
        //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);
            }
        }
Esempio n. 6
0
        /// <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);
                }
            }
        }