internal ReportConfiguration CreateReport(string reportName)
        {
            if (string.IsNullOrWhiteSpace(reportName))
            {
                throw new ArgumentException("Argument is null or whitespace", nameof(reportName));
            }
            if (reportName.Length < 12)
            {
                throw new ArgumentException("Report name can'be less that 12 symbols", nameof(reportName));
            }
            // todo exception localizations
            // todo exception type
            if (!reportName.Substring(0, reportName.Length - 6).StartsWith(GroupName))
            {
                throw new ArgumentException($"{nameof(reportName)} is not from this group.");
            }

            var reportConfiguration = new ReportConfiguration
            {
                ReportName  = reportName,
                PrinterName = PrinterName,
                Duplex      = Duplex,
                PaperFormat = PaperFormat
            };

            if (Reports.Count > 0)
            {
                var first = Reports.First();
                if (Reports.All(configuration => configuration.PrinterName == first.PrinterName))
                {
                    reportConfiguration.PrinterName = first.PrinterName;
                }
                if (Reports.All(configuration => configuration.Duplex == first.Duplex))
                {
                    reportConfiguration.Duplex = first.Duplex;
                }
                if (Reports.All(configuration => configuration.PaperFormat == first.PaperFormat))
                {
                    reportConfiguration.PaperFormat = first.PaperFormat;
                }
            }

            Reports.Add(reportConfiguration);
            return(reportConfiguration);
        }