private IndividualViewModel GetIndividualViewModel(Individual individual, int includeAncestors = 0, bool includeFamilies = false) { var ind = individual.Clone(); ind.Facts = _factService.Get(ind.TreeId, f => f.OwnerId == ind.Id && f.OwnerType == EntityType.Individual).ToList(); var individualViewModel = new IndividualViewModel(ind); if (includeAncestors > 0) { if (individualViewModel.FatherId > 0) { individualViewModel.Father = GetIndividualViewModel(_individualService.Get(individualViewModel.FatherId, ind.TreeId), includeAncestors - 1); } if (individualViewModel.MotherId > 0) { individualViewModel.Mother = GetIndividualViewModel(_individualService.Get(individualViewModel.MotherId, ind.TreeId), includeAncestors - 1); } } if (includeFamilies) { individualViewModel.Families = new List <FamilyViewModel>(); var families = _familyService.Get(ind.TreeId, fam => ind.Sex == Sex.Male ? fam.HusbandId == ind.Id : fam.WifeId == ind.Id); foreach (var family in families) { individualViewModel.Families.Add(GetFamilyViewModel(family, ind.Sex)); } } individualViewModel.Facts = new List <FactViewModel>(); foreach (var fact in ind.Facts) { individualViewModel.Facts.Add(new FactViewModel(fact)); } if (ind.ImageId == -1) { individualViewModel.ImageUrl = (ind.Sex == Sex.Female) ? "DesktopModules/FTP/FamilyTreeProject/Images/female.png" : "DesktopModules/FTP/FamilyTreeProject/Images/male.png"; } else { var file = FileManager.Instance.GetFile(ind.ImageId); individualViewModel.ImageUrl = (file.PortalId == -1) ? Globals.HostPath + file.RelativePath : PortalSettings.HomeDirectory + file.RelativePath; } return(individualViewModel); }
private TreeViewModel GetTreeViewModel(Tree tree) { var treeViewModel = new TreeViewModel(tree); if (tree.HomeIndividualId > -1) { var homeIndividual = _individualService.Get(tree.HomeIndividualId, tree.TreeId); if (homeIndividual != null) { treeViewModel.HomeIndividual = new IndividualViewModel(homeIndividual); } } if (tree.LastViewedIndividualId > -1) { var lastViewedIndividual = _individualService.Get(tree.LastViewedIndividualId, tree.TreeId); if (lastViewedIndividual != null) { treeViewModel.LastViewedIndividual = new IndividualViewModel(lastViewedIndividual); } } treeViewModel.IndividualCount = _individualService.Get(tree.TreeId).Count(); treeViewModel.FamilyCount = _familyService.Get(tree.TreeId).Count(); treeViewModel.FactCount = _factService.Get(tree.TreeId).Count(); if (tree.ImageId == -1) { treeViewModel.ImageUrl = "DesktopModules/FTP/FamilyTreeProject/Images/no-image-thumb.png"; } else { var file = FileManager.Instance.GetFile(tree.ImageId); treeViewModel.ImageUrl = (file.PortalId == -1) ? Globals.HostPath + file.RelativePath : PortalSettings.HomeDirectory + file.RelativePath; } return(treeViewModel); }