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); }
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); }
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); }
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; } }
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); } }); }
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); } }
public CVL UpdateCVL(CVL cvl) { throw new NotImplementedException(); }
public CVL AddCVL(CVL cvl) { throw new NotImplementedException(); }
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); }
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>()); }