/// <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")); } }
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); }