public async Task <IActionResult> GetConnections( [FromQuery] string clientType, [FromQuery] string clientId, [FromQuery] string channelType, [FromQuery] string channelId ) { var query = new FindConnectionsByClientTypeClientIdChannelTypeChannelId(); if (!string.IsNullOrEmpty(clientType)) { query.ClientType = ClientType.Create(clientType); } if (!string.IsNullOrEmpty(clientId)) { query.ClientId = ClientId.Create(clientId); } if (!string.IsNullOrEmpty(channelType)) { query.ChannelType = ChannelType.Create(channelType); } if (!string.IsNullOrEmpty(channelId)) { query.ChannelId = ChannelId.Create(channelId); } IEnumerable <Connection> connections; try { connections = await _findConnectionsByClientTypeClientIdChannelTypeChannelIdQueryHandler.HandleAsync(query); } catch (ValidationException validationException) { return(StatusCode( (int)HttpStatusCode.UnprocessableEntity, new { message = validationException.MessageToUser } )); } var connectionDtos = connections.Select(ConnectionDto.CreateFromConnection); return(Ok(new ItemsEnvelope <ConnectionDto>(connectionDtos))); }