public virtual ActionResult RelationshipsEdit(UserEditRelationshipsViewModel model) { if (ModelState.IsValid) { FamilyRepository repos = new FamilyRepository(); // save the new relationship //Relationship relationship = new Relationship(); //relationship.SourceUser = Target; //relationship.RelatedUser = db.Users.Find(model.NewRelatedUserId); //relationship.RelatedUserIsSourceUsers = model.NewRelationshipType; //repos.UpdateRelationship(db, relationship); foreach (var item in model.FamilyRelationshipsNew) { Relationship relationship = new Relationship(); relationship.SourceUser = Target; relationship.RelatedUser = db.Users.Find(item.RelatedUserId); if (item.Relationship == UserEditRelationshipsViewModel.RelationshipTypeViewModel.NotImmediateFamilyMember) { repos.RemoveRelationship(db, relationship); } else { relationship.RelatedUserIsSourceUsers = ((RelationshipType)item.Relationship).Reciprocal(); repos.UpdateRelationship(db, relationship); } } return(RedirectToAction(MVC.User.Details().WithId(Target))); } return(View(model)); }
public virtual ActionResult RelationshipsEdit() { UserEditRelationshipsViewModel model = new UserEditRelationshipsViewModel(); model.TargetUser = Target; model.FamilyRelationshipsNew = new List <UserEditRelationshipsViewModel.RelationshipViewModel>(); // existing relationships foreach (var relationship in Target.Relationships) { ViewModels.UserEditRelationshipsViewModel.RelationshipViewModel r = new UserEditRelationshipsViewModel.RelationshipViewModel(); r.RelatedUserId = relationship.RelatedUser.Id; r.RelatedUser = relationship.RelatedUser; r.Relationship = (UserEditRelationshipsViewModel.RelationshipTypeViewModel)relationship.RelatedUserIsSourceUsers.Reciprocal(); model.FamilyRelationshipsNew.Add(r); } // non-immediate family foreach (var familyMember in Target.Family.Members) { if (model.FamilyRelationshipsNew.Any(vm => vm.RelatedUserId == familyMember.Id)) { continue; } if (familyMember.Id == Target.Id) { continue; } if (familyMember.IsPublicViewer) { continue; } ViewModels.UserEditRelationshipsViewModel.RelationshipViewModel r = new UserEditRelationshipsViewModel.RelationshipViewModel(); r.RelatedUserId = familyMember.Id; r.RelatedUser = familyMember; r.Relationship = UserEditRelationshipsViewModel.RelationshipTypeViewModel.NotImmediateFamilyMember; model.FamilyRelationshipsNew.Add(r); } model.FamilyRelationshipsNew.Sort((r1, r2) => r1.RelatedUser.Name.First.CompareTo(r2.RelatedUser.Name.First)); return(View(model)); }