public async Task <List <ClientPolicy> > AddOrUpdateClientPolicies(ClientPolicies clientPolicies) { List <ClientPolicy> clientPolicyListSaved = await _context.ClientPolicies.Where(cp => cp.ClientId == clientPolicies.ClientId).ToListAsync(); List <ClientPolicy> clientPoliciesToAdd = new List <ClientPolicy>(); List <ClientPolicy> clientPoliciesToDelete = new List <ClientPolicy>(); if (clientPolicyListSaved.Count > 0) { clientPolicyListSaved.ForEach(client => { if (clientPolicies.PoliciesIds.Contains(client.PolicyId) == false) { clientPoliciesToDelete.Add(client); } }); } clientPolicies.PoliciesIds.ForEach(id => { ClientPolicy clientPolicy = clientPolicyListSaved.Find(e => e.ClientId == clientPolicies.ClientId && e.PolicyId == id); if (clientPolicy == null) { clientPoliciesToAdd.Add(new ClientPolicy { ClientId = clientPolicies.ClientId, PolicyId = id }); } }); await _context.ClientPolicies.AddRangeAsync(clientPoliciesToAdd); _context.ClientPolicies.RemoveRange(clientPoliciesToDelete); await _context.SaveChangesAsync(); return(await _context.ClientPolicies.Where(cp => cp.ClientId == clientPolicies.ClientId).ToListAsync()); }
public async Task <ActionResult <List <ClientPolicy> > > CreatePolicyClients(ClientPolicies clientPolicy) { try { return(await _clientPolicyRepository.AddOrUpdateClientPolicies(clientPolicy)); } catch (Exception e) { return(StatusCode(500, "Server Error")); } }