예제 #1
0
        public bool FieldTypeIsMultiLanguage(FieldType fieldType, Configuration config)
        {
            if (fieldType.DataType.Equals(DataType.LocaleString))
            {
                return(true);
            }

            // if we send only keys cvl should not be multiLang in Epi
            if (fieldType.DataType.Equals(DataType.CVL))
            {
                if (config.ActiveCVLDataMode.Equals(CVLDataMode.Keys))
                {
                    return(false);
                }

                CVL cvl = _context.ExtensionManager.ModelService.GetCVL(fieldType.CVLId);

                if (cvl == null)
                {
                    return(false);
                }

                return(cvl.DataType.Equals(DataType.LocaleString));
            }

            return(false);
        }
예제 #2
0
        private string GetCvlFieldValue(string cvlId, string value, bool addValue)
        {
            if (string.IsNullOrWhiteSpace(value))
            {
                return(null);
            }

            string key = value.RemoveSpecialCharacters();

            if (string.IsNullOrWhiteSpace(key))
            {
                return(null);
            }

            CVL cvl = _cvlRepository.GetCVL(cvlId);

            if (cvl == null)
            {
                return(null);
            }

            CVLValue cvlValue = _cvlRepository.GetCVLValueByKey(cvl.Id, key);

            if (cvlValue != null)
            {
                return(cvlValue.Key);
            }

            if (!addValue)
            {
                return(null);
            }

            if (cvl.DataType == DataType.String)
            {
                cvlValue = new CVLValue {
                    CVLId = cvl.Id, Key = key, Value = value
                };
            }
            else if (cvl.DataType == DataType.LocaleString)
            {
                var localeString = new LocaleString();
                foreach (CultureInfo culture in _supportedCultures.Values)
                {
                    localeString[culture] = value;
                }

                cvlValue = new CVLValue {
                    CVLId = cvl.Id, Key = key, Value = localeString
                };
            }
            else
            {
                return(null);
            }

            _cvlRepository.AddCVLValue(cvlValue);

            return(key);
        }
예제 #3
0
        internal XDocument GenerateXmlForCvl(CVL cvl, string action = "")
        {
            XDocument doc  = new XDocument(new XDeclaration("1.0", "utf-8", null));
            var       root = new XElement(
                "CVL",
                new XAttribute("CustomValueList", cvl.CustomValueList),
                new XAttribute("DataType", cvl.DataType),
                new XAttribute("Id", cvl.Id));

            if (!string.IsNullOrEmpty(action))
            {
                root.Add(new XAttribute("Action", action));
            }

            if (!string.IsNullOrEmpty(cvl.ParentId))
            {
                root.Add(new XAttribute("ParentId", cvl.ParentId));
            }

            List <CVLValue> cvlValues = Context.ExtensionManager.ModelService.GetCVLValuesForCVL(cvl.Id);

            foreach (CVLValue value in cvlValues)
            {
                root.Add(XElement.Parse(value.ToXml()));
            }

            doc.Add(root);
            return(doc);
        }
        public CVL AddCVL(CVL cvl)
        {
            if (_cvls.TryGetValue(cvl.Id, out CVL cachedCvl))
            {
                return(cachedCvl);
            }

            cvl = _inRiverManager.ModelService.AddCVL(cvl);
            _cvls.Add(cvl.Id, cvl);

            return(cvl);
        }
예제 #5
0
 internal void WriteCvlById(string cvlId, string action, string cvlFolder)
 {
     try
     {
         CVL       cvl      = Context.ExtensionManager.ModelService.GetCVL(cvlId);
         XDocument doc      = GenerateXmlForCvl(cvl, action);
         string    fileName = $@"{cvlFolder}/{cvl.Id}.xml";
         uploadFileToAzure(doc, fileName);
     }
     catch (Exception exception)
     {
         Context.Log(LogLevel.Error, $"Error in WriteCvlById for cvl id {cvlId} \n{exception}");
         throw;
     }
 }
