Ejemplo n.º 1
0
        public override void Process(ApplyBoostArgs args)
        {
            if (args.BoostItem == null || args.BoostItem.TemplateID != BoostTemplate.TemplateID)
            {
                return;
            }

            var field = args.BoostItem[BoostTemplate.FieldName.BoostField];

            if (string.IsNullOrWhiteSpace(field))
            {
                Log.Warn($"Nimble:Boost:SimpleBoost: Missing Expected Property name on item {args.BoostItem.DisplayName}, {args.BoostItem.ID}", this);
                return;
            }
            float amount;

            if (!float.TryParse(args.BoostItem[BoostTemplate.FieldName.BoostAmount], out amount))
            {
                Log.Warn($"Nimble:Boost:SimpleBoost: Unable to parse boost amount on item {args.BoostItem.DisplayName}, {args.BoostItem.ID}", this);
                return;
            }

            args.Query = args.Query.Where(x =>
                                          x[field].Contains(args.SearchParameters.Keyword).Boost(amount)
                                          );
        }
Ejemplo n.º 2
0
        public override void Process(BuildQueryArgs args)
        {
            var boosts = args.TabItem?.Boosts;

            if (boosts == null || boosts.Length <= 0)
            {
                return;
            }

            var boostArgs = new ApplyBoostArgs
            {
                SearchParameters = args.SearchParameters,
                Query            = args.Query
            };

            foreach (var boost in boosts)
            {
                boostArgs.BoostItem = boost;
                CorePipeline.Run(Abstractions.Constants.Pipeline.ApplyBoost, boostArgs);
            }
            args.Query = boostArgs.Query;
        }
Ejemplo n.º 3
0
        public override void Process(ApplyBoostArgs args)
        {
            // To apply or not to apply
            if (args.BoostItem == null || args.BoostItem.TemplateID != DateBoostTemplateId)
            {
                return;
            }

            var daysField = (Sitecore.Data.Fields.MultilistField)args.BoostItem.Fields[DayChecklistField];

            if (daysField == null || daysField.Count <= 0)
            {
                return;
            }

            int i         = 0;
            var daysAsInt = (from s in daysField.Items where int.TryParse(s, out i) select i).ToArray();

            if (daysAsInt.Any())
            {
                var boost = BoostSortDate <NimbleSearchResultItem>(daysAsInt);
                args.Query = args.Query.Cast <NimbleSearchResultItem>().Where(boost);
            }
        }