public void Edit(D.Account account, D.AccountProfile profile) { EF.Account efAccount = ConvertToEFwithID(account, profile); //START var tempAccount = _context.Accounts.Single(a => a.AccountID == efAccount.AccountID); tempAccount.RoleID = efAccount.RoleID; var tempProfile = _context.Profiles.Single(p => p.ProfileID == efAccount.ProfileID); //remove beneficary foreach (var ben in tempProfile.Beneficiaries.ToArray()) { if (!efAccount.Profile.Beneficiaries.Any(b => b.BeneficiaryID == ben.BeneficiaryID)) { tempProfile.Beneficiaries.Remove(ben); } } //add beneficary foreach (var ben in efAccount.Profile.Beneficiaries) { if (!tempProfile.Beneficiaries.Any(b => b.BeneficiaryID == ben.BeneficiaryID)) { tempProfile.Beneficiaries.Add(ben); } } _context.SaveChanges(); }
private EF.Account ConvertToEFwithID(D.Account account, D.AccountProfile profile) { EF.Role role = _context.Roles.FirstOrDefault(r => r.Name == account.Role.Name); List <EF.Beneficiary> efBeneficiaries = new List <EF.Beneficiary>(); foreach (var beneficiary in profile.Beneficiaries) { efBeneficiaries.Add(_context.Beneficiaries.FirstOrDefault(b => b.Name == beneficiary.Name)); } EF.Account current = _context.Accounts.FirstOrDefault(a => a.UserName == account.UserName); int profileID = _context.Profiles.FirstOrDefault(a => a.Name == profile.Name).ProfileID; EF.AccountProfile efProfile = new EF.AccountProfile(profileID, profile.Name, efBeneficiaries, profile.IsLocal); return(new EF.Account(current.AccountID, account.UserName, current.Password, current.Salt, role.RoleID, role, efProfile.ProfileID, efProfile)); }
private D.Account ConvertToDomain(EF.Account efAccount) { EF.Role efRole = _context.Roles.FirstOrDefault(r => r.RoleID == efAccount.RoleID); EF.AccountProfile efProfile = _context.Profiles.FirstOrDefault(r => r.ProfileID == efAccount.Profile.ProfileID); List <D.Beneficiary> beneficiaries = new List <D.Beneficiary>(); foreach (var beneficiary in efProfile.Beneficiaries) { beneficiaries.Add(new D.Beneficiary(beneficiary.Name)); } D.Role role = new D.Role(efRole.Name, efRole.Permissions); D.AccountProfile profile = new D.AccountProfile(efProfile.Name, beneficiaries); return(new D.Account(efAccount.UserName, efAccount.Password, efAccount.Salt, role, profile)); }