/// <summary>
        /// Converts attribute model with type <see cref="DCConstants.DCAttributeFilterTypeId"/> to <see cref="Select"/>.
        /// </summary>
        /// <param name="model">Extensible model object.</param>
        /// <param name="userConnection">User connection.</param>
        /// <returns>Converted <see cref="Select"/> object when attribute is filter and value is correct
        /// search data string. And null in othervise.</returns>
        public static Select ToFilter(this DCAttributeModel model, UserConnection userConnection)
        {
            model.CheckArgumentNull(nameof(model));
            userConnection.CheckArgumentNull(nameof(userConnection));
            if (!model.IsFilter())
            {
                return(null);
            }
            var dataSourceFilters = Json.Deserialize <Nui.ServiceModel.DataContract.Filters>(model.Value);
            var esq = new EntitySchemaQuery(userConnection.EntitySchemaManager, dataSourceFilters.RootSchemaName);

            esq.AddColumn(esq.RootSchema.GetPrimaryColumnName());
            IEntitySchemaQueryFilterItem filters = dataSourceFilters.BuildEsqFilter(esq.RootSchema.UId, userConnection);

            CommonUtilities.DisableEmptyEntitySchemaQueryFilters(new[] { filters });
            if (filters != null)
            {
                esq.Filters.Add(filters);
            }
            return(esq.GetSelectQuery(userConnection));
        }
 /// <summary>
 /// Determines whether the attribute is a filter.
 /// </summary>
 /// <param name="model">Extensible model object.</param>
 /// <returns>Returns true when <paramref name="model"/> has type
 /// <see cref="DCConstants.DCAttributeFilterTypeId"/>. And false in otherwise.</returns>
 public static bool IsFilter(this DCAttributeModel model)
 {
     model.CheckArgumentNull(nameof(model));
     return(model.TypeId == DCConstants.DCAttributeFilterTypeId);
 }