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"));
     }
 }