protected override void SetSearchCriteria(ref SearchBuilder sb)
        {
            SortExpressions.Clear();
            sb.SortExpressions.Clear();
            sb.TableAlias = "U";
            sb.Fields.Add("UserId");

            if (!StringUtils.IsBlank(CompanyName) && CompanyName.ToLower() != "all")
            {
                sb.Criteria.Add(string.Format("CompanyName='{0}'", SqlUtils.SafeValue(CompanyName)));
            }

            if (BrandId.HasValue)
            {
                switch (BrandId.Value)
                {
                case 0:
                    sb.Criteria.Add(string.Format("{0} IS NULL", User.Columns.PrimaryBrandId));
                    break;

                default:
                    sb.Criteria.Add(string.Format("{0}={1}", User.Columns.PrimaryBrandId, BrandId.Value));
                    break;
                }
            }
        }
        private void AddOrderByClause()
        {
            switch (OrderBy)
            {
            case OrderBy.Relevance:

                // Relevance ordering is done within the full text search
                // However, for empty search we also need to order by date

                if (StringUtils.IsBlank(GeneralKeyword))
                {
                    SortExpressions.RemoveAll(delegate(ISortExpression sortExpression)
                    {
                        string fieldName = sortExpression.FieldName.ToLower();

                        return(
                            fieldName == Asset.Columns.PublishDate.ToString().ToLower() ||
                            fieldName == Asset.Columns.AssetId.ToString().ToLower()
                            );
                    });

                    SortExpressions.Add(new DescendingSort(Asset.Columns.PublishDate));
                    SortExpressions.Add(new DescendingSort(Asset.Columns.AssetId));
                }

                break;

            case OrderBy.Popularity:

                // Order assets by download count.  If the download count is the same
                // favour newer assets, on the basis that they have achieved the same
                // download count in a shorter space of time.  This system breaks if
                // assets are published and unpublished, as the download count does not
                // reset when an asset is unpublished, so it will not be accurate.

                SortExpressions.Clear();
                SortExpressions.Add(new DescendingSort(Asset.Columns.DownloadCount));
                SortExpressions.Add(new DescendingSort(Asset.Columns.UploadDate));

                break;

            case OrderBy.Date:

                // Order by assets by date, with newer assets first

                SortExpressions.Clear();
                SortExpressions.Add(new DescendingSort(Asset.Columns.PublishDate));
                SortExpressions.Add(new DescendingSort(Asset.Columns.AssetId));

                break;
            }
        }
Beispiel #3
0
 /// <summary>
 /// Pulizia delle espressioni di ordinamento
 /// </summary>
 public virtual void SortExpressionsClear()
 {
     SortExpressions.Clear();
 }