Exemplo n.º 1
0
        private void ButtonOk_OnClick(object sender, RoutedEventArgs e)
        {
            if (tabControl != null && tabControl.SelectedIndex != 0)
            {
                tabControl.SelectedIndex = 0;
                return;
            }

            profilesList.IsCloseVisible = Visibility.Collapsed;
            profilesList.Items.Refresh();
            tbProfileName.HideTip();

            mainGrid.IsEnabled = false;
            ProfilesDbLogic.SaveProfilesToDb(m_ProfileEngine.PlainCollection);
            var dialog = new DialogWindow("Сообщение", "Профили в базе обновлены");

            dialog.ButtonConfig(DialogWindow.EbConfig.OK);
            var result = dialog.ShowDialog();

            if (result.HasValue && result.Value)
            {
                mainGrid.IsEnabled = true;
            }

            //if (NavigationService != null)
            //{
            //    ClearFilter();
            //    NavigationService.Navigate(Cache.Technician);
            //}
        }
        private void NeedSyncButton_Click(object sender, RoutedEventArgs e)
        {
            //синхронизируем выделенный профиль
            Profile profile = profilesList.SelectedItem as Profile;

            if (profile != null)
            {
                bool?Found = false;

                //UI имеет возможность работы с сервером CentralDatabaseService без использования Service.exe. если связь с сервером установлена и профиль успешно получен, то синхронизируем выбранный профиль
                ProfileItem ActualProfileItem = GetProfileItemFromServerDb(sender, profile.Name, Cache.Main.VM.MmeCode, ref Found);

                switch (Found)
                {
                case null:
                    //связь с SCME.DatabaseServer не установлена, но работоспособность должна быть в любом случае
                    break;

                case true:
                    if (ActualProfileItem != null)
                    {
                        //профиль получен, смотрим надо ли выполнять синхронизацию
                        if (IsNeedSync(ActualProfileItem, profile))
                        {
                            //есть необходимость в синхронизации данных, заменяем данные профиля который отображается в списке теми данными, что содержатся в ActualProfileItem
                            CopyProfileItemToProfile(ActualProfileItem, profile);

                            //после выполнения копирования идентификатор профиля изменился, поэтому
                            FLastSelectedProfileKey = profile.Key;

                            //сохраняем синхронизированный profile в локальную базу данных
                            IList <Profile> ProfileEngine = (IList <Profile>)profilesList.ItemsSource;
                            ProfilesDbLogic.SaveProfilesToDb(ProfileEngine);

                            //обновляем данные на форме
                            RefreshBindings();
                        }
                    }

                    break;

                case false:
                {
                    //искомый профиль не найден, возможно он был удалён из центральной базы данных, значит надо удалить его и из локальноЙ базы данных
                    IList <Profile> ProfileEngine = (IList <Profile>)profilesList.ItemsSource;
                    ProfileEngine.Remove(profile);
                    ProfilesDbLogic.SaveProfilesToDb(ProfileEngine);
                    //BuildTittle();

                    if (profilesList.Items.Count > 0)
                    {
                        profilesList.SelectedIndex = 0;
                    }
                }

                break;
                }

                //синхронизация выбранного профиля выполнена - прячем кнопку
                ((Button)sender).Visibility = Visibility.Hidden;
            }
        }