Exemple #1
0
 partial void OnCreated()
 {
     SkuDataDbDataContext.DefaultTableValues(this);
     ProjectID = AryaTools.Instance.InstanceData.CurrentProject.ID;
     Type      = Framework.Data.AryaDb.AttributeTypeEnum.Sku;
 }
Exemple #2
0
        public static Attribute GetAttributeFromName(string attributeName, bool createIfNotFound,
                                                     Framework.Data.AryaDb.AttributeTypeEnum attributeType =
                                                     Framework.Data.AryaDb.AttributeTypeEnum.NonMeta)
        {
            // select cache to use
            Dictionary <string, Attribute> attributeCache;

            switch (attributeType)
            {
            case Framework.Data.AryaDb.AttributeTypeEnum.SchemaMeta:
            {
                attributeCache = SchemaMetaAttributeCache;
                break;
            }

            case Framework.Data.AryaDb.AttributeTypeEnum.SchemaMetaMeta:
            {
                attributeCache = SchemaMetaMetaAttributeCache;
                break;
            }

            case Framework.Data.AryaDb.AttributeTypeEnum.TaxonomyMeta:
            {
                attributeCache = TaxonomyMetaAttributeCache;
                break;
            }

            case Framework.Data.AryaDb.AttributeTypeEnum.TaxonomyMetaMeta:
            {
                attributeCache = TaxonomyMetaMetaAttributeCache;
                break;
            }

            case Framework.Data.AryaDb.AttributeTypeEnum.Workflow:
            {
                attributeCache = WorkflowAttributeCache;
                break;
            }

            default:     //Sku, Global, Derived, Flag
            {
                attributeCache = NonMetaAttributeCache;
                break;
            }
            }

            // format attribute name
            attributeName = attributeName.Trim();
            var lowerAttributeName = attributeName.ToLower();

            // try to find attribute in cache and make sure it is correct
            if (attributeCache.ContainsKey(lowerAttributeName))
            {
                var attribute = attributeCache[lowerAttributeName];
                if (attribute != null && !attribute.AttributeName.ToLower().Equals(lowerAttributeName))
                {
                    attributeCache.Remove(lowerAttributeName);
                }
                else
                {
                    return(attribute);
                }
            }

            // if attribute is not cached, try to find it in the whole attribute file
            Attribute newAttribute = null;
            var       attQuery     = from attribute in AryaTools.Instance.InstanceData.Dc.Attributes
                                     where
                                     attribute.AttributeName.Equals(lowerAttributeName) &&
                                     attribute.ProjectID == AryaTools.Instance.InstanceData.CurrentProject.ID
                                     select attribute;

            attQuery = attributeType == Framework.Data.AryaDb.AttributeTypeEnum.NonMeta
                ? attQuery.Where(
                attr => Framework.Data.AryaDb.Attribute.NonMetaAttributeTypes.Contains(attr.AttributeType))
                : attQuery.Where(attr => attr.AttributeType == attributeType.ToString());

            var att = attQuery.FirstOrDefault();

            // if found, return it
            if (att != null)
            {
                newAttribute = att;
            }
            // if not found and creation is requested, create it
            else if (createIfNotFound)
            {
                newAttribute = new Attribute
                {
                    AttributeName = attributeName,
                    AttributeType =
                        (attributeType
                         == Framework.Data.AryaDb.AttributeTypeEnum.NonMeta
                                           ? Framework.Data.AryaDb.AttributeTypeEnum.Sku
                                           : attributeType).ToString()
                };
                AryaTools.Instance.InstanceData.CurrentProject.Attributes.Add(newAttribute);
            }

            // if attribute exists, try to add it to the appropriate cache
            if (newAttribute != null)
            {
                if (!attributeCache.Keys.Contains(lowerAttributeName))
                {
                    attributeCache.Add(lowerAttributeName, newAttribute);
                }
            }

            return(newAttribute);
        }