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()
                }
            });
        }
Esempio n. 3
0
        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);
            }
        }
Esempio n. 4
0
 public async Task <IActionResult> SchemaTable([FromBody] TReportsSchemaTableRequest request)
 {
     return(await base.SchemaTable(request));
 }