public async Task <List <ClientChildDto> > HandleAsync(int id, ClientChildType type, string searchTerm, CancellationToken cancellationToken = default) { return(type switch { ClientChildType.GrantType => await _grantsRepository.Query() .Where(e => e.ClientId == id) .Where(e => e.GrantType.Contains(searchTerm)) .Select(e => new ClientChildDto { Id = e.Id, Value = e.GrantType }) .ToListAsync(cancellationToken), ClientChildType.RedirectUri => await _redirectUriRepository.Query() .Where(e => e.ClientId == id) .Where(e => e.RedirectUri.Contains(searchTerm)) .Select(e => new ClientChildDto { Id = e.Id, Value = e.RedirectUri }) .ToListAsync(cancellationToken), ClientChildType.LogoutRedirectUri => await _logoutRedirectUrisRepository.Query() .Where(e => e.ClientId == id) .Where(e => e.PostLogoutRedirectUri.Contains(searchTerm)) .Select(e => new ClientChildDto { Id = e.Id, Value = e.PostLogoutRedirectUri }) .ToListAsync(cancellationToken), ClientChildType.CorsOrigin => await _corsRepository.Query() .Where(e => e.ClientId == id) .Where(e => e.Origin.Contains(searchTerm)) .Select(e => new ClientChildDto { Id = e.Id, Value = e.Origin }) .ToListAsync(cancellationToken), _ => throw new ArgumentOutOfRangeException() });
public async Task <ActionResult <ClientChildAssignmentResponse> > HandleAsync(int id, ClientChildType childType, int childId, CancellationToken cancellationToken = default) { if (!_clientRepository.Query() .Any(e => e.Id == id && e.ClientId != AppConstants.ReadOnlyEntities.AngularClient)) { return(NotFound(id)); } var toaster = new ToasterEvent(nameof(Client), ToasterType.Info, ToasterVerbs.Deleted); switch (childType) { case ClientChildType.GrantType: _grantsRepository.Delete(childId); await _grantsRepository.SaveAsync(toaster); break; case ClientChildType.RedirectUri: _redirectUriRepository.Delete(childId); await _redirectUriRepository.SaveAsync(toaster); break; case ClientChildType.LogoutRedirectUri: _logoutRedirectUrisRepository.Delete(childId); await _logoutRedirectUrisRepository.SaveAsync(toaster); break; case ClientChildType.CorsOrigin: _corsRepository.Delete(childId); await _corsRepository.SaveAsync(toaster); break; default: throw new ArgumentOutOfRangeException(); } return(NoContent()); }