/// <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); }
/// <summary> /// Asigna las propiedades adicionales a una columna solicitada: ordenación, filtros, etc... /// </summary> private void AssignProperties(BaseColumnRequestModel columnRequest, NodeColumnViewModel node, bool withHaving) { // Indica si es visible columnRequest.Visible = node.IsChecked; // Añade el filtro Where columnRequest.FiltersWhere.AddRange(GetFilters(node.FilterWhere)); // Añade la ordenación y el filtro HAVING en su caso if (node.IsChecked) { // Añade la ordenación columnRequest.OrderBy = node.SortOrder; // Añade el filtro para la cláusula HAVING if (withHaving) { columnRequest.FiltersHaving.AddRange(GetFilters(node.FilterHaving)); } } }
/// <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> /// Añade un campo a la consulta /// </summary> internal void AddColumn(string column, BaseColumnRequestModel requestColumn) { AddColumn(column, ExpressionColumnRequestModel.AggregationType.NoAggregated, requestColumn); }
/// <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); }