예제 #6
0
        private static void CreateCVL()
        {
            CVL newCVLAsLocaleString = remoteManager.ModelService.GetCVL("NewCVLAsLocaleStringId");

            if (newCVLAsLocaleString == null)
            {
                newCVLAsLocaleString = new CVL
                {
                    DataType = DataType.LocaleString,
                    Id       = "NewCVLAsLocaleStringId"
                };

                remoteManager.ModelService.AddCVL(newCVLAsLocaleString);
            }

            AddCvlValue(newCVLAsLocaleString.Id, "key", "yay");
        }
        private void AddCvlValue(string cvlId, string newCVLValueKey, string newCVLValue)
        {
            CVL      cvl    = RemoteManager.ModelService.GetCVL(cvlId);
            CVLValue cvlVal = new CVLValue()
            {
                CVLId = cvlId, Key = newCVLValueKey
            };

            if (cvl.DataType == DataType.String)
            {
                cvlVal.Value = newCVLValue;
            }
            else if (cvl.DataType == DataType.LocaleString)
            {
                LocaleString locale      = new LocaleString(RemoteManager.UtilityService.GetAllLanguages());
                CultureInfo  cultureInfo = new CultureInfo("en");
                locale[cultureInfo] = newCVLValue;
                cvlVal.Value        = locale;
            }

            RemoteManager.ModelService.AddCVLValue(cvlVal);
        }
        public void AddResourceEntity()
        {
            EntityType resourceEntity = RemoteManager.ModelService.GetEntityType("Resource");
            Entity     resource       = Entity.CreateEntity(resourceEntity);
            var        fieldTypes     = resourceEntity.FieldTypes;

            fieldTypes.ForEach(f =>
            {
                resource.GetField(f.Id).Data = "hello";
                var res = resource.GetField(f.Id).Data;

                if (f.DataType == DataType.LocaleString)
                {
                    var localStringValues        = new LocaleString(RemoteManager.UtilityService.GetAllLanguages());
                    resource.GetField(f.Id).Data = localStringValues;
                    var localeString             = resource.GetField(f.Id).Data;
                }

                if (f.DataType == DataType.CVL)
                {
                    CVL cvlObj      = new CVL();
                    var cvl1        = RemoteManager.ModelService.GetCVL(f.CVLId);
                    string dataType = RemoteManager.ModelService.GetCVL(f.CVLId).DataType;
                    cvlObj.DataType = dataType;
                    cvlObj.Id       = dataType == DataType.LocaleString
                        ? "NewCVLAsLocaleStringId"
                        : "NewCVLAsStringId";
                    resource.GetField(f.Id).Data = cvlObj;

                    var cvl = resource.GetField(f.Id).Data;
                }

                if (f.Equals(fieldTypes.Last()))
                {
                    RemoteManager.DataService.AddEntity(resource);
                }
            });
        }
예제 #9
0
        private static void AddCvlValue(string cvlId, string newCVLValueKey, string newCVLValue)
        {
            CVL      cvl      = remoteManager.ModelService.GetCVL(cvlId);
            bool     newValue = false;
            CVLValue cvlVal   = remoteManager.ModelService.GetCVLValueByKey(newCVLValueKey, cvlId);

            if (cvlVal == null)
            {
                newValue = true;
                cvlVal   = new CVLValue()
                {
                    CVLId = cvlId, Key = newCVLValueKey
                };
            }


            if (cvl.DataType == DataType.String)
            {
                cvlVal.Value = newCVLValue;
            }
            else if (cvl.DataType == DataType.LocaleString)
            {
                LocaleString locale      = new LocaleString(remoteManager.UtilityService.GetAllLanguages());
                CultureInfo  cultureInfo = new CultureInfo("en");
                locale[cultureInfo]           = newCVLValue;
                locale[new CultureInfo("sv")] = newCVLValue + "_SV";
                cvlVal.Value = locale;
            }

            if (newValue)
            {
                remoteManager.ModelService.AddCVLValue(cvlVal);
            }
            else
            {
                remoteManager.ModelService.UpdateCVLValue(cvlVal);
            }
        }
예제 #10
0
 public CVL UpdateCVL(CVL cvl)
 {
     throw new NotImplementedException();
 }
예제 #11
0
 public CVL AddCVL(CVL cvl)
 {
     throw new NotImplementedException();
 }
예제 #12
0
        public List <XElement> GetDictionaryValues(FieldType fieldType, Configuration configuration)
        {
            CVL currentCVL = _businessHelper.CvLs.ToList().FirstOrDefault(c => c.Id.Equals(fieldType.CVLId));

            if (currentCVL == null)
            {
                return(null);
            }

            List <CVLValue> currentCvlValues = _businessHelper.CVLValues.ToList().Where(cv => cv.CVLId.Equals(fieldType.CVLId)).ToList();

            if (!currentCvlValues.Any())
            {
                return(null);
            }

            List <XElement> values = new List <XElement>();

            foreach (CVLValue cvlValue in currentCvlValues)
            {
                if (configuration.ActiveCVLDataMode.Equals(CVLDataMode.Keys))
                {
                    if (!values.Any(d => d.Value.Equals(cvlValue.Key)))
                    {
                        values.Add(new XElement("Dictionary", cvlValue.Key));
                    }
                }
                else
                {
                    string value;
                    if (currentCVL.DataType.Equals(DataType.LocaleString))
                    {
                        foreach (string localeString in GetLocaleStringValues(cvlValue.Value, configuration))
                        {
                            value = localeString;
                            if (configuration.ActiveCVLDataMode.Equals(CVLDataMode.KeysAndValues))
                            {
                                value = cvlValue.Key + Configuration.CVLKeyDelimiter + value;
                            }

                            values.Add(new XElement("Dictionary", value));
                        }
                    }
                    else
                    {
                        value = cvlValue.Value.ToString();
                        if (configuration.ActiveCVLDataMode.Equals(CVLDataMode.KeysAndValues))
                        {
                            value = cvlValue.Key + Configuration.CVLKeyDelimiter + value;
                        }

                        if (!values.Any(d => d.Value.Equals(cvlValue.Value)))
                        {
                            values.Add(new XElement("Dictionary", value));
                        }
                    }
                }
            }

            return(values);
        }
예제 #13
0
        public List <XElement> GetCVLValues(Field field, Configuration configuration)
        {
            List <XElement> elemets = new List <XElement>();

            if (field == null || field.IsEmpty())
            {
                if (field != null)
                {
                    CVL cvl = CvLs.FirstOrDefault(c => c.Id.Equals(field.FieldType.CVLId));
                    if (cvl == null)
                    {
                        return(elemets);
                    }

                    if (cvl.DataType == DataType.LocaleString)
                    {
                        Dictionary <string, XElement> valuesPerLanguage = new Dictionary <string, XElement>
                        {
                            {
                                configuration.ChannelDefaultLanguage.Name,
                                new XElement("Data", new XAttribute("language", configuration.ChannelDefaultLanguage.Name.ToLower()))
                            }
                        };
                        if (!configuration.ActiveCVLDataMode.Equals(CVLDataMode.Keys))
                        {
                            foreach (KeyValuePair <CultureInfo, CultureInfo> keyValuePair in configuration.LanguageMapping)
                            {
                                if (!valuesPerLanguage.ContainsKey(keyValuePair.Key.Name))
                                {
                                    valuesPerLanguage.Add(
                                        keyValuePair.Key.Name,
                                        new XElement("Data", new XAttribute("language", keyValuePair.Key.Name.ToLower())));
                                }
                            }

                            if (valuesPerLanguage.Count > 0)
                            {
                                foreach (string key in valuesPerLanguage.Keys)
                                {
                                    elemets.Add(valuesPerLanguage[key]);
                                }
                            }
                        }
                    }
                    else
                    {
                        XElement dataElement = new XElement(
                            "Data",
                            new XAttribute("language", configuration.ChannelDefaultLanguage.Name.ToLower()));

                        elemets.Add(dataElement);
                    }
                }

                return(elemets);
            }

            if (configuration.ActiveCVLDataMode.Equals(CVLDataMode.Keys) ||
                (field.FieldType.Settings.ContainsKey("EPiMetaFieldName") && field.FieldType.Settings["EPiMetaFieldName"].Equals("_ExcludedCatalogEntryMarkets")))
            {
                XElement dataElement = new XElement(
                    "Data",
                    new XAttribute("language", configuration.ChannelDefaultLanguage.Name.ToLower()));
                if (field.FieldType.Multivalue)
                {
                    foreach (string cvlKey in field.Data.ToString().Split(';'))
                    {
                        dataElement.Add(new XElement("Item", new XAttribute("value", cvlKey)));
                    }
                }
                else
                {
                    dataElement.Add(new XAttribute("value", field.Data));
                }

                elemets.Add(dataElement);
            }
            else
            {
                CVL cvl = CvLs.FirstOrDefault(c => c.Id.Equals(field.FieldType.CVLId));
                if (cvl == null)
                {
                    return(elemets);
                }

                string[] keys = field.FieldType.Multivalue
                                    ? field.Data.ToString().Split(';')
                                    : new[] { field.Data.ToString() };

                Dictionary <string, XElement> valuesPerLanguage = new Dictionary <string, XElement>
                {
                    {
                        configuration.ChannelDefaultLanguage.Name,
                        new XElement("Data", new XAttribute("language", configuration.ChannelDefaultLanguage.Name.ToLower()))
                    }
                };

                foreach (string key in keys)
                {
                    CVLValue cvlValue = CVLValues.FirstOrDefault(cv => cv.CVLId.Equals(cvl.Id) && cv.Key.Equals(key));
                    if (cvlValue == null || cvlValue.Value == null)
                    {
                        continue;
                    }

                    if (cvl.DataType.Equals(DataType.LocaleString))
                    {
                        LocaleString ls = (LocaleString)cvlValue.Value;
                        foreach (KeyValuePair <CultureInfo, CultureInfo> keyValuePair in configuration.LanguageMapping)
                        {
                            if (!valuesPerLanguage.ContainsKey(keyValuePair.Key.Name))
                            {
                                valuesPerLanguage.Add(
                                    keyValuePair.Key.Name,
                                    new XElement("Data", new XAttribute("language", keyValuePair.Key.Name.ToLower())));
                            }

                            string value = ls[keyValuePair.Value];
                            if (configuration.ActiveCVLDataMode.Equals(CVLDataMode.KeysAndValues))
                            {
                                value = key + Configuration.CVLKeyDelimiter + value;
                            }

                            // MultiValue uses <Item> elements, SingleValue stores the value in the <Data> element.
                            if (field.FieldType.Multivalue)
                            {
                                valuesPerLanguage[keyValuePair.Key.Name].Add(
                                    new XElement("Item", new XAttribute("value", value)));
                            }
                            else
                            {
                                valuesPerLanguage[keyValuePair.Key.Name].Add(new XAttribute("value", value));
                            }
                        }
                    }
                    else
                    {
                        string value = cvlValue.Value.ToString();
                        if (configuration.ActiveCVLDataMode.Equals(CVLDataMode.KeysAndValues))
                        {
                            value = key + Configuration.CVLKeyDelimiter + value;
                        }

                        // MultiValue uses <Item> elements, SingleValue stores the value in the <Data> element.
                        if (field.FieldType.Multivalue)
                        {
                            valuesPerLanguage[configuration.ChannelDefaultLanguage.Name].Add(
                                new XElement("Item", new XAttribute("value", value)));
                        }
                        else
                        {
                            valuesPerLanguage[configuration.ChannelDefaultLanguage.Name].Add(new XAttribute("value", value));
                        }
                    }
                }

                if (valuesPerLanguage.Count > 0)
                {
                    foreach (string key in valuesPerLanguage.Keys)
                    {
                        elemets.Add(valuesPerLanguage[key]);
                    }
                }
            }

            return(elemets);
        }
        private void InitializeCvls()
        {
            var brandCvl = new CVL
            {
                Id       = "Brand",
                DataType = DataType.String
            };

            _cvls.Add(brandCvl.Id, brandCvl);
            _cvlValues.Add(brandCvl.Id, new List <CVLValue>());

            var mainCategoryCvl = new CVL
            {
                Id       = "MainCategory",
                DataType = DataType.LocaleString
            };

            _cvls.Add(mainCategoryCvl.Id, mainCategoryCvl);
            _cvlValues.Add(mainCategoryCvl.Id, new List <CVLValue>());

            var subCategoryCvl = new CVL
            {
                Id       = "SubCategory",
                DataType = DataType.LocaleString
            };

            _cvls.Add(subCategoryCvl.Id, subCategoryCvl);
            _cvlValues.Add(subCategoryCvl.Id, new List <CVLValue>());

            var marketCvl = new CVL
            {
                Id       = "Market",
                DataType = DataType.LocaleString
            };

            _cvls.Add(marketCvl.Id, marketCvl);
            _cvlValues.Add(marketCvl.Id, new List <CVLValue>());

            var genderCvl = new CVL
            {
                Id       = "Gender",
                DataType = DataType.LocaleString
            };

            _cvls.Add(genderCvl.Id, genderCvl);
            _cvlValues.Add(genderCvl.Id, new List <CVLValue>());

            var industryCvl = new CVL
            {
                Id       = "Industry",
                DataType = DataType.LocaleString
            };

            _cvls.Add(industryCvl.Id, industryCvl);
            _cvlValues.Add(industryCvl.Id, new List <CVLValue>());

            var itemSeasonCvl = new CVL
            {
                Id       = "ItemSeason",
                DataType = DataType.LocaleString
            };

            _cvls.Add(itemSeasonCvl.Id, itemSeasonCvl);
            _cvlValues.Add(itemSeasonCvl.Id, new List <CVLValue>());
        }