Example #1
0
 public Token(int id, Sku sku, string expression, TokenType tokenType)
 {
     _sku           = sku;
     _id            = "t" + id;
     _expression    = expression;
     this.tokenType = tokenType;
 }
Example #2
0
            public Token(int id, Sku sku, string expression)
            {
                _sku = sku;
                _id  = "t" + id;

                if (expression.IndexOf("[Special:", StringComparison.Ordinal) > -1)
                {
                    tokenType = TokenType.Special;
                }
                else if (expression.StartsWith("[") && expression.EndsWith("]"))
                {
                    expression = expression.Substring(1, expression.Length - 2).Trim();
                    if (expression.Contains(SubUomExpression))
                    {
                        tokenType  = TokenType.Uom;
                        expression = expression.Replace(SubUomExpression, string.Empty).Trim();
                    }
                    else if (expression.Contains(SubAttributeValueOnlyExpression))
                    {
                        tokenType  = TokenType.AttributeValueOnly;
                        expression = expression.Replace(SubAttributeValueOnlyExpression, string.Empty).Trim();
                    }
                    else
                    {
                        tokenType = TokenType.Attribute;
                    }
                }
                else if (expression.StartsWith("\"") && expression.EndsWith("\""))
                {
                    tokenType = TokenType.Constant;
                }

                _expression = expression;
            }
Example #3
0
        // Private Methods (19) 

        void AddSkuGap(Sku sku, string attributeName)
        {
            if (!_skuGaps.ContainsKey(sku))
            {
                _skuGaps.Add(sku, new List <string>());
            }

            _skuGaps[sku].Add(attributeName);
        }
Example #4
0
        private void UpdateLinkStatus(FilteredSkuLink link, string accuracy, string reasonCode, string reasonDetail, string brandReasonDetail = null)
        {
            //Sku sku = rbResultsInLeftSku.Checked ? link.LeftSku : link.RightSku;
            //results in left Sku
            Sku sku = link.LeftSku;
            var leftLowerTaxonomy = sku.Taxonomy.ToString().ToLower();

            if (!string.IsNullOrEmpty(reasonCode) && !string.IsNullOrEmpty(reasonDetail))
            {
                var rightLowerTaxonomy = link.RightTaxonomy.ToString().ToLower();

                if (leftLowerTaxonomy.Contains(">Representational>".ToLower()))
                {
                    if (rightLowerTaxonomy.Contains(">Line Drawing".ToLower()))
                    {
                        reasonDetail = "Line Drawing";
                        reasonCode   = "Does not fit Image Guidelines";
                    }
                    else if (rightLowerTaxonomy.Contains(">Group Shot".ToLower()))
                    {
                        reasonDetail = "Group Shot";
                        reasonCode   = "Does not fit Image Guidelines";
                    }
                }
                else if (leftLowerTaxonomy.Contains(">One-One>".ToLower()))
                {
                    if (rightLowerTaxonomy.Contains(">Line Drawing".ToLower()))
                    {
                        reasonDetail = "Line Drawing";
                        reasonCode   = "Does not fit Image Guidelines";
                    }
                }
            }

            var status = accuracy == Yes || accuracy == No ? "Completed" : "Sent to MSC for data insufficiency";

            //if (leftLowerTaxonomy.Contains(">One-One>".ToLower()) && (reasonCode == null || !reasonCode.Equals("Does not fit Image Guidelines", StringComparison.OrdinalIgnoreCase)))
            //    return;

            sku.UpsertValue(txtResultPrefix.Text + "Accurate?", accuracy);
            sku.UpsertValue(txtResultPrefix.Text + "Reason Code", reasonCode);
            sku.UpsertValue(txtResultPrefix.Text + "Reason Detail", reasonDetail);
            //sku.UpsertValue(txtResultPrefix.Text + "Brand Reason Detail", brandReasonDetail);
            sku.UpsertValue(txtResultPrefix.Text + "Status", status);
        }
Example #5
0
        private bool CreateSkuLink(Sku leftSku, Sku rightSku, string matchType)
        {
            if (rightSku.ID.Equals(leftSku.ID))
            {
                return(false);
            }

            var existingSkuLink =
                AryaTools.Instance.InstanceData.Dc.SkuLinks.Any(
                    sl => sl.Active && sl.Sku.Equals(leftSku) && sl.Sku1.Equals(rightSku));

            if (existingSkuLink)
            {
                return(false);
            }

            var newSkuLink = new SkuLink {
                Sku = leftSku, Sku1 = rightSku, LinkType = txtSkuLinkType.Text + "-" + matchType
            };

            AryaTools.Instance.InstanceData.Dc.SkuLinks.InsertOnSubmit(newSkuLink);
            return(true);
        }
Example #6
0
        private int FindExactMatches(Sku sourceSku)
        {
            IQueryable <Sku> skuFilter = from sku in AryaTools.Instance.InstanceData.Dc.Skus
                                         //where sku.SkuInfos.Any(si => si.Active && leftTaxIds.Contains(si.TaxonomyID))
                                         select sku;

            var schemaAttributes = GetInSchemaAttributes(sourceSku.Taxonomy);

            if (schemaAttributes.Count == 0)
            {
                return(0);
            }

            //Must match Brand
            //var brandAttribute = Attribute.GetAttributeFromName(BrandName, true);
            //if (!schemaAttributes.Contains(brandAttribute))
            //    schemaAttributes.Add(brandAttribute);

            bool   hasValues = false;
            string matchType = "Exact";

            foreach (var att in schemaAttributes)
            {
                var attribute = att;
                var values    = sourceSku.GetValuesForAttribute(attribute.AttributeName, true).Select(ed => ed.Value).ToList();
                if (values.Count == 0 || values.Any(val => _dontCareValues.Contains(val)))
                {
                    continue;
                }

                if (values.Any(val => _notDiscernibles.Contains(val)))
                {
                    matchType = "Potential";
                    continue;
                }

                hasValues = true;

                skuFilter =
                    skuFilter.Where(
                        sku =>
                        sku.EntityInfos.Any(
                            ei =>
                            ei.EntityDatas.Any(
                                ed => ed.Active && ed.AttributeID.Equals(attribute.ID) && values.Contains(ed.Value))));
            }

            if (!hasValues)
            {
                return(0);
            }

            var targetSkus = skuFilter.Distinct().ToList();

            int newLinkCount = 0;

            foreach (var targetSku in targetSkus)
            {
                if (targetSku.Taxonomy.ToString().Contains(">Images>"))
                {
                    continue;
                }

                if (CreateSkuLink(targetSku, sourceSku, matchType))
                {
                    newLinkCount++;
                }
            }

            return(newLinkCount);
        }
Example #7
0
 public TaxAttValueCalculator(Sku sku)
 {
     _sku           = sku;
     sourceTaxonomy = _sku.Taxonomy;
 }