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; }
public HttpResponseMessage SaveIndividual(IndividualViewModel viewModel) { Individual individual; if (viewModel.Id == -1) { individual = new Individual { Id = -1, TreeId = viewModel.TreeId, FirstName = viewModel.FirstName, LastName = viewModel.LastName }; switch (viewModel.Sex) { case "Male": individual.Sex = Sex.Male; break; case "Female": individual.Sex = Sex.Female; break; default: individual.Sex = Sex.Unknown; break; } _individualService.Add(individual); } else { individual = _individualService.Get(viewModel.Id, viewModel.TreeId); individual.FirstName = viewModel.FirstName; individual.LastName = viewModel.LastName; if (viewModel.ImageId > 0) { individual.ImageId = viewModel.ImageId; } _individualService.Update(individual); } var response = new { id = individual.Id }; return Request.CreateResponse(HttpStatusCode.OK, response); }