public async Task <OperationResult <AddSecretToClientResult> > AddSecretToClient(
            int clientRecordId,
            string description,
            List <string> authorisedOrgIds)
        {
            var isAuthorisedToOrg = await _organisationContext.Organisations
                                    .AnyAsync(x => x.OrganisationRoleUserAssignedClients.Any(y => y.RoleUserAssignedClient.Client.Id == clientRecordId) &&
                                              authorisedOrgIds.Any(y => y.Equals(x.ExternalId)));

            if (!isAuthorisedToOrg)
            {
                _logger.LogError($"Not authorised to add Secret to Client with Id: {clientRecordId}.");
                return(OperationResult <AddSecretToClientResult> .Error(new AddSecretToClientResult(), OperationErrors.Unauthorised));
            }

            var client = await _organisationContext.Clients
                         .Include(x => x.ClientSecrets)
                         .FirstOrDefaultAsync(x => x.Id == clientRecordId);

            var result = new AddSecretToClientResult(
                client.Id,
                client.ClientId,
                string.Empty,
                description);

            if (client.ClientSecrets.Count() >= 2)
            {
                return(OperationResult <AddSecretToClientResult> .Error(result, OperationErrors.ClientSecretCountLimitReached));
            }

            (var plainText, var secret) = GenerateSecret(description);
            var newSecret = new IdentityServer4.EntityFramework.Entities.ClientSecret
            {
                Value       = secret.Value,
                Description = secret.Description,
                Type        = secret.Type,
                Created     = DateTime.UtcNow
            };

            client.ClientSecrets.Add(newSecret);
            await _organisationContext.SaveChangesAsync();

            result.Secret = plainText;

            return(OperationResult <AddSecretToClientResult> .Success(result));
        }
        public async Task <OperationResult> DeleteClientSecretByIdAsync(int id, List <string> authorisedOrgIds)
        {
            var isAuthorisedToOrg = await _organisationContext.Organisations
                                    .AnyAsync(x => x.OrganisationRoleUserAssignedClients.Any(y => y.RoleUserAssignedClient.Client.ClientSecrets.Any(z => z.Id == id)) &&
                                              authorisedOrgIds.Any(y => y.Equals(x.ExternalId)));

            if (!isAuthorisedToOrg)
            {
                _logger.LogError($"Not authorised to delete Client Secret Id: {id}.");
                return(OperationResult.Error(OperationErrors.Unauthorised));
            }

            var secret = new IdentityServer4.EntityFramework.Entities.ClientSecret {
                Id = id
            };
            var clientsDbSet = _organisationContext.Set <IdentityServer4.EntityFramework.Entities.ClientSecret>();

            clientsDbSet.Attach(secret);
            clientsDbSet.Remove(secret);
            await _organisationContext.SaveChangesAsync();

            return(OperationResult.Success());
        }