public async Task <HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken) { HttpResponseMessage response; try { QueryMetadata query = createQuery(_table, _settings); Paging paging = new PositionBasedPaging() { StartingPosition = _settings.startPos, NumberOfRecordsToFetch = _settings.fetch }; using (var client = ClientFactory.CreateClient <QueryServiceClient>()) { ExecuteQueryRequest queryRequest = new ExecuteQueryRequest(query, paging); ExecuteQueryResponse queryResponse = await client.ExecuteQueryAsync(queryRequest); response = createQueryResponse(_request, queryResponse.ExecuteQueryResult); } } catch (Exception ex) { response = _request.CreateErrorResponse(HttpStatusCode.BadRequest, ex.Message); } return(response); }
public async Task <List <TClass> > PreExecutarQuery <TClass>(string where = "", string inner = "", int idIntegracaoTipo = 0, int idIntegracaoEntidade = 0, string httpVerbo = "") where TClass : class, new() { Type typeClass = typeof(TClass); List <TClass> resultList = new List <TClass>(); TabelaIntegracaoAttribute classAttr = (TabelaIntegracaoAttribute)typeClass.GetCustomAttributes(typeof(TabelaIntegracaoAttribute), false).FirstOrDefault(); if (classAttr == null) { return(resultList); } var listColumns = new List <ColunasConsulta>(); PropertyInfo[] properties = typeClass.GetProperties(); foreach (var propertyInfo in properties) { TabelaIntegracaoAttribute queryProperty = (TabelaIntegracaoAttribute)propertyInfo.GetCustomAttributes(typeof(TabelaIntegracaoAttribute), false).FirstOrDefault(); if (queryProperty == null) { continue; } listColumns.Add(new ColunasConsulta(queryProperty.DisplayName, propertyInfo.Name)); } var sqlColunas = string.Join(",", listColumns.Select(s => s.Coluna).ToArray()); var sql = string.Format("SELECT {0} FROM {1} {2} {3}", sqlColunas, classAttr.DisplayName, inner, where); string resultado = await Instance.ExecuteQuery(sql, idIntegracaoTipo, idIntegracaoEntidade, httpVerbo); if (resultado == null) { return(resultList); } ExecuteQueryResponse resultObj = null; try { resultObj = JsonConvert.DeserializeObject <ExecuteQueryResponse>(resultado); } catch (Exception e) { var erro = DeserializarXML <IntegracaoErroResposta>(resultado); byte[] erroData = Convert.FromBase64String(erro.Mensagem); string decodedString = Encoding.UTF8.GetString(erroData); throw new BusinessException(string.Format("Ocorreu um erro na consulta da tabela {0}. Mensagem de Erro {1}", classAttr.DisplayName, decodedString)); } resultList = new List <TClass>(); foreach (var row in resultObj.responseBody.rows) { var newClass = new TClass(); for (var i = 0; i <= listColumns.Count() - 1; i++) { PropertyInfo propertySet = typeClass.GetProperty(listColumns[i].Nome); propertySet.SetValue(newClass, row[i], null); } resultList.Add(newClass); } return(resultList); }