public override void ExpandView(MixCmsContext _context = null, IDbContextTransaction _transaction = null) { Data = new JObject(); Data.Add(new JProperty("id", Id)); Data.Add(new JProperty("details", $"/api/v1/odata/{Specificulture}/attribute-set-data/mobile-full/{Id}")); Values = MixAttributeSetValues.ODataMobileFullViewModel .Repository.GetModelListBy(a => a.DataId == Id && a.Specificulture == Specificulture, _context, _transaction).Data.OrderBy(a => a.Priority).ToList(); Fields = MixAttributeFields.ODataMobileFullViewModel.Repository.GetModelListBy(f => f.AttributeSetId == AttributeSetId, _context, _transaction).Data; foreach (var field in Fields.OrderBy(f => f.Priority)) { var val = Values.FirstOrDefault(v => v.AttributeFieldId == field.Id); if (val == null) { val = new MixAttributeSetValues.ODataMobileFullViewModel( new MixAttributeSetValue() { AttributeFieldId = field.Id } , _context, _transaction); val.Field = field; val.AttributeFieldName = field.Name; val.StringValue = field.DefaultValue; val.Priority = field.Priority; Values.Add(val); } val.AttributeSetName = AttributeSetName; val.Priority = field.Priority; val.Field = field; } ; }
private JProperty ParseValue(MixAttributeSetValues.ODataMobileFullViewModel 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.Number: return(new JProperty(item.AttributeFieldName, item.IntegerValue)); case MixEnums.MixDataType.Reference: JArray arr = new JArray(); foreach (var nav in item.DataNavs) { arr.Add(nav.Data.Data); } return(new JProperty(item.AttributeFieldName, arr)); 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)); } }
public override MixAttributeSetData ParseModel(MixCmsContext _context = null, IDbContextTransaction _transaction = null) { if (string.IsNullOrEmpty(Id)) { Id = Guid.NewGuid().ToString(); CreatedDateTime = DateTime.UtcNow; Priority = Repository.Count(m => m.AttributeSetName == AttributeSetName && m.Specificulture == Specificulture, _context, _transaction).Data + 1; } Values = Values ?? MixAttributeSetValues.ODataMobileFullViewModel .Repository.GetModelListBy(a => a.DataId == Id && a.Specificulture == Specificulture, _context, _transaction).Data.OrderBy(a => a.Priority).ToList(); Fields = MixAttributeFields.ODataMobileFullViewModel.Repository.GetModelListBy(f => f.AttributeSetId == AttributeSetId, _context, _transaction).Data; foreach (var field in Fields.OrderBy(f => f.Priority)) { var val = Values.FirstOrDefault(v => v.AttributeFieldId == field.Id); if (val == null) { val = new MixAttributeSetValues.ODataMobileFullViewModel( new MixAttributeSetValue() { AttributeFieldId = field.Id, AttributeFieldName = field.Name, } , _context, _transaction); val.Priority = field.Priority; Values.Add(val); } val.Priority = field.Priority; val.AttributeSetName = AttributeSetName; if (Data[val.AttributeFieldName] != null) { ParseModelValue(Data[val.AttributeFieldName], val); } else { Data.Add(ParseValue(val)); } } return(base.ParseModel(_context, _transaction));; }
private void ParseModelValue(JToken property, MixAttributeSetValues.ODataMobileFullViewModel item) { switch (item.DataType) { case MixEnums.MixDataType.DateTime: item.DateTimeValue = property.Value <DateTime?>(); break; case MixEnums.MixDataType.Date: item.DateTimeValue = property.Value <DateTime?>(); break; case MixEnums.MixDataType.Time: item.DateTimeValue = property.Value <DateTime?>(); break; case MixEnums.MixDataType.Double: item.DoubleValue = property.Value <double?>(); break; case MixEnums.MixDataType.Boolean: item.BooleanValue = property.Value <bool?>(); break; case MixEnums.MixDataType.Number: item.IntegerValue = property.Value <int?>(); break; case MixEnums.MixDataType.Reference: //string url = $"/api/v1/odata/en-us/related-attribute-set-data/mobile/parent/set/{Id}/{item.Field.ReferenceId}"; //foreach (var nav in item.DataNavs) //{ // arr.Add(nav.Data.Data); //} //return (new JProperty(item.AttributeFieldName, url)); 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.Upload: case MixEnums.MixDataType.Color: case MixEnums.MixDataType.Icon: case MixEnums.MixDataType.VideoYoutube: case MixEnums.MixDataType.TuiEditor: default: item.StringValue = property.Value <string>(); break; } item.StringValue = property.Value <string>(); }