/// <summary>
        ///  string = undefined
        /// </summary>
        /// <param name="items">The row values</param>
        /// <param name="language">Selected language</param>
        /// <param name="fileName">The desired file name</param>
        /// <param name="defaultName">A simple file name without special characters</param>
        /// <returns></returns>
        public HttpResponseMessage CreateExcelFile(List <VeExportRecord> items, string language, string fileName, string defaultName)
        {
            MemoryStream stream      = exportHelper.ExportToExcel(items, CreateColumnInfo(language));
            var          retVal      = new HttpResponseMessage(HttpStatusCode.OK);
            var          contentType = MimeMapping.GetMimeMapping("xlsx");

            retVal.Content = new ByteArrayContent(stream.ToArray());
            retVal.Content.Headers.ContentType        = new MediaTypeHeaderValue(contentType);
            retVal.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
            {
                // The FileName is safe without special characters, FileNameStar is UTF-8 encoded
                FileName     = defaultName,
                FileNameStar = fileName
            };
            return(retVal);
        }
        public async Task <IHttpActionResult> GetElasticLogRecords(DateTime startDate, DateTime endDate)
        {
            var access = this.GetManagementAccess();

            access.AssertFeatureOrThrow(ApplicationFeature.AdministrationLoginformationenEinsehen);

            try
            {
                var response = await getLogClient.Request(new GetElasticLogRecordsRequest
                {
                    DataFilter = new LogDataFilter {
                        StartDate = startDate, EndDate = endDate
                    }
                });

                // Excel has a limit of 1'048'576 rows. We throw an error when more than 1 Mio is returned
                if (response.Result.TotalCount > 1000000)
                {
                    return(BadRequest("Es wurden mehr als 1 Mio. Log-Einträge für den Zeitraum geliefert. Bitte wählen Sie einen kürzeren Zeitraum."));
                }

                var retVal      = new HttpResponseMessage(HttpStatusCode.OK);
                var file        = $"Viaduc-Log-Data-{DateTime.Now:s}.xlsx";
                var contentType = MimeMapping.GetMimeMapping(Path.GetExtension(file));

                using (var stream = exportHelper.ExportToExcel(response.Result.Records,
                                                               new ExcelColumnInfos
                {
                    new ExcelColumnInfo {
                        ColumnName = nameof(ElasticLogRecord.Id), MakeAutoWidth = true
                    },
                    new ExcelColumnInfo {
                        ColumnName = nameof(ElasticLogRecord.MachineName), MakeAutoWidth = true
                    },
                    new ExcelColumnInfo
                    {
                        ColumnName = nameof(ElasticLogRecord.Timestamp), MakeAutoWidth = true, FormatSpecification = "dd.mm.yyyy hh:mm:ss"
                    },
                    new ExcelColumnInfo {
                        ColumnName = nameof(ElasticLogRecord.ArchiveRecordId), MakeAutoWidth = true
                    },
                    new ExcelColumnInfo {
                        ColumnName = nameof(ElasticLogRecord.ConversationId), MakeAutoWidth = true
                    },
                    new ExcelColumnInfo {
                        ColumnName = nameof(ElasticLogRecord.Index), MakeAutoWidth = true
                    },
                    new ExcelColumnInfo {
                        ColumnName = nameof(ElasticLogRecord.Level), MakeAutoWidth = true
                    },
                    new ExcelColumnInfo {
                        ColumnName = nameof(ElasticLogRecord.MainAssembly), MakeAutoWidth = true
                    },
                    new ExcelColumnInfo {
                        ColumnName = nameof(ElasticLogRecord.ProcessId), MakeAutoWidth = true
                    },
                    new ExcelColumnInfo {
                        ColumnName = nameof(ElasticLogRecord.ThreadId), MakeAutoWidth = true
                    },
                    new ExcelColumnInfo {
                        ColumnName = nameof(ElasticLogRecord.Message), Width = 80
                    },
                    new ExcelColumnInfo {
                        ColumnName = nameof(ElasticLogRecord.Exception), Width = 80
                    },
                    new ExcelColumnInfo {
                        ColumnName = nameof(ElasticLogRecord.MessageTemplate), Hidden = true
                    }
                }))
                {
                    retVal.Content = new ByteArrayContent(stream.ToArray());
                    retVal.Content.Headers.ContentType        = new MediaTypeHeaderValue(contentType);
                    retVal.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
                    {
                        FileName = file
                    };
                }

                return(ResponseMessage(retVal));
            }
            catch (RequestTimeoutException ex)
            {
                Log.Error(ex, "Timeout while fetching the log records");
                return(BadRequest(
                           "Timeout beim Holen der Log-Einträge. Der gewählte Zeitraum umfasst vermutlich zu viele Log-Einträge. Bitte wählen Sie einen kürzeren Zeitraum"));
            }
            catch (RequestFaultException ex)
            {
                Log.Error(ex, "Rabbit Mq error while fetching the log records");
                return(BadRequest(
                           "Fehler beim Holen der Log-Einträge. Der gewählte Zeitraum umfasst vermutlich zu viele Log-Einträge. Bitte wählen Sie einen kürzeren Zeitraum"));
            }
            catch (OutOfMemoryException ex)
            {
                Log.Error(ex, "Out of memory while fetching the log records");
                return(BadRequest("Out of Memory: Der gewählte Zeitraum umfasst zu viele Log-Einträge. Bitte wählen Sie einen kürzeren Zeitraum"));
            }
        }
