Beispiel #1
0
        /// <summary>
        /// Получение/формирование параметров отчёта, DataSource (список сущностей для таблицы), пути файла и заголовка
        /// </summary>
        /// <inheritdoc />
        public void AdditionalInitializeComponent()
        {
            _reportFile = Common.GetReportFilePath(ReportFileName);                      // Путь к файлу отчёта

            // Запрос параметров отчёта в отдельном окне

            const bool   isPeriod         = true;
            const bool   isMounthOrYeath  = false;
            const bool   isWarehouse      = false;
            const bool   isWorkGuild      = false;
            const bool   isDate           = true;
            const bool   isDatePeriod     = false;
            const bool   isMonthYear      = false;
            const bool   isProduct        = false;
            const bool   isCompany        = true;
            const bool   isTypeProduct    = false;
            const bool   isFormaPayment   = false;
            const bool   isAbroad         = false;
            const string message          = "Выберите период выборки и компанию";
            var          parametersWindow = new ReportParametersWindow(isPeriod, isMounthOrYeath, isWarehouse,
                                                                       isWorkGuild, isDate, isDatePeriod, isMonthYear, isProduct, isCompany, isTypeProduct, isFormaPayment,
                                                                       isAbroad, message)
            {
                Owner = Common.GetOwnerWindow()
            };

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

            DateTime startDate;
            DateTime endDate;

            var period = parametersWindow.SelectedPeriod();

            if (period != "p")
            {
                // Получение введённых пользователем параметров
                var nullableLoadDateTime = parametersWindow.SelectedDateTime();
                if (nullableLoadDateTime == null)
                {
                    const string           errorMessage = "Дата не указана";
                    const MessageBoxButton buttons      = MessageBoxButton.OK;
                    const MessageBoxImage  messageType  = MessageBoxImage.Error;
                    MessageBox.Show(errorMessage, PageLiterals.HeaderValidation, buttons, messageType);
                    return;
                }

                var loadDateTime = (DateTime)nullableLoadDateTime;

                endDate   = loadDateTime.AddDays(-1);
                startDate = period == "m" ? new DateTime(endDate.Year, endDate.Month, 1)
                                        : new DateTime(endDate.Year, 1, 1);
            }
            else
            {
                // Получение введённых пользователем параметров
                var nullableStartDateTime = parametersWindow.SelectedDateTimeStart();
                var nullableEndDateTime   = parametersWindow.SelectedDateTimeEnd();
                if (nullableStartDateTime == null || nullableEndDateTime == null)
                {
                    const string           errorMessage = "Дата не указана";
                    const MessageBoxButton buttons      = MessageBoxButton.OK;
                    const MessageBoxImage  messageType  = MessageBoxImage.Error;
                    MessageBox.Show(errorMessage, PageLiterals.HeaderValidation, buttons, messageType);
                    return;
                }

                endDate   = ((DateTime)nullableEndDateTime).AddDays(-1);
                startDate = (DateTime)nullableStartDateTime;
            }

            var company = parametersWindow.SelectedCompany();

            // Формирование одиночных строковых параметров отчёта
            _reportParameters = new[] {
                new ReportParameter("StartDate", startDate.ToShortDateString()),
                new ReportParameter("EndDate", endDate.ToShortDateString())
            };
            try
            {
                var          resultReportList = ShipmentByCompanyService.GetShipmentByCompany(startDate, endDate, company);
                const string dataSourceName   = "ShipmentByCompany";
                _reportDataSource  = new ReportDataSource(dataSourceName, resultReportList);
                ReportViewer.Load += ReportViewer_Load;                     // Подписка на метод загрузки и отображения отчёта
            }
            catch (StorageException ex)
            {
                Common.ShowDetailExceptionMessage(ex);
            }
        }