/// <summary> /// Processes the concrete AutoBook output data type. /// </summary> /// <typeparam name="TData">The type of the data.</typeparam> /// <param name="scope">Current KPI calculation scope.</param> /// <param name="featureManager">The feature manager.</param> /// <param name="audit">The audit.</param> /// <param name="folder">The folder.</param> /// <returns></returns> private static void ProcessData <TData>(IKPICalculationScope scope, IFeatureManager featureManager, IAuditEventRepository audit, string folder) where TData : class { var context = scope.Resolve <IKPICalculationContext>(); var fileProcessor = scope.Resolve <IOutputFileProcessor <TData> >(); if (!featureManager.IsServiceEnabled(fileProcessor.GetType())) { audit.Insert(AuditEventFactory.CreateAuditEventForInformationMessage(0, 0, $"Skipping disabled file processor. ScenarioId: {context.ScenarioId}, FileName: {fileProcessor.FileName}")); return; } var data = fileProcessor.ProcessFile(context.ScenarioId, folder); context.SetContextData(data); if (scope.TryResolve <IOutputDataHandler <TData> >(out var handler)) { handler.ProcessData(data, context.Snapshot.Run.Value, context.Snapshot.Scenario.Value); } }