Example #3
0
        private HttpResponseMessage CreateExcelFile(List <PrimaerdatenReportRecord> response)
        {
            var retVal      = new HttpResponseMessage(HttpStatusCode.OK);
            var file        = $"Viaduc-Primaerdaten-{DateTime.Now:s}.xlsx";
            var contentType = MimeMapping.GetMimeMapping(Path.GetExtension(file));
            var format      = new DateTimeFormat("dd.MM.yyyy HH:mm:ss");

            using (var stream = exportHelper.ExportToExcel(response, new ExcelColumnInfos
            {
                new ExcelColumnInfo {
                    ColumnName = nameof(PrimaerdatenReportRecord.AufbereitungsArt), ColumnHeader = "Auftragstyp", MakeAutoWidth = true
                },
                new ExcelColumnInfo {
                    ColumnName = nameof(PrimaerdatenReportRecord.OrderId), ColumnHeader = "Auftrags-ID", MakeAutoWidth = true
                },
                new ExcelColumnInfo {
                    ColumnName = nameof(PrimaerdatenReportRecord.VeId), ColumnHeader = "VE-ID", MakeAutoWidth = true
                },
                new ExcelColumnInfo {
                    ColumnName = nameof(PrimaerdatenReportRecord.MutationsId), ColumnHeader = "Mutations-ID", MakeAutoWidth = true
                },
                new ExcelColumnInfo {
                    ColumnName = nameof(PrimaerdatenReportRecord.PrimaerdatenAuftragId), ColumnHeader = "Primärdaten Auftrag-ID", MakeAutoWidth = true
                },
                new ExcelColumnInfo {
                    ColumnName = nameof(PrimaerdatenReportRecord.Size), ColumnHeader = "Grösse SIP in MB", MakeAutoWidth = true
                },
                new ExcelColumnInfo {
                    ColumnName = nameof(PrimaerdatenReportRecord.FileCount), ColumnHeader = "Anzahl Files im SIP", MakeAutoWidth = true
                },
                new ExcelColumnInfo {
                    ColumnName = nameof(PrimaerdatenReportRecord.FileFormats), ColumnHeader = "Dateiformat im SIP", MakeAutoWidth = true
                },
                new ExcelColumnInfo
                {
                    ColumnName = nameof(PrimaerdatenReportRecord.Source),
                    ColumnHeader = "Quelle: digitale Ablieferung oder Digitalisierung durch Vecteur?",
                    MakeAutoWidth = true
                },
                new ExcelColumnInfo {
                    ColumnName = nameof(PrimaerdatenReportRecord.NeuEingegangen),
                    ColumnHeader = "Zeitstempel Status 'Neu Eingegangen'",
                    FormatSpecification = format.FormatString, MakeAutoWidth = true
                },
                new ExcelColumnInfo {
                    ColumnName = nameof(PrimaerdatenReportRecord.FreigabePrüfen),
                    ColumnHeader = "Zeitstempel Status 'Freigabe prüfen'",
                    FormatSpecification = format.FormatString, MakeAutoWidth = true
                },
                new ExcelColumnInfo {
                    ColumnName = nameof(PrimaerdatenReportRecord.FürDigitalisierungBereit),
                    ColumnHeader = "Zeitstempel Status 'Für Digitalisierung bereit'",
                    FormatSpecification = format.FormatString, MakeAutoWidth = true
                },
                new ExcelColumnInfo
                {
                    ColumnName = nameof(PrimaerdatenReportRecord.DauerManuelleFreigabe),
                    ColumnHeader = "Dauer manuelle Freigabe durch BAR-MA  in [h]:mm",
                    MakeAutoWidth = true
                },
                new ExcelColumnInfo
                {
                    ColumnName = nameof(PrimaerdatenReportRecord.FürAushebungBereit), ColumnHeader = "Zeitstempel Status 'Für Aushebung bereit'",
                    FormatSpecification = format.FormatString, MakeAutoWidth = true
                },
                new ExcelColumnInfo
                {
                    ColumnName = nameof(PrimaerdatenReportRecord.DauerAuftragsabrufVecteur),
                    ColumnHeader = "Dauer Auftragsabruf durch Vecteur  in [h]:mm",
                    MakeAutoWidth = true
                },
                new ExcelColumnInfo
                {
                    ColumnName = nameof(PrimaerdatenReportRecord.Ausgeliehen), ColumnHeader = "Zeitstempel Status 'Ausgeliehen'",
                    FormatSpecification = format.FormatString, MakeAutoWidth = true
                },
                new ExcelColumnInfo
                {
                    ColumnName = nameof(PrimaerdatenReportRecord.DauerAusleiheLogistik),
                    ColumnHeader = "Dauer Ausleihe durch Logistik in [h]:mm",
                    MakeAutoWidth = true
                },
                new ExcelColumnInfo {
                    ColumnName = nameof(PrimaerdatenReportRecord.ZumReponierenBereit),
                    ColumnHeader = "Zeitstempel Status 'Zum Reponieren bereit'",
                    FormatSpecification = format.FormatString, MakeAutoWidth = true
                },
                new ExcelColumnInfo
                {
                    ColumnName = nameof(PrimaerdatenReportRecord.DauerDigitalisierungVecteur),
                    ColumnHeader = "Dauer Digitalisierung durch Vecteur inkl. Ingest DIR in [h]:mm",
                    MakeAutoWidth = true
                },
                new ExcelColumnInfo
                {
                    ColumnName = nameof(PrimaerdatenReportRecord.PrimaryDataLinkCreationDate),
                    ColumnHeader = "Zeitstempel Status 'Identifikation digitales Magazin' in AIS",
                    FormatSpecification = format.FormatString, MakeAutoWidth = true
                },
                new ExcelColumnInfo
                {
                    ColumnName = nameof(PrimaerdatenReportRecord.DauerUpdateAIPAdresseAIS),
                    ColumnHeader = "Dauer Update AIP-Adresse in AIS in [h]:mm",
                    MakeAutoWidth = true
                },
                new ExcelColumnInfo
                {
                    ColumnName = nameof(PrimaerdatenReportRecord.StartFirstSynchronizationAttempt),
                    ColumnHeader = "Zeitstempel Start erster Synchronisierungsversuch (Status 1)",
                    FormatSpecification = format.FormatString,
                    MakeAutoWidth = true
                },
                new ExcelColumnInfo
                {
                    ColumnName = nameof(PrimaerdatenReportRecord.DauerStartSynchronisierungWebOZ),
                    ColumnHeader = "Dauer Start Synchronisierung durch WebOZ in [h]:mm",
                    MakeAutoWidth = true
                },
                new ExcelColumnInfo
                {
                    ColumnName = nameof(PrimaerdatenReportRecord.StartLastSynchronizationAttempt),
                    ColumnHeader = "Zeitstempel Start letzter Synchronisierungsversuch bevor Synchronisierung erfolgreich war (Status 2)",
                    FormatSpecification = format.FormatString,
                    MakeAutoWidth = true
                },
                new ExcelColumnInfo
                {
                    ColumnName = nameof(PrimaerdatenReportRecord.CompletionLastSynchronizationAttempt),
                    ColumnHeader = "Zeitstempel Abschluss Synchronisierung (Status 2)",
                    FormatSpecification = format.FormatString,
                    MakeAutoWidth = true
                },
                new ExcelColumnInfo
                {
                    ColumnName = nameof(PrimaerdatenReportRecord.CountSynchronizationAttempts),
                    ColumnHeader = "Anzahl notwendiger Synchronisierungsversuche bis Status 2",
                    MakeAutoWidth = true
                },
                new ExcelColumnInfo
                {
                    ColumnName = nameof(PrimaerdatenReportRecord.DauerErfolgreicherSyncVersuch),
                    ColumnHeader = "Dauer erfolgreicher Sync-Versuch in [h]:mm",
                    MakeAutoWidth = true
                },
                new ExcelColumnInfo
                {
                    ColumnName = nameof(PrimaerdatenReportRecord.DauerAlleSyncVersuche),
                    ColumnHeader = "Dauer alle Sync-Versuche  in [h]:mm",
                    MakeAutoWidth = true
                },
                new ExcelColumnInfo
                {
                    ColumnName = nameof(PrimaerdatenReportRecord.DauerZumReponierenBereitSyncCompleted),
                    ColumnHeader = "Dauer von 'Zum Reponieren bereit' / 'Ingest completed DIR' bis Sync completed Viaduc  in [h]:mm",
                    MakeAutoWidth = true
                },
                new ExcelColumnInfo
                {
                    ColumnName = nameof(PrimaerdatenReportRecord.ClickButtonPrepareDigitalCopy),
                    ColumnHeader = "Zeitstempel Klick Button 'Digitalisat aufbereiten'",
                    FormatSpecification = format.FormatString,
                    MakeAutoWidth = true
                },
                new ExcelColumnInfo
                {
                    ColumnName = nameof(PrimaerdatenReportRecord.EstimatedPreparationTimeVeAccordingDetailPage),
                    ColumnHeader = "Geschätzte Aufbereitungszeit der VE gem. Anzeige auf Detailseite in [h]:mm",
                    MakeAutoWidth = true
                },
                new ExcelColumnInfo
                {
                    ColumnName = nameof(PrimaerdatenReportRecord.StartFirstPreparationAttempt),
                    ColumnHeader = "Zeitstempel Start erster Aufbereitungsversuch Gebrauchskopie",
                    FormatSpecification = format.FormatString,
                    MakeAutoWidth = true
                },
                new ExcelColumnInfo
                {
                    ColumnName = nameof(PrimaerdatenReportRecord.StartLastPreparationAttempt),
                    ColumnHeader = "Zeitstempel Start letzter Aufbereitungsversuch bevor Aufbereitung erfolgreich war",
                    FormatSpecification = format.FormatString, MakeAutoWidth = true
                },
                new ExcelColumnInfo
                {
                    ColumnName = nameof(PrimaerdatenReportRecord.CompletionLastPreparationAttempt),
                    ColumnHeader = "Zeitstempel Abschluss Aufbereitung Gebrauchskopie",
                    FormatSpecification = format.FormatString,
                    MakeAutoWidth = true
                },
                new ExcelColumnInfo
                {
                    ColumnName = nameof(PrimaerdatenReportRecord.CountPreparationAttempts),
                    ColumnHeader = "Aufbereitung erfolgreich",
                    MakeAutoWidth = true
                },
                new ExcelColumnInfo
                {
                    ColumnName = nameof(PrimaerdatenReportRecord.DauerErfolgreicherAufbereitungsversuch),
                    ColumnHeader = "Dauer erfolgreicher Aufbereitungsversuch in [h]:mm",
                    MakeAutoWidth = true
                },
                new ExcelColumnInfo
                {
                    ColumnName = nameof(PrimaerdatenReportRecord.DauerAllAufbereitungsversuch),
                    ColumnHeader = "Dauer alle Aufbereitungsversuche in [h]:mm",
                    MakeAutoWidth = true
                },
                new ExcelColumnInfo
                {
                    ColumnName = nameof(PrimaerdatenReportRecord.DauerSyncCompletedAufbereitungErfolgreich),
                    ColumnHeader = "Dauer von 'Sync completed Viaduc' bis zu 'Aufbereitung erfolgreich' in [h]:mm",
                    MakeAutoWidth = true
                },
                new ExcelColumnInfo
                {
                    ColumnName = nameof(PrimaerdatenReportRecord.StorageUseCopyCache),
                    ColumnHeader = "Zeitstempel Speicherung Gebrauchskopie im Cache",
                    FormatSpecification = format.FormatString, MakeAutoWidth = true
                },
                new ExcelColumnInfo
                {
                    ColumnName = nameof(PrimaerdatenReportRecord.DauerAufbereitungErfolgreichSpeicherungGebrauchskopieCache),
                    ColumnHeader = "Dauer von 'Aufbereitung erfolgreich' bis Speicherung Gebrauchskopie im Cache in [h]:mm",
                    MakeAutoWidth = true
                },
                new ExcelColumnInfo
                {
                    ColumnName = nameof(PrimaerdatenReportRecord.ShippingMailReadForDownload),
                    ColumnHeader = "Zeitstempel Versand Mail 'Fur Download bereit' an User",
                    FormatSpecification = format.FormatString,
                    MakeAutoWidth = true
                },
                new ExcelColumnInfo
                {
                    ColumnName = nameof(PrimaerdatenReportRecord.DauerAufbereitungErfolgreichMailVersandt),
                    ColumnHeader = "Dauer von 'Aufbereitung erfolgreich' bis Mail versandt in [h]:mm",
                    MakeAutoWidth = true
                },
                new ExcelColumnInfo
                {
                    ColumnName = nameof(PrimaerdatenReportRecord.EingangBestellungVersandEMailZumDownloadBereit),
                    ColumnHeader = "Eingang Bestellung bis Versand der E-Mail 'Zum Download bereit' in [h]:mm",
                    MakeAutoWidth = true
                },
                new ExcelColumnInfo
                {
                    ColumnName = nameof(PrimaerdatenReportRecord.KlickButtonDigitalisatAufbereitenVersandEMailZumDownloadBereit),
                    ColumnHeader = "Klick Button 'Digitalisat aufbereiten' bis Versand E-Mail 'Zum Download bereit'  in [h]:mm",
                    MakeAutoWidth = true
                }
            }))
                retVal.Content = new ByteArrayContent(stream.ToArray());
            retVal.Content.Headers.ContentType        = new MediaTypeHeaderValue(contentType);
            retVal.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
            {
                FileName = file
            };
            return(retVal);
        }