/// <summary>
 /// Загрузка списка объектов из базы данных, их отображение в таблице, указание их кол-ва в Label
 /// </summary>
 /// <inheritdoc />
 public void AdditionalInitializeComponent()
 {
     FilterBarCoverLabel.Content = PageLiterals.FilterBarCoverLabel; // Сообщение-заглушка панели фильтрации
     try
     {
         _cancelledDetails        = CancelledDetailsService.GetCancelledDetailsOnDate(new DateTime(1990, 1, 1), DateTime.Today);
         PageDataGrid.ItemsSource = _cancelledDetails;
         ShowCountItemsPageDataGrid();
     }
     catch (StorageException ex)
     {
         Common.ShowDetailExceptionMessage(ex);
     }
 }
        /// <summary>
        /// Получение/формирование параметров отчёта, DataSource (список сущностей для таблицы), пути файла и заголовка
        /// </summary>
        /// <inheritdoc />
        public void AdditionalInitializeComponent()
        {
            _reportFile = Common.GetReportFilePath(ReportFileName); // Путь к файлу отчёта

            // Запрос параметров отчёта в отдельном окне
            const bool isPeriod                  = false;
            const bool isMounthOrYeath           = false;
            const bool isDate                    = false;
            const bool isDatePeriod              = false;
            const bool isKoefT                   = false;
            const bool isKoefZ                   = false;
            const bool isWorkGuild               = false;
            const bool isArea                    = false;
            const bool isWorkGuildSpecifiedOrAll = false;
            const bool isProduct                 = false;
            const bool isDetail                  = true;
            const bool isProductSpecifiedOrAll   = false;
            const bool isAssemblyUnit            = false;
            const bool isMonthYear               = false;

            const bool isTimeFund                         = false;
            const bool isProcentageOfLossTime             = false;
            const bool isProcentageOfPerformanceStandarts = false;
            const bool isAreaSpecifiedOrAll               = false;

            const string message          = "Укажите анулируемое изделие";
            var          parametersWindow = new ReportParametersWindow(isPeriod, isMounthOrYeath, isDate, isDatePeriod, isKoefT,
                                                                       isKoefZ, isWorkGuild, isArea, isWorkGuildSpecifiedOrAll, isProduct, isDetail, isProductSpecifiedOrAll,
                                                                       isAssemblyUnit, isMonthYear, isTimeFund,
                                                                       isProcentageOfLossTime, isProcentageOfPerformanceStandarts, isAreaSpecifiedOrAll, message)
            {
                Owner = Common.GetOwnerWindow()
            };

            parametersWindow.ShowDialog();
            if (!parametersWindow.DialogResult.HasValue || parametersWindow.DialogResult != true)
            {
                return;
            }

            // Получение введённых пользователем параметров
            var nullableDetail = parametersWindow.SelectedDetail();

            if (nullableDetail == null || nullableDetail == null)
            {
                const MessageBoxButton buttons      = MessageBoxButton.OK;
                const string           errorMessage = "Не указана деталь!";
                const MessageBoxImage  messageType  = MessageBoxImage.Error;
                MessageBox.Show(errorMessage, PageLiterals.HeaderValidation, buttons, messageType);
                return;
            }

            var detail = nullableDetail.CodeDetail;

            // Формирование одиночных строковых параметров отчёта

            _reportParameters = new[]
            {
                new ReportParameter("DetalId", detail.ToString())
            };
            try
            {
                var          resultReportList = CancelledDetailsService.GetCancelledDetails(detail);
                const string dataSourceName   = "CancelledDetails";
                _reportDataSource  = new ReportDataSource(dataSourceName, resultReportList);
                ReportViewer.Load += ReportViewer_Load;     // Подписка на метод загрузки и отображения отчёта
            }
            catch (StorageException ex)
            {
                Common.ShowDetailExceptionMessage(ex);
            }
        }
        /// <summary>
        /// Получение/формирование параметров отчёта, DataSource (список сущностей для таблицы), пути файла и заголовка
        /// </summary>
        /// <inheritdoc />
        public void AdditionalInitializeComponent()
        {
            _reportFile = Common.GetReportFilePath(ReportFileName); // Путь к файлу отчёта

            // Запрос параметров отчёта в отдельном окне
            const bool isPeriod                  = false;
            const bool isMounthOrYeath           = false;
            const bool isDate                    = false;
            const bool isDatePeriod              = false;
            const bool isKoefT                   = false;
            const bool isKoefZ                   = false;
            const bool isWorkGuild               = false;
            const bool isArea                    = false;
            const bool isWorkGuildSpecifiedOrAll = false;
            const bool isProduct                 = false;
            const bool isDetail                  = false;
            const bool isProductSpecifiedOrAll   = false;
            const bool isAssemblyUnit            = false;
            const bool isMonthYear               = true;

            const bool isTimeFund                         = false;
            const bool isProcentageOfLossTime             = false;
            const bool isProcentageOfPerformanceStandarts = false;
            const bool isAreaSpecifiedOrAll               = false;

            const string message          = "Укажите месяц и год";
            var          parametersWindow = new ReportParametersWindow(isPeriod, isMounthOrYeath, isDate, isDatePeriod, isKoefT,
                                                                       isKoefZ, isWorkGuild, isArea, isWorkGuildSpecifiedOrAll, isProduct, isDetail, isProductSpecifiedOrAll,
                                                                       isAssemblyUnit, isMonthYear, isTimeFund,
                                                                       isProcentageOfLossTime, isProcentageOfPerformanceStandarts, isAreaSpecifiedOrAll, message)
            {
                Owner = Common.GetOwnerWindow()
            };

            parametersWindow.ShowDialog();
            if (!parametersWindow.DialogResult.HasValue || parametersWindow.DialogResult != true)
            {
                return;
            }

            // Получение введённых пользователем параметров
            var nullableMonthYear = parametersWindow.SelectedMonthAndYear();

            if (nullableMonthYear.Item1 == null || nullableMonthYear.Item2 == null)
            {
                const MessageBoxButton buttons      = MessageBoxButton.OK;
                const string           errorMessage = "Не указаны месяц или год!";
                const MessageBoxImage  messageType  = MessageBoxImage.Error;
                MessageBox.Show(errorMessage, PageLiterals.HeaderValidation, buttons, messageType);
                return;
            }
            var year       = (int)nullableMonthYear.Item2;
            var month      = (int)nullableMonthYear.Item1;
            var dayOfMonth = month == 12 ? 31 : new DateTime(year, month + 1, 1).AddDays(-1).Day;

            var startDateTime = new DateTime(year, month, 1);
            var endDateTime   = new DateTime(year, month, dayOfMonth);

            // Формирование одиночных строковых параметров отчёта
            const int monthOffset = 1;
            var       monthName   = DateTimeFormatInfo.GetInstance(CultureInfo.CurrentCulture).MonthNames[month - monthOffset];

            _reportParameters = new[]
            {
                new ReportParameter("Month", monthName),
                new ReportParameter("Yeath", year.ToString())
            };
            try
            {
                var resultReportList
                    = CancelledDetailsService.GetCancelledDetailsOnDate(startDateTime, endDateTime);
                const string dataSourceName = "CancelledDetails";
                _reportDataSource  = new ReportDataSource(dataSourceName, resultReportList);
                ReportViewer.Load += ReportViewer_Load;     // Подписка на метод загрузки и отображения отчёта
            }
            catch (StorageException ex)
            {
                Common.ShowDetailExceptionMessage(ex);
            }
        }