private static IValueImportModel GetValue(Import.ImportEntity importEntity, Guid? relatedEntity, Import.ImportAttribute importAttribute, string language, bool isUpdate, string now) { IValueImportModel value; switch (importAttribute.Type) { case "Boolean": //value = new ValueImportModel<bool?>(entity) { Value = true }; value = new ValueImportModel<bool?>(importEntity); // Test null-Value break; case "DateTime": value = new ValueImportModel<DateTime?>(importEntity) { Value = DateTime.Now }; break; case "Entity": var entities = new List<Guid>(); if (relatedEntity.HasValue) entities.Add(relatedEntity.Value); value = new ValueImportModel<List<Guid>>(importEntity) { Value = entities }; break; case "Hyperlink": value = new ValueImportModel<string>(importEntity) { Value = "http://www.2sic.com" + (isUpdate ? " Updated " + now : "") }; break; case "Number": value = new ValueImportModel<decimal?>(importEntity) { Value = (decimal?)123.12d }; break; case "String": value = new ValueImportModel<string>(importEntity) { Value = "SampleString " + importAttribute.StaticName + " " + language + (isUpdate ? " Updated" + now : "") }; break; default: throw new ArgumentOutOfRangeException(importAttribute.Type); } value.ValueDimensions = new List<Import.ValueDimension> { new Import.ValueDimension {DimensionExternalKey = language, ReadOnly = false} }; return value; }
private static IValueImportModel GetValueModel(string valueString, string valueType, string valueLanguage, bool valueRedOnly, bool resolveHyperlink, Entity entity) { IValueImportModel valueModel; switch (valueType) { case "Boolean": { valueModel = new ValueImportModel <bool?>(entity) { Value = string.IsNullOrEmpty(valueString) ? null : new Boolean?(Boolean.Parse(valueString)) }; } break; case "Number": { valueModel = new ValueImportModel <decimal?>(entity) { Value = string.IsNullOrEmpty(valueString) ? null : new Decimal?(Decimal.Parse(valueString)) }; } break; case "DateTime": { valueModel = new ValueImportModel <DateTime?>(entity) { Value = string.IsNullOrEmpty(valueString) ? null : new DateTime?(DateTime.Parse(valueString)) }; } break; case "Hyperlink": { string valueReference; if (string.IsNullOrEmpty(valueString)) { valueReference = valueString; } else if (!resolveHyperlink) { valueReference = valueString; } else { valueReference = GetFileReference(valueString, valueString); if (valueReference == valueString) { // Maybe it is a page and not a file valueReference = GetTabReference(valueString, valueString); } } valueModel = new ValueImportModel <string>(entity) { Value = valueReference }; } break; case "Entity": { valueModel = new ValueImportModel <List <Guid> >(entity) { Value = string.IsNullOrEmpty(valueString) ? new List <Guid>() : valueString.Split(',').Select(Guid.Parse).ToList() }; } break; default: { // String valueModel = new ValueImportModel <string>(entity) { Value = HttpUtility.HtmlDecode(valueString) }; } break; } valueModel.AppendLanguageReference(valueLanguage, valueRedOnly); return(valueModel); }
// Todo / warning: highly duplicate code with ValueImportModel.cs // but can't quickly refactor, because it's still a bit different private static IValueImportModel GetValueModel(Import.ImportEntity importEntity, string valueString, string valueType, string valueLanguage = null, bool valueRedOnly = false, bool resolveHyperlink = false) { IValueImportModel valueModel; var valueConverter = Factory.Container.Resolve<IEavValueConverter>(); var type = AttributeTypeEnum.Undefined; if (valueType != null && Enum.IsDefined(typeof(AttributeTypeEnum), valueType)) type = (AttributeTypeEnum)Enum.Parse(typeof(AttributeTypeEnum), valueType); switch (type) { case AttributeTypeEnum.Boolean: { valueModel = new ValueImportModel<bool?>(importEntity) { Value = string.IsNullOrEmpty(valueString) ? null : new Boolean?(Boolean.Parse(valueString)) }; } break; case AttributeTypeEnum.Number: { valueModel = new ValueImportModel<decimal?>(importEntity) { Value = string.IsNullOrEmpty(valueString) ? null : new Decimal?(Decimal.Parse(valueString)) }; } break; case AttributeTypeEnum.DateTime: { valueModel = new ValueImportModel<DateTime?>(importEntity) { Value = string.IsNullOrEmpty(valueString) ? null : new DateTime?(DateTime.Parse(valueString.Replace("T", " ").Replace("Z", " "))) }; } break; case AttributeTypeEnum.Hyperlink: { string valueReference; if (string.IsNullOrEmpty(valueString) || !resolveHyperlink) valueReference = valueString; else { valueReference = valueConverter.Convert(ConversionScenario.ConvertFriendlyToData, valueType, valueString); } valueModel = new ValueImportModel<string>(importEntity) { Value = valueReference }; } break; case AttributeTypeEnum.Entity: { // trying to re-use existing code valueModel = ValueImportModel.GenerateLightValueImportModel(valueString, valueType, importEntity); //valueModel = new ValueImportModel<List<Guid>>(importEntity) //{ // Value = string.IsNullOrEmpty(valueString) // ? new List<Guid?>() // : valueString.Split(',').Select(Guid.Parse).ToList() //}; } break; case AttributeTypeEnum.String: case AttributeTypeEnum.Custom: default: { // String valueModel = new ValueImportModel<string>(importEntity) { Value = valueString }; } break; } if (valueLanguage != null) { valueModel.AppendLanguageReference(valueLanguage, valueRedOnly); } return valueModel; }