/// <summary>Erstellt einen DigitalisierungsAuftrag anhand der vom Benutzer gemachten Eingaben bei der Bestellung.</summary> /// <param name="digipoolEntry">Der Auftrag aus dem DigiPool</param> public async Task <DigitalisierungsAuftrag> GetManualDigitalisierungsAuftrag(DigipoolEntry digipoolEntry) { // Die Muss-Daten zunächst mit "keine Angabe" initialisieren var auftrag = new DigitalisierungsAuftrag { Ablieferung = new AblieferungType { AblieferndeStelle = noDataAvailable, Ablieferungsnummer = noDataAvailable, AktenbildnerName = noDataAvailable }, OrdnungsSystem = new OrdnungsSystemType { Name = noDataAvailable, Signatur = noDataAvailable, Stufe = noDataAvailable }, Dossier = new VerzEinheitType { Titel = noDataAvailable, Signatur = noDataAvailable, Entstehungszeitraum = noDataAvailable, Stufe = noDataAvailable }, Auftragsdaten = new AuftragsdatenType { Benutzungskopie = true, BestelleinheitId = "-1" } }; // Nun die Auftragsdaten mit den Benutzerangaben überschreiben, bzw. setzen var orderItems = await orderManagerClient.FindOrderItems(new[] { digipoolEntry.OrderItemId }); var orderItem = orderItems.FirstOrDefault(); if (orderItem != null) { // Verschiedene Properties nun auf die angegebenen Benutzerangaben stellen. auftrag.Ablieferung.Ablieferungsnummer = orderItem.Ablieferung; auftrag.Dossier.Aktenzeichen = orderItem.Aktenzeichen; auftrag.Dossier.Archivnummer = orderItem.ArchivNummer; if (!string.IsNullOrEmpty(orderItem.BehaeltnisNummer)) { auftrag.Dossier.Behaeltnisse = new List <BehaeltnisType> { new BehaeltnisType { BehaeltnisCode = orderItem.BehaeltnisNummer, BehaeltnisTyp = noDataAvailable } }; } auftrag.Dossier.Titel = orderItem.Dossiertitel; auftrag.Dossier.Signatur = orderItem.Signatur; auftrag.Dossier.Entstehungszeitraum = orderItem.ZeitraumDossier; } return(auftrag); }
public async Task Consume(ConsumeContext <FindOrderItemsRequest> context) { using (LogContext.PushProperty(nameof(context.ConversationId), context.ConversationId)) { Log.Information("Received {CommandName} command with conversationId {ConversationId} from the bus", context.Message.GetType().Name, context.ConversationId); var orderItems = await manager.FindOrderItems(context.Message.OrderItemIds); var response = new FindOrderItemsResponse { OrderItems = orderItems }; await context.RespondAsync(response); } }
public async Task <IHttpActionResult> DownloadFile(int id, string token) { var orderItemId = id; if (string.IsNullOrWhiteSpace(token)) { return(Content(HttpStatusCode.Forbidden, "Invalid token")); } var ipAdress = downloadHelper.GetClientIp(Request); if (!downloadTokenDataAccess.CheckTokenIsValidAndClean(token, orderItemId, DownloadTokenType.OrderItem, ipAdress)) { return(BadRequest("Token expires or is not valid")); } var userId = downloadTokenDataAccess.GetUserIdByToken(token, orderItemId, DownloadTokenType.OrderItem, ipAdress); if (string.IsNullOrWhiteSpace(userId)) { return(Content(HttpStatusCode.Forbidden, "No User found for the requested Downloadtoken")); } var orderItem = (await orderManagerClient.FindOrderItems(new[] { orderItemId })).FirstOrDefault(); if (orderItem == null) { return(BadRequest("OrderItem does not exist in DB")); } if (!orderItem.Benutzungskopie.HasValue || !orderItem.Benutzungskopie.Value) { return(BadRequest("OrderItem is not a Benutzungskopie")); } downloadTokenDataAccess.CleanUpOldToken(token, orderItemId, DownloadTokenType.OrderItem); var downloadAssetResult = (await downloadClient.GetResponse <DownloadAssetResult>(new DownloadAssetRequest { ArchiveRecordId = orderItem.VeId.ToString(), OrderItemId = orderItemId, AssetType = AssetType.Benutzungskopie, Recipient = userId, RetentionCategory = CacheRetentionCategory.UsageCopyBenutzungskopie, ForceSendPasswordMail = true })).Message; // If item is not in cache, indicate that it is gone if (string.IsNullOrEmpty(downloadAssetResult.AssetDownloadLink)) { return(ResponseMessage(new HttpResponseMessage(HttpStatusCode.Gone))); } var stream = cacheHelper.GetStreamFromCache(downloadAssetResult.AssetDownloadLink); var result = new HttpResponseMessage(HttpStatusCode.OK) { Content = new StreamContent(stream) }; var fileName = orderItemId + ".zip"; result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") { FileName = fileName }; return(ResponseMessage(result)); }