Ejemplo n.º 1
0
        private async void SaveButton_Click(object sender, RoutedEventArgs e)
        {
            if (TextboxName.Text == String.Empty ||
                TextboxSurname.Text == String.Empty ||
                TextboxAddress.Text == String.Empty ||
                TextBoxMobile1.Text == String.Empty ||
                TextBoxMobile2.Text == String.Empty
                )
            {
                MyMessageBox.Show("Необходимо заполнить все поля!", "Ошибка!"); goto exitMethod;
            }
            if ((CheckBoxMen.IsChecked == false && CheckBoxWomen.IsChecked == false) ||
                (CheckBoxMen.IsChecked == true && CheckBoxWomen.IsChecked == true))
            {
                MyMessageBox.Show("Выберите один вариант пола (либо мужчина либо женщина)", "Ошибка!"); goto exitMethod;
            }
            if (CheckBoxPastor.IsChecked == true && CheckBoxMinistryHelper.IsChecked == true)
            {
                MyMessageBox.Show("Брат может иметь талько одно назначение!", "Ошибка!"); goto exitMethod;
            }
            if (DayComboBoxBirth.Text == "День" || DayComboBoxBaptism.Text == "День")
            {
                MyMessageBox.Show("Проверьте правильно ли указан день рождения (крещения).", "Ошибка!"); goto exitMethod;
            }
            if (MonthComboBoxBirth.Text == "Месяц" || MonthComboBoxBaptism.Text == "Месяц")
            {
                MyMessageBox.Show("Проверьте правильно ли указан месяц рождения (крещения).", "Ошибка!"); goto exitMethod;
            }
            if (YearComboBoxBirth.Text == "Год" || YearComboBoxBaptism.Text == "Год")
            {
                MyMessageBox.Show("Проверьте правильно ли указан год рождения (крещения).", "Ошибка!"); goto exitMethod;
            }
            {
                if (Int32.TryParse(YearComboBoxBirth.Text, out int yearBirth) == false)
                {
                    MyMessageBox.Show("Укажите правильный год рождения!", "Ошибка");
                    goto exitMethod;
                }
                if (Int32.TryParse(YearComboBoxBaptism.Text, out int yearBaptism) == false)
                {
                    MyMessageBox.Show("Укажите правильный год крещения!", "Ошибка");
                    goto exitMethod;
                }
                if (yearBaptism < yearBirth) // Если год крещения больше года рождения - ошибка
                {
                    MyMessageBox.Show("Год рождения не может быть меньше, чем год крещения!", "Ошибка");
                    goto exitMethod;
                }
            }


            string          birthPublisher   = DayComboBoxBirth.Text + "." + Months[MonthComboBoxBirth.Text] + "." + YearComboBoxBirth.Text;
            string          baptismPublisher = DayComboBoxBaptism.Text + "." + Months[MonthComboBoxBaptism.Text] + "." + YearComboBoxBaptism.Text;
            PublishersRange publisher        = new PublishersRange()
            {
                Name        = TextboxSurname.Text + " " + TextboxName.Text,
                Adress      = TextboxAddress.Text,
                DateBirth   = birthPublisher,
                BuptismDate = baptismPublisher,
                Mobile1     = TextBoxMobile1.Text,
                Mobile2     = TextBoxMobile2.Text,
                Gender      = CheckBoxMen.IsChecked == true ? "М" : "Ж",
                Appointment = CheckBoxPastor.IsChecked == true ? "СТАР" : (CheckBoxMinistryHelper.IsChecked == true ? "СЛУЖ" : ""),
                Pioner      = CheckBoxPioner.IsChecked == true ? "П" : String.Empty
            };

            ProgressWindow waitWindow = new ProgressWindow();

            waitWindow.ProgressBar.IsIndeterminate = true;
            waitWindow.ProgressBar.Orientation     = System.Windows.Controls.Orientation.Horizontal;
            waitWindow.LabelInformation.Content    = String.Empty;
            waitWindow.WindowStartupLocation       = WindowStartupLocation.CenterOwner;
            waitWindow.Owner = this;
            waitWindow.Show();

            await Task.Run(() =>
            {
                MainWindow mainWindow = null;
                this.Dispatcher.Invoke(() => mainWindow = this.Owner as MainWindow);
                JwBookExcel excel = new JwBookExcel(mainWindow.userSettings.JWBookSettings.JWBookPuth);
                JwBookExcel.DataPublisher dpExcel = new JwBookExcel.DataPublisher(excel);
                if (dpExcel.IsPublisherContainsInTable(publisher.Name) == true)
                {
                    this.Dispatcher.Invoke(() =>
                    {
                        waitWindow.Close();
                        MyMessageBox.Show("Такой возвещатель уже есть в системе!", "Ошибка!");
                    });
                }
                else
                {
                    try
                    {
                        this.Dispatcher.Invoke(() =>
                        {
                            dpExcel.AddPublisher(publisher.Name, pioner: CheckBoxPioner.IsChecked.Value, pastor: CheckBoxPastor.IsChecked.Value, ministryAssistant: CheckBoxMinistryHelper.IsChecked.Value);
                            ExcelDBController.AddPublisher(publisher, mainWindow.userSettings.S21Settings);
                            waitWindow.Close();
                            MyMessageBox.Show($"Возвещатель \"{publisher.Name}\" успешно сохранён!", "Успешно!");
                            MainWindow window = this.Owner as MainWindow;
                            window.AddNotification(MainWindow.CreateNotification("Информация о возвещателях", $"Возвещатель \"{publisher.Name}\" успешно сохранён в Google таблицы и Excel файл."));
                        });
                    }
                    catch (InvalidOperationException)
                    {
                        waitWindow.Close();
                        MyMessageBox.Show($"Не удалось добавить возвещателя \"{publisher.Name}\". Проверьте настройки приложения. Возможно Вы не правильно настроили доступ к файлу excel. Или возможно у Вас открыт документ excel. Пожалуйста закройте его и повторите попытку.", "Ошибка!");
                        MainWindow window = this.Owner as MainWindow;
                        window.AddNotification(MainWindow.CreateNotification("Информация о возвещателях", $"Не удалось добавить возвещателя \"{publisher.Name}\". Проверьте настройки приложения. Возможно Вы не правильно настроили доступ к файлу excel. Или возможно у Вас открыт документ excel. Пожалуйста закройте его и повторите попытку."));
                    }
                }
            });

            this.Close();
            exitMethod :;
        }
Ejemplo n.º 2
0
        public async Task <UserSettings> StartAsync()
        {
            Backup backup = new Backup(userSettings);

            try // Обработка ошибок связанных с файловой системой и загрузки настроек.
            {
                if (!backup.LoadBackup(out userSettings))
                {
                    return(null); // мы не можем загрузить настройки. Нет возможности и подключиться к таблицам
                }

                JwBookExcel excel = new JwBookExcel(userSettings.JWBookSettings.JWBookPuth);
                try
                {
                    excel.ConnectFile();
                }
                catch (Exception)
                {
                    ;
                }

                // Если отчёт не отправлен в филиал.
                if (DateTime.Now.Day > 15 && DateTime.Now.Day < 20) // TODO: вынести в настройки
                {
                    JwBookExcel.ArchiveReports archive = new JwBookExcel.ArchiveReports(excel);
                    var checkDate = JwBookExcel.ConvertDateTimeToStringArray(DateTime.Now);
                    if (archive.ContainsMonthReport(checkDate[0], checkDate[1]) == false)
                    {
                        MyMessageBox.Show("Не забудьте отправить отчёт в филиал!", "Уведомление");
                        mainWindow.AddNotification(MainWindow.CreateNotification("Уведомление", "Пожалуйста заполните и отправьте отчёт в филиал!"));
                    }
                }
                mainWindow.AddNotification(MainWindow.CreateNotification("Cистемное уведомление", "Настройки успешно загружены."));
                return(userSettings);
            }
            catch (InvalidOperationException ex) // Битый файл или неправильно сгенерированна розметка.
            {
                waitWindow.Close();
                MyMessageBox.Show("Не удаеться правильно прочитать файл XML. Неккоректроне содержимое.", "Ошибка");
                mainWindow.AddNotification(MainWindow.CreateNotification("Cистемное уведомление", "Не удаеться правильно прочитать файл XML. Неккоректроне содержимое."));
            }
            catch (IndexOutOfRangeException ex) // Не нашли файл с настройками. Но директория уже создана.
            {
                var root = System.IO.Path.GetPathRoot(Environment.CurrentDirectory);
                waitWindow.Close();
                MyMessageBox.Show($@"Не обнаружен файл настроект (XML) в директории: {root}MisistryReports\Settings", "Ошибка");
                mainWindow.AddNotification(MainWindow.CreateNotification("Cистемное уведомление", "Чтобы начать пользоваться программой - пожалуйста настройте. После того, как укажете все необходимые настройки - не забудьте сохранить. Если у вас уже есть файл настроек - пожалуйста загрузите его."));
                mainWindow.AddNotification(MainWindow.CreateNotification("Cистемное уведомление", $@"Не обнаружен файл XML в директории: {root}MisistryReports\Settings"));
            }
            catch (System.IO.DirectoryNotFoundException)
            {
                // Create Dirictory -- Пользователь первый раз использует программу.
                CreateProgramDirectory();  // Создали необходимые системные директории.
                waitWindow.Close();
                mainWindow.AddNotification(MainWindow.CreateNotification("Системное уведомления", "Добро пожаловать! Ministry Reports это программа, которая поможет вам составлять и отправлять годовой отчёт в филиал. В это программе собраны все необходимые функции для удобного формирования годового отчета. Также вы можете отслеживать активность возвещателя, либо любого другого служителя собрания. Мы надеемся, что эта программа поможет вам формировать годовой отчет правильно и удобно. Чтобы начать пользоваться программой - настройте её."));
            }
            catch (NotSupportedException ex)
            {
                waitWindow.Close();
                MyMessageBox.Show("JWBook: " + ex.Message, "Ошибка");
                mainWindow.AddNotification(MainWindow.CreateNotification("Cистемное уведомление", "JWBook: " + ex.Message));
            }
            //catch (Exception ex)
            //{
            //    waitWindow.Close();
            //    MyMessageBox.Show($"Непредвиденная ошибка. Подробности: {ex.Message}", "Ошибка");
            //}
            return(null);
        }