public override MixAttributeSetData ParseModel(MixCmsContext _context = null, IDbContextTransaction _transaction = null)
        {
            if (string.IsNullOrEmpty(Id))
            {
                Id = Guid.NewGuid().ToString();
                CreatedDateTime = DateTime.UtcNow;
            }
            Fields = Fields ?? new List <Lib.ViewModels.MixAttributeFields.UpdateViewModel>();
            Values = new List <MixAttributeSetValues.ImportViewModel>();
            foreach (var field in Fields)
            {
                var val = new MixAttributeSetValues.ImportViewModel()
                {
                    AttributeFieldId   = field.Id,
                    AttributeFieldName = field.Name,
                    StringValue        = field.DefaultValue,
                    Priority           = field.Priority,
                    Field = field
                };

                val.Priority         = field.Priority;
                val.DataType         = field.DataType;
                val.AttributeSetName = field.AttributeSetName;
                if (Data[val.AttributeFieldName] != null)
                {
                    if (val.Field.DataType != MixEnums.MixDataType.Reference)
                    {
                        ParseModelValue(Data[val.AttributeFieldName], val);
                    }
                }
                Values.Add(val);
            }

            return(base.ParseModel(_context, _transaction));
        }
        private JProperty ParseValue(MixAttributeSetValues.ImportViewModel item)
        {
            switch (item.DataType)
            {
            case MixEnums.MixDataType.DateTime:
                return(new JProperty(item.AttributeFieldName, item.DateTimeValue));

            case MixEnums.MixDataType.Date:
                return(new JProperty(item.AttributeFieldName, item.DateTimeValue));

            case MixEnums.MixDataType.Time:
                return(new JProperty(item.AttributeFieldName, item.DateTimeValue));

            case MixEnums.MixDataType.Double:
                return(new JProperty(item.AttributeFieldName, item.DoubleValue));

            case MixEnums.MixDataType.Boolean:
                return(new JProperty(item.AttributeFieldName, item.BooleanValue));

            case MixEnums.MixDataType.Integer:
                return(new JProperty(item.AttributeFieldName, item.IntegerValue));

            case MixEnums.MixDataType.Reference:
                //string url = $"/api/v1/odata/en-us/related-attribute-set-data/mobile/parent/set/{Id}/{item.Field.ReferenceId}";
                return(new JProperty(item.AttributeFieldName, new JArray()));

            case MixEnums.MixDataType.Custom:
            case MixEnums.MixDataType.Duration:
            case MixEnums.MixDataType.PhoneNumber:
            case MixEnums.MixDataType.Text:
            case MixEnums.MixDataType.Html:
            case MixEnums.MixDataType.MultilineText:
            case MixEnums.MixDataType.EmailAddress:
            case MixEnums.MixDataType.Password:
            case MixEnums.MixDataType.Url:
            case MixEnums.MixDataType.ImageUrl:
            case MixEnums.MixDataType.CreditCard:
            case MixEnums.MixDataType.PostalCode:
            case MixEnums.MixDataType.Upload:
            case MixEnums.MixDataType.Color:
            case MixEnums.MixDataType.Icon:
            case MixEnums.MixDataType.VideoYoutube:
            case MixEnums.MixDataType.TuiEditor:
            default:
                return(new JProperty(item.AttributeFieldName, item.StringValue));
            }
        }
示例#3
0
        private void ParseModelValue(JToken property, MixAttributeSetValues.ImportViewModel item)
        {
            switch (item.Field.DataType)
            {
            case MixEnums.MixDataType.DateTime:
                item.DateTimeValue = property.Value <DateTime?>();
                item.StringValue   = property.Value <string>();
                break;

            case MixEnums.MixDataType.Date:
                item.DateTimeValue = property.Value <DateTime?>();
                item.StringValue   = property.Value <string>();
                break;

            case MixEnums.MixDataType.Time:
                item.DateTimeValue = property.Value <DateTime?>();
                item.StringValue   = property.Value <string>();
                break;

            case MixEnums.MixDataType.Double:
                item.DoubleValue = property.Value <double?>();
                item.StringValue = property.Value <string>();
                break;

            case MixEnums.MixDataType.Boolean:
                item.BooleanValue = property.Value <bool?>();
                item.StringValue  = property.Value <string>().ToLower();
                break;

            case MixEnums.MixDataType.Number:
                item.IntegerValue = property.Value <int?>();
                item.StringValue  = property.Value <string>();
                break;

            case MixEnums.MixDataType.Reference:
                item.StringValue = property.Value <string>();
                break;

            case MixEnums.MixDataType.Upload:
                item.StringValue = property.Value <string>();
                break;

            case MixEnums.MixDataType.Custom:
            case MixEnums.MixDataType.Duration:
            case MixEnums.MixDataType.PhoneNumber:
            case MixEnums.MixDataType.Text:
            case MixEnums.MixDataType.Html:
            case MixEnums.MixDataType.MultilineText:
            case MixEnums.MixDataType.EmailAddress:
            case MixEnums.MixDataType.Password:
            case MixEnums.MixDataType.Url:
            case MixEnums.MixDataType.ImageUrl:
            case MixEnums.MixDataType.CreditCard:
            case MixEnums.MixDataType.PostalCode:
            case MixEnums.MixDataType.Color:
            case MixEnums.MixDataType.Icon:
            case MixEnums.MixDataType.VideoYoutube:
            case MixEnums.MixDataType.TuiEditor:
            default:
                item.StringValue = property.Value <string>();
                break;
            }
        }
        private void ParseModelValue(JToken property, MixAttributeSetValues.ImportViewModel item)
        {
            switch (item.Field.DataType)
            {
            case MixEnums.MixDataType.DateTime:
                item.DateTimeValue = property.Value <DateTime?>();
                item.StringValue   = property.Value <string>();
                break;

            case MixEnums.MixDataType.Date:
                item.DateTimeValue = property.Value <DateTime?>();
                item.StringValue   = property.Value <string>();
                break;

            case MixEnums.MixDataType.Time:
                item.DateTimeValue = property.Value <DateTime?>();
                item.StringValue   = property.Value <string>();
                break;

            case MixEnums.MixDataType.Double:
                item.DoubleValue = property.Value <double?>();
                item.StringValue = property.Value <string>();
                break;

            case MixEnums.MixDataType.Boolean:
                item.BooleanValue = property.Value <bool?>();
                item.StringValue  = property.Value <string>()?.ToLower();
                break;

            case MixEnums.MixDataType.Integer:
                item.IntegerValue = property.Value <int?>();
                item.StringValue  = property.Value <string>();
                break;

            case MixEnums.MixDataType.Reference:
                item.StringValue = property.Value <string>();
                break;

            case MixEnums.MixDataType.Upload:
                string mediaData = property.Value <string>();
                if (mediaData.IsBase64())
                {
                    Lib.ViewModels.MixMedias.UpdateViewModel media = new Lib.ViewModels.MixMedias.UpdateViewModel()
                    {
                        Specificulture = Specificulture,
                        Status         = MixEnums.MixContentStatus.Published,
                        MediaFile      = new Lib.ViewModels.FileViewModel()
                        {
                            FileStream = mediaData,
                            Extension  = ".png",
                            Filename   = Guid.NewGuid().ToString(),
                            FileFolder = "Attributes"
                        }
                    };
                    var saveMedia = media.SaveModel(true);
                    if (saveMedia.IsSucceed)
                    {
                        item.StringValue = saveMedia.Data.FullPath;
                        Data[item.AttributeFieldName] = item.StringValue;
                    }
                }
                else
                {
                    item.StringValue = mediaData;
                }
                break;

            case MixEnums.MixDataType.Custom:
            case MixEnums.MixDataType.Duration:
            case MixEnums.MixDataType.PhoneNumber:
            case MixEnums.MixDataType.Text:
            case MixEnums.MixDataType.Html:
            case MixEnums.MixDataType.MultilineText:
            case MixEnums.MixDataType.EmailAddress:
            case MixEnums.MixDataType.Password:
            case MixEnums.MixDataType.Url:
            case MixEnums.MixDataType.ImageUrl:
            case MixEnums.MixDataType.CreditCard:
            case MixEnums.MixDataType.PostalCode:
            case MixEnums.MixDataType.Color:
            case MixEnums.MixDataType.Icon:
            case MixEnums.MixDataType.VideoYoutube:
            case MixEnums.MixDataType.TuiEditor:
            default:
                item.StringValue = property.Value <string>();
                break;
            }
        }