示例#1
0
        /// <summary>
        /// Metoda LogInButtonClick jest wywoływana po naciśnięciu przez użytkownika przycisku "LogInButton".
        /// Metoda ta wyszukuje użytkownika w bazie danych po jego identyfikatorze (IDCzytelnika).
        /// Jeżeli logowanie się powiodło to metoda ustawia zawartość MainFrame na panel aplikacji (ApplicationPage).
        /// Jeżeli logowanie się nie powiodło w programie wyrzucany jest wyjątek, a metoda wyświetla użytkownikowi stosowny komunikat.
        /// </summary>

        private void LogInButtonClick(object sender, RoutedEventArgs e)
        {
            using (var dbContext = new BibliotekaDBContext())
            {
                int  target;
                bool success = Int32.TryParse(this.ReaderID.Text, out target);
                var  login   = dbContext.Czytelnicy
                               .Where(reader => reader.IDCzytelnika == target);

                if (success)
                {
                    try
                    {
                        if (login.Count() == 1)
                        {
                            ApplicationPage app = new ApplicationPage(target);
                            Mw.MainFrame.Content = app;
                            app.GenerateUserPage();
                        }
                        else
                        {
                            throw new LogInException();
                        }
                    }
                    catch
                    {
                        LogInExceptionComunicate.Text = "Brak użytkownika w bazie.";
                    }
                }
                else
                {
                    LogInExceptionComunicate.Text = "Błędny login.";
                }
            }
        }
        /// <summary>
        /// Metoda SignUpButtonClick jest wywoływana po naciśnięciu przez użytkownika przycisku "SignUpButton".
        /// Metoda ta próbuje:
        /// - wywołać dla wartości pól formularza rejestracji metodę ValidateSignUpForm
        /// - utworzyć kontekst bazy danych i obiekt repezentujący nowego czytelnika z przypisanymi zwalidowanymi wartościami z formularza rejestracji.
        /// - dodać użytkownika do bazy danych i zapisać zmiany
        /// - zapisać w zmiennej newUserID identyfikator nowo dodanego użytkownika.
        /// - pokazać użytkownikowi jego nowe id poprzez zmianę zawartości obiektu MainFrame na stonę prezentacji ID (IDPage)
        /// Jeżeli którakolwiek z powyższych czynności się nie powiodła w programie wyrzucany jest wyjątek, a metoda wyświetla użytkownikowi stosowny komunikat.
        /// </summary>
        /// /// <seealso cref="ValidateSignUpForm(string, string, string, string, string, string, string, string, string)">
        /// Metoda walidująca dane wprowadzone w formularzu rejestracji.
        /// </seealso>

        private void SignUpButtonClick(object sender, RoutedEventArgs e)
        {
            int newUserID = 0;

            try
            {
                ValidateSignUpForm(
                    this.NameBox.Text,
                    this.SurnameBox.Text,
                    this.GenderBoxes,
                    this.CityBox.Text,
                    this.PostalCodeBox.Text,
                    this.StreetBox.Text,
                    this.HouseNumberBox.Text,
                    this.LocalNumberBox.Text,
                    this.EmailBox.Text
                    );

                using (var dbContext = new BibliotekaDBContext())
                {
                    var czytelnik = new Czytelnicy()
                    {
                        ImieCzytelnika     = this.NameBox.Text,
                        NazwiskoCzytelnika = this.SurnameBox.Text,
                        Plec = this.GenderBoxes,
                        DataPrzystapienia = DateTime.Now,
                        Miasto            = this.CityBox.Text,
                        KodPocztowy       = this.PostalCodeBox.Text,
                        Ulica             = this.StreetBox.Text,
                        NumerDomu         = this.HouseNumberBox.Text,
                        NumerLokalu       = this.LocalNumberBox.Text,
                        EMail             = this.EmailBox.Text
                    };

                    dbContext.Czytelnicy.Add(czytelnik);
                    dbContext.SaveChanges();

                    newUserID = czytelnik.IDCzytelnika;
                }
                Mw.MainFrame.Content = new IDPage(newUserID);
            }
            catch (SignUpException exception)
            {
                string Comunicate = null;
                switch (exception.Message)
                {
                case "email":
                    Comunicate = "Błędny email.";
                    break;

                case "numer domu":
                    Comunicate = "Błędny numer domu.";
                    break;

                case "numer lokalu":
                    Comunicate = "Błędny numer lokalu.";
                    break;

                case "ulica":
                    Comunicate = "Błędna nazwa ulicy.";
                    break;

                case "kod pocztowy":
                    Comunicate = "Format kodu pocztowego: 00-000";
                    break;

                case "miasto":
                    Comunicate = "Błędna nazwa miasta.";
                    break;

                case "płeć":
                    Comunicate = "Wybierz płeć.";
                    break;

                case "nazwisko":
                    Comunicate = "Niepoprawne nazwisko.";
                    break;

                case "imię":
                    Comunicate = "Niepoprawne imię.";
                    break;

                default:
                    Comunicate = "Nieznany błąd.";
                    break;
                }
                ComunicateBanner.Text = Comunicate;
            }
        }