public static TemplateDomain ConvertToDomain(this TemplateDTO templateDTO) { var templateDomain = new TemplateDomain(); //Map the template templateDomain.InjectFrom(templateDTO); templateDomain.InjectFrom <MapEnum>(new { TemplateType = templateDTO.TemplateType }); //Map the version templateDomain.TemplateVersions.InjectFrom <TemplateVersionDTO, TemplateVersionDomain>(templateDTO.TemplateVersionsDTOs); //Map the sections templateDomain.TemplateVersions.ForEach(tv => { //id is already mapped before, so we can get the matching dto for the domain. TemplateVersionDTO matchedTemplateVersionDTOs = templateDTO.TemplateVersionsDTOs.SingleOrDefault(x => x.Id == tv.Id); if (matchedTemplateVersionDTOs != null) { var sectionDomains = tv.Sections.InjectFrom <SectionDTO, SectionDomain>(matchedTemplateVersionDTOs.Sections); sectionDomains.ForEach(sd => { SectionDTO sectionDTO = matchedTemplateVersionDTOs.Sections.SingleOrDefault(x => x.Id == sd.Id); if (sectionDTO != null) { var sectionQuestion = (SectionQuestionDomain)sd.SectionQuestion.InjectFrom(sectionDTO.SectionQuestionDTO); List <QuestionDomain> questionDomains = sectionQuestion.Questions.InjectFrom <QuestionDTO, QuestionDomain>(sectionDTO.SectionQuestionDTO.Questions); questionDomains.ForEach(domain => { QuestionDTO questionDTO = sectionDTO.SectionQuestionDTO.Questions.SingleOrDefault(x => x.Id == domain.Id); if (questionDTO != null) { domain.InjectFrom <MapEnum>(new { QuestionType = questionDTO.QuestionTypeDTO }); } }); } }); } }); return(templateDomain); }
public void ResoveNestedCollections_MapToSameEntity() { var originalTemplateDTO = OriginalTemplate(); var newTemplateDTO = new TemplateDTO(); newTemplateDTO.InjectFrom(originalTemplateDTO); Assert.AreEqual(originalTemplateDTO.Name, newTemplateDTO.Name); Assert.AreEqual(originalTemplateDTO.TemplateType, newTemplateDTO.TemplateType); Assert.AreEqual(originalTemplateDTO.TemplateVersionsDTOs.ElementAt(0).Name, newTemplateDTO.TemplateVersionsDTOs.ElementAt(0).Name); Assert.AreEqual(originalTemplateDTO.TemplateVersionsDTOs.ElementAt(0).Number, newTemplateDTO.TemplateVersionsDTOs.ElementAt(0).Number); Assert.AreEqual(originalTemplateDTO.TemplateVersionsDTOs.ElementAt(0).Sections.ElementAt(0).Name, newTemplateDTO.TemplateVersionsDTOs.ElementAt(0).Sections.ElementAt(0).Name); Assert.AreEqual(originalTemplateDTO.TemplateVersionsDTOs.ElementAt(0).Sections.ElementAt(0).Id, newTemplateDTO.TemplateVersionsDTOs.ElementAt(0).Sections.ElementAt(0).Id); Assert.AreEqual(originalTemplateDTO.TemplateVersionsDTOs.ElementAt(0).Sections.ElementAt(0).SectionQuestionDTO.Name, newTemplateDTO.TemplateVersionsDTOs.ElementAt(0).Sections.ElementAt(0).SectionQuestionDTO.Name); Assert.AreEqual(originalTemplateDTO.TemplateVersionsDTOs.ElementAt(0).Sections.ElementAt(0).SectionQuestionDTO.Id, newTemplateDTO.TemplateVersionsDTOs.ElementAt(0).Sections.ElementAt(0).SectionQuestionDTO.Id); Assert.AreEqual(originalTemplateDTO.TemplateVersionsDTOs.ElementAt(0).Sections.ElementAt(0).SectionQuestionDTO.Questions.ElementAt(0).Text, newTemplateDTO.TemplateVersionsDTOs.ElementAt(0).Sections.ElementAt(0).SectionQuestionDTO.Questions.ElementAt(0).Text); Assert.AreEqual(originalTemplateDTO.TemplateVersionsDTOs.ElementAt(0).Sections.ElementAt(0).SectionQuestionDTO.Questions.ElementAt(0).Id, newTemplateDTO.TemplateVersionsDTOs.ElementAt(0).Sections.ElementAt(0).SectionQuestionDTO.Questions.ElementAt(0).Id); }
public void ResoveNestedCollections_MapToSameEntity() { var originalTemplateDTO = OriginalTemplate(); var newTemplateDTO = new TemplateDTO(); newTemplateDTO.InjectFrom(originalTemplateDTO); Assert.AreEqual(originalTemplateDTO.Name, newTemplateDTO.Name); Assert.AreEqual(originalTemplateDTO.TemplateType, newTemplateDTO.TemplateType); Assert.AreEqual(originalTemplateDTO.TemplateVersionsDTOs.ElementAt(0).Name, newTemplateDTO.TemplateVersionsDTOs.ElementAt(0).Name); Assert.AreEqual(originalTemplateDTO.TemplateVersionsDTOs.ElementAt(0).Number, newTemplateDTO.TemplateVersionsDTOs.ElementAt(0).Number); Assert.AreEqual(originalTemplateDTO.TemplateVersionsDTOs.ElementAt(0).Sections.ElementAt(0).Name, newTemplateDTO.TemplateVersionsDTOs.ElementAt(0).Sections.ElementAt(0).Name); Assert.AreEqual(originalTemplateDTO.TemplateVersionsDTOs.ElementAt(0).Sections.ElementAt(0).Id, newTemplateDTO.TemplateVersionsDTOs.ElementAt(0).Sections.ElementAt(0).Id); Assert.AreEqual(originalTemplateDTO.TemplateVersionsDTOs.ElementAt(0).Sections.ElementAt(0).SectionQuestionDTO.Name, newTemplateDTO.TemplateVersionsDTOs.ElementAt(0).Sections.ElementAt(0).SectionQuestionDTO.Name); Assert.AreEqual(originalTemplateDTO.TemplateVersionsDTOs.ElementAt(0).Sections.ElementAt(0).SectionQuestionDTO.Id, newTemplateDTO.TemplateVersionsDTOs.ElementAt(0).Sections.ElementAt(0).SectionQuestionDTO.Id); Assert.AreEqual(originalTemplateDTO.TemplateVersionsDTOs.ElementAt(0).Sections.ElementAt(0).SectionQuestionDTO.Questions.ElementAt(0).Text, newTemplateDTO.TemplateVersionsDTOs.ElementAt(0).Sections.ElementAt(0).SectionQuestionDTO.Questions.ElementAt(0).Text); Assert.AreEqual(originalTemplateDTO.TemplateVersionsDTOs.ElementAt(0).Sections.ElementAt(0).SectionQuestionDTO.Questions.ElementAt(0).Id, newTemplateDTO.TemplateVersionsDTOs.ElementAt(0).Sections.ElementAt(0).SectionQuestionDTO.Questions.ElementAt(0).Id); }