/// <summary> /// Registers a preparation job in the queue. /// </summary> /// <param name="archiveRecordId">The archive record identifier.</param> public async Task <int> RegisterJobInPreparationQueue(string archiveRecordId, string packageId, AufbereitungsArtEnum aufbereitungsArt, AufbereitungsServices service, List <ElasticArchiveRecordPackage> primaryData, object workload) { var preperationTime = preparationCalculator.EstimatePreparationDuration(primaryData, aufbereitungsZeitSettings.KonvertierungsgeschwindigkeitAudio, aufbereitungsZeitSettings.KonvertierungsgeschwindigkeitVideo).TotalSeconds; var auftrag = new PrimaerdatenAuftrag { VeId = int.Parse(archiveRecordId), AufbereitungsArt = aufbereitungsArt, PackageId = packageId, Service = service, Status = AufbereitungsStatusEnum.Registriert, GroesseInBytes = primaryData.Sum(p => p.SizeInBytes), GeschaetzteAufbereitungszeit = Convert.ToInt32(preperationTime), Workload = JsonConvert.SerializeObject(workload), PackageMetadata = JsonConvert.SerializeObject(primaryData), PriorisierungsKategorie = GetPriorisierungskategorie(aufbereitungsArt, primaryData.Sum(p => p.SizeInBytes), workload) }; var auftragId = await auftragAccess.CreateOrUpdateAuftrag(auftrag); Log.Information("{METHOD} for VE {VEID} with {STATUS}. AuftragId is {auftragId}", nameof(RegisterJobInPreparationQueue), archiveRecordId, auftragId > 0 ? "SUCCEEDED" : "FAILED", auftragId); return(auftragId); }