示例#1
0
        /// <summary>
        ///     Determines whether the asset is in the preperation queue.
        /// </summary>
        /// <param name="archiveRecordId">The archive record identifier.</param>
        /// <returns><c>true</c> if [is in preparation queue] [the specified archive record identifier]; otherwise, <c>false</c>.</returns>
        public async Task <PreparationStatus> CheckPreparationStatus(string archiveRecordId)
        {
            var auftrag = await auftragAccess.GetLaufendenAuftrag(int.Parse(archiveRecordId), AufbereitungsArtEnum.Download);

            if (auftrag != null)
            {
                return(new PreparationStatus
                {
                    PackageIsInPreparationQueue = true,
                    AddedToQueueOn = auftrag.CreatedOn,
                    EstimatedPreparationDuration = auftrag.GeschaetzteAufbereitungszeit != null
                        ? TimeSpan.FromSeconds(auftrag.GeschaetzteAufbereitungszeit.Value)
                        : TimeSpan.Zero
                });
            }

            Log.Verbose("Asset for VE {VEID} is NOT in preparationQueue.", archiveRecordId);
            var archiveRecord = await indexClient.GetResponse <FindArchiveRecordResponse>(new FindArchiveRecordRequest { ArchiveRecordId = archiveRecordId });

            var retValue = new PreparationStatus
            {
                AddedToQueueOn = DateTime.MinValue,
                EstimatedPreparationDuration = preparationCalculator.EstimatePreparationDuration(archiveRecord.Message.ElasticArchiveRecord.PrimaryData,
                                                                                                 aufbereitungsZeitSettings.KonvertierungsgeschwindigkeitAudio,
                                                                                                 aufbereitungsZeitSettings.KonvertierungsgeschwindigkeitVideo)
            };

            return(retValue);
        }