Ejemplo n.º 1
0
        private void LogIn()
        {
            try
            {
                using (UnitOfWork uow = new UnitOfWork())
                {
                    List <User> result = uow.UserRepository.Get(x => x.UserLogin == User.UserLogin).ToList();

                    if (result.Count() == 0)
                    {
                        Message = "Логин или пароль неверный!";
                        return;
                    }
                    else if (PasswordHash.IsPasswordValid(UserPassword, int.Parse(result.First <User>().Salt), result.First <User>().UserPassword))
                    {
                        User deserializedeUser = result.First();
                        XmlSerializeWrapper <User> .Serialize(deserializedeUser, "../lastUser.xml");

                        DeserializedUser.deserializedUser = XmlSerializeWrapper <User> .Deserialize("../lastUser.xml", FileMode.OpenOrCreate);

                        List <OptionsPack> optionsPacks = XmlSerializeWrapper <List <OptionsPack> > .Deserialize("../appSettings.xml", FileMode.OpenOrCreate);

                        OptionsViewModel.OptionsPack = optionsPacks.Find(x => x.OptionUserId == deserializedeUser.Id);

                        MainWindow mainWindow = new MainWindow();
                        mainWindow.Show();

                        OptionsViewModel.OptionsPack?.setAppAccent();
                        OptionsViewModel.OptionsPack?.setAppTheme();

                        OptionsPack optionsPackUser = optionsPacks.Find(x => x.OptionUserId == DeserializedUser.deserializedUser.Id);

                        if (optionsPackUser == null)
                        {
                            optionsPacks.Add(new OptionsPack());
                            XmlSerializeWrapper <List <OptionsPack> > .Serialize(optionsPacks, "../appSettings.xml");
                        }

                        foreach (Window window in Application.Current.Windows)
                        {
                            if (window is LogInWindow)
                            {
                                window.Close();
                                break;
                            }
                        }
                    }
                    else
                    {
                        Message = "Логин или пароль неверный!";
                        return;
                    }
                }
            }
            catch (Exception exception)
            {
                MessageBox.Show("Сообщение ошибки: " + exception.Message, "Произошла ошибка");
            }
        }
        private void Application_Startup(object sender, StartupEventArgs e)
        {
            List <OptionsPack> optionsPacks = XmlSerializeWrapper <List <OptionsPack> > .Deserialize("../appSettings.xml", FileMode.Open);

            OptionsPack currentUserSettings = optionsPacks.Find(x => x.OptionUserId == DeserializedUser.deserializedUser.Id);

            if (currentUserSettings?.IsSplashScreenShown ?? true)
            {
                SplashScreen splash = new SplashScreen("../Resources/foodTrackSplash.png");
                splash.Show(autoClose: false, topMost: false);
                splash.Close(TimeSpan.FromSeconds(1));
            }
            using (UnitOfWork unit = new UnitOfWork())
            {
                IEnumerable <User> resultUserFound = unit.UserRepository.Get(x => x.UserLogin == DeserializedUser.deserializedUser.UserLogin);

                if (resultUserFound.Count() != 0 && (currentUserSettings?.IsStayAuthorized ?? false))
                {
                    if (resultUserFound.First <User>().UserPassword.SequenceEqual <byte>(DeserializedUser.deserializedUser.UserPassword))
                    {
                        MainWindow mainWindow = new MainWindow();

                        mainWindow.Show();

                        currentUserSettings.setAppTheme();
                        currentUserSettings.setAppAccent();

                        OptionsViewModel.OptionsPack = currentUserSettings;
                    }
                    else
                    {
                        LogInWindow logInWindow = new LogInWindow();
                        logInWindow.Show();
                    }
                }
                else
                {
                    LogInWindow logInWindow = new LogInWindow();
                    logInWindow.Show();
                }
            }
        }