public IActionResult SchemaTable([FromBody] TReportsSchemaTableRequest request) { Log.Information("***Executando método 'SchemaTable'***"); Log.Information("-----Leitura dos parâmetros -----" + System.Environment.NewLine); Log.Information(JsonConvert.SerializeObject(request)); Log.Information(System.Environment.NewLine); Log.Information("-----Fim da leitura dos parâmetros -----" + System.Environment.NewLine); try { TReportsSchemaTableResponse response = new TReportsSchemaTableResponse(); response = GetSchemaTable(request); Log.Information("***Resposta do método 'SchemaTable'***"); Log.Information(JsonConvert.SerializeObject(response)); Log.Information(System.Environment.NewLine); Log.Information("-----Fim da resposta do método 'SchemaTable'-----" + System.Environment.NewLine); return(Ok(response)); } catch (Exception ex) { Log.Error(ex.Message); Response.StatusCode = 500; return(Accepted(new TReportsCustomError() { code = "500", detailedMessage = ex.StackTrace, message = ex.Message })); } }
private TReportsSchemaTableResponse GetSchemaTable(TReportsSchemaTableRequest request) { var entityType = GetEntityType(request.TableSourceName); var columns = new List <Column>(); foreach (IProperty property in entityType.GetProperties()) { columns.Add(new Column { ColumnName = property.Name, ColumnDescription = property.PropertyInfo.GetCustomAttribute <System.ComponentModel.DescriptionAttribute>()?.Description, ColumnType = MapColumn(property.FieldInfo?.FieldType.ToString()) }); } return(new TReportsSchemaTableResponse { SchemaTable = new SchemaTable { TableSourceName = request.TableSourceName, Columns = columns.Where(x => !string.IsNullOrEmpty(x.ColumnType)).ToArray() } }); }
internal static void GetSchemaTable(TReportsSchemaTableRequest request, TReportsSchemaTableResponse response) { DataTable tableSource = new DataTable(); DataTable tableDictionary = new DataTable(); string description = null; tableDictionary.ReadXml("Data\\Dicionario.xml"); if (request.TableSourceName == "EMPRESA") { tableSource.ReadXml("Data\\Empresa.xml"); description = "Empresas do dataset"; } else if (request.TableSourceName == "PAIS") { tableSource.ReadXml("Data\\Pais.xml"); description = "Pais do dataset"; } else { tableSource.ReadXml("Data\\Filial.xml"); description = "Filiais do dataset"; } if (tableSource.Columns.Count > 0) { response.SchemaTable = new SchemaTable(); response.SchemaTable.TableSourceName = tableSource.TableName; response.SchemaTable.TableSourceDescription = description; List <Column> columns = new List <Column>(); foreach (DataColumn columnSchema in tableSource.Columns) { Column column = new Column(); column.ColumnName = columnSchema.ColumnName; DataRow[] drDicionario = tableDictionary.Select(string.Format("TABELA = '{0}' AND COLUNA = '{1}'", tableSource.TableName, columnSchema.ColumnName)); column.ColumnDescription = drDicionario[0]["DESCRICAO"].ToString(); column.ColumnType = columnSchema.DataType.ToString(); columns.Add(column); } response.SchemaTable.Columns = columns.ToArray(); MapColumns(response.SchemaTable.Columns); } }
public async Task <IActionResult> SchemaTable([FromBody] TReportsSchemaTableRequest request) { return(await base.SchemaTable(request)); }