public IDataEntity BuildLearningDeliveryDataEntity(LearningDelivery learningDelivery) { var larsLearningDelivery = _larsReferenceDataService.LARSLearningDeliveryForLearnAimRef(learningDelivery.LearnAimRef); var larsStandard = _larsReferenceDataService.LARSStandardForStandardCode(learningDelivery.StdCode); var larsFramework = larsLearningDelivery.LARSFrameworks? .Where(lf => lf.FworkCode == learningDelivery.FworkCode && lf.ProgType == learningDelivery.ProgType && lf.PwayCode == learningDelivery.PwayCode).FirstOrDefault(); var learningDeliveryFamsEntities = learningDelivery?.LearningDeliveryFAMs?.Select(BuildLearningDeliveryFAM) ?? Enumerable.Empty <IDataEntity>(); var larsFundingEntities = larsLearningDelivery?.LARSFundings?.Select(BuildLARSFunding) ?? Enumerable.Empty <IDataEntity>(); var appFinRecordEntities = learningDelivery?.AppFinRecords?.Select(BuildApprenticeshipFinancialRecord) ?? Enumerable.Empty <IDataEntity>(); var larsStandardCommonComponentEntities = larsStandard?.LARSStandardCommonComponents?.Select(BuildLARSStandardCommonComponent) ?? Enumerable.Empty <IDataEntity>(); var larsStandardAppFundingEntities = larsStandard?.LARSStandardApprenticeshipFundings?.Select(BuildLARSStandardApprenticeshipFunding) ?? Enumerable.Empty <IDataEntity>(); var larsFrameworkCommonComponentEntities = larsFramework?.LARSFrameworkCommonComponents?.Select(BuildLARSFrameworkCommonComponent) ?? Enumerable.Empty <IDataEntity>(); var larsFrameworkAppFundingEntities = larsFramework?.LARSFrameworkApprenticeshipFundings?.Select(BuildLARSFrameworkApprenticeshipFunding) ?? Enumerable.Empty <IDataEntity>(); var entity = new DataEntity(Attributes.EntityLearningDelivery) { Attributes = new Dictionary <string, IAttributeData>() { { Attributes.AimSeqNumber, new AttributeData(learningDelivery.AimSeqNumber) }, { Attributes.AchDate, new AttributeData(learningDelivery.AchDate) }, { Attributes.AimType, new AttributeData(learningDelivery.AimType) }, { Attributes.CompStatus, new AttributeData(learningDelivery.CompStatus) }, { Attributes.FrameworkCommonComponent, new AttributeData(larsLearningDelivery.FrameworkCommonComponent) }, { Attributes.FworkCode, new AttributeData(learningDelivery.FworkCode) }, { Attributes.LearnAimRef, new AttributeData(learningDelivery.LearnAimRef) }, { Attributes.LearnActEndDate, new AttributeData(learningDelivery.LearnActEndDate) }, { Attributes.LearnPlanEndDate, new AttributeData(learningDelivery.LearnPlanEndDate) }, { Attributes.LearnStartDate, new AttributeData(learningDelivery.LearnStartDate) }, { Attributes.OrigLearnStartDate, new AttributeData(learningDelivery.OrigLearnStartDate) }, { Attributes.OtherFundAdj, new AttributeData(learningDelivery.OtherFundAdj) }, { Attributes.PriorLearnFundAdj, new AttributeData(learningDelivery.PriorLearnFundAdj) }, { Attributes.ProgType, new AttributeData(learningDelivery.ProgType) }, { Attributes.PwayCode, new AttributeData(learningDelivery.PwayCode) }, { Attributes.STDCode, new AttributeData(learningDelivery.StdCode) }, } }; entity.AddChildren(learningDeliveryFamsEntities); entity.AddChildren(larsFundingEntities); entity.AddChildren(appFinRecordEntities); entity.AddChildren(larsStandardCommonComponentEntities); entity.AddChildren(larsStandardAppFundingEntities); entity.AddChildren(larsFrameworkCommonComponentEntities); entity.AddChildren(larsFrameworkAppFundingEntities); return(entity); }