public MetaDataBag GetMetaDataBag(AppSettings appSettings) { MetaDataBag bag; Console.WriteLine("Getting metadata bag..."); if (!File.Exists(appSettings.MetaDataBagFilePath)) { Console.WriteLine("No stored bag found so retrieving meta data from LARS..."); var timer = Stopwatch.StartNew(); bag = new MetaDataBag { Frameworks = GetMetaData <FrameworkMetaData>(appSettings.CsvFileNameFrameworks), Standards = GetMetaData <LarsStandard>(appSettings.CsvFileNameStandards), FrameworkAims = GetMetaData <FrameworkAimMetaData>(appSettings.CsvFileNameFrameworkAims), FrameworkComponentTypes = GetMetaData <FrameworkComponentTypeMetaData>( appSettings.CsvFileNameFrameworkComponentType), LearningDeliveries = GetMetaData <LearningDeliveryMetaData>( appSettings.CsvFileNameLearningDelivery), Fundings = GetMetaData <FundingMetaData>(appSettings.CsvFileNameFunding) }; Console.WriteLine($"Time taken to get meta data from LARS: {timer.Elapsed.ToString("g")}"); Console.WriteLine("Serializing metadata bag to file..."); FileSerializer.SerializeToFile(appSettings.MetaDataBagFilePath, bag); } else { Console.WriteLine("Grabbing metadata bag from stored file..."); bag = FileSerializer.DeserializeFromFile <MetaDataBag>(appSettings.MetaDataBagFilePath); } return(bag); }
public static ICollection <FrameworkQualification> GetQualification(MetaDataBag bag, AppSettings appSettings) { var frameworkQualifications = new List <FrameworkQualification>(); if (!File.Exists(appSettings.QualificationsFilePath)) { bag.Frameworks = FilterFrameworks(bag.Frameworks); bag.Fundings = bag.Fundings.Where( x => x.FundingCategory.Equals("app_act_cost", StringComparison.CurrentCultureIgnoreCase)) .ToList(); bag.LearningDeliveries = bag.LearningDeliveries.Where(x => !x.EffectiveTo.HasValue || x.EffectiveTo.Value > DateTime.Now) .ToList(); bag.Fundings = bag.Fundings.Where(x => !x.EffectiveTo.HasValue || x.EffectiveTo.Value > DateTime.Now) .ToList(); var timer = Stopwatch.StartNew(); var count = 0; var total = bag.Frameworks.Count; foreach (var framework in bag.Frameworks) { Console.WriteLine($"Getting qualification for framework {++count} / {total}"); var frameworkAims = bag.FrameworkAims.Where(x => x.FworkCode.Equals(framework.FworkCode) && x.ProgType.Equals(framework.ProgType) && x.PwayCode.Equals(framework.PwayCode)).ToList(); var qualifications = (from aim in frameworkAims join comp in bag.FrameworkComponentTypes on aim.FrameworkComponentType equals comp.FrameworkComponentType join ld in bag.LearningDeliveries on aim.LearnAimRef equals ld.LearnAimRef select new FrameworkQualification { LearnAimRef = aim.LearnAimRef, ProgType = aim.ProgType, Title = ld.LearnAimRefTitle.Replace("(QCF)", string.Empty).Trim(), CompetenceType = comp.FrameworkComponentType, CompetenceDescription = comp.FrameworkComponentTypeDesc }).ToList(); frameworkQualifications.AddRange(qualifications); } Console.WriteLine($"Time taken to find qualifications: {timer.Elapsed.ToString("g")}"); FileSerializer.SerializeCollectionToFile(appSettings.QualificationsFilePath, frameworkQualifications); } else { frameworkQualifications = FileSerializer.DeserializeCollectionFromFile <FrameworkQualification>( appSettings.QualificationsFilePath).ToList(); } return(frameworkQualifications); }