/// <summary> /// Añade un campo a la consulta /// </summary> internal void AddColumn(string column, ExpressionColumnRequestModel.AggregationType aggregatedBy, BaseColumnRequestModel requestColumn) { QueryFieldModel field = GetQueryField(column, aggregatedBy, requestColumn); // Añade los filtros field.FiltersWhere.AddRange(GetFilters(requestColumn.FiltersWhere)); field.FilterHaving.AddRange(GetFilters(requestColumn.FiltersHaving)); // Añade la columna a la consulta Fields.Add(field); }
/// <summary> /// Obtiene el nombre de un campo con el AS /// </summary> private string GetSqlField(QueryFieldModel field) { string fieldName = $"[{field.Table}].[{field.Field}]"; // Añade el alias if (!string.IsNullOrWhiteSpace(field.Alias)) { fieldName += $" AS [{field.Alias}]"; } // Devuelve el nombre del campo return(fieldName); }
/// <summary> /// Obtiene el campo de la consulta /// </summary> private QueryFieldModel GetQueryField(string columnId, ExpressionColumnRequestModel.AggregationType aggregatedBy, BaseColumnRequestModel requestColumn) { QueryFieldModel field = Fields.FirstOrDefault(item => item.Field.Equals(columnId, StringComparison.CurrentCultureIgnoreCase)); // Si no existía, lo añade if (field == null) { field = new QueryFieldModel(this, false, FromAlias, columnId, requestColumn.OrderBy, aggregatedBy, requestColumn.Visible); } // Devuelve el campo return(field); }
/// <summary> /// Añade un campo de clave primaria a la consulta /// </summary> internal void AddPrimaryKey(BaseColumnRequestModel requestColumn, string column, bool visible) { QueryFieldModel field = new QueryFieldModel(this, true, FromAlias, column, BaseColumnRequestModel.SortOrder.Undefined, ExpressionColumnRequestModel.AggregationType.NoAggregated, visible); // Añade los filtros if (requestColumn != null) { field.FiltersWhere.AddRange(GetFilters(requestColumn.FiltersWhere)); } // Añade el campo a la colección de campos de la consulta Fields.Add(field); }