private JProperty ParseValue(MixDatabaseDataValues.UpdateViewModel item) { switch (item.DataType) { case MixDataType.DateTime: return(new JProperty(item.MixDatabaseColumnName, item.DateTimeValue)); case MixDataType.Date: return(new JProperty(item.MixDatabaseColumnName, item.DateTimeValue)); case MixDataType.Time: return(new JProperty(item.MixDatabaseColumnName, item.DateTimeValue)); case MixDataType.Double: return(new JProperty(item.MixDatabaseColumnName, item.DoubleValue)); case MixDataType.Boolean: return(new JProperty(item.MixDatabaseColumnName, item.BooleanValue)); case MixDataType.Integer: return(new JProperty(item.MixDatabaseColumnName, item.IntegerValue)); case MixDataType.Reference: //string url = $"/api/v1/odata/en-us/related-attribute-set-data/mobile/parent/set/{Id}/{item.Field.ReferenceId}"; return(new JProperty(item.MixDatabaseColumnName, new JArray())); case MixDataType.Custom: case MixDataType.Duration: case MixDataType.PhoneNumber: case MixDataType.Text: case MixDataType.Html: case MixDataType.MultilineText: case MixDataType.EmailAddress: case MixDataType.Password: case MixDataType.Url: case MixDataType.ImageUrl: case MixDataType.CreditCard: case MixDataType.PostalCode: case MixDataType.Upload: case MixDataType.Color: case MixDataType.Icon: case MixDataType.VideoYoutube: case MixDataType.TuiEditor: default: return(new JProperty(item.MixDatabaseColumnName, item.StringValue)); } }
public override void ExpandView(MixCmsContext _context = null, IDbContextTransaction _transaction = null) { if (string.IsNullOrEmpty(Id)) { Status = Status == default ? MixService.GetEnumConfig <MixContentStatus>(MixAppSettingKeywords.DefaultContentStatus) : Status; } // Related Datas DataNavs = MixDatabaseDataAssociations.UpdateViewModel.Repository.GetModelListBy( n => n.ParentId == Id && n.ParentType == MixDatabaseParentType.Set && n.Specificulture == Specificulture, _context, _transaction).Data; Values = MixDatabaseDataValues.UpdateViewModel .Repository.GetModelListBy(a => a.DataId == Id && a.Specificulture == Specificulture, _context, _transaction).Data.OrderBy(a => a.Priority).ToList(); Fields = MixDatabaseColumns.UpdateViewModel.Repository.GetModelListBy(f => (f.MixDatabaseId == MixDatabaseId || f.MixDatabaseName == MixDatabaseName), _context, _transaction).Data; foreach (var field in Fields.OrderBy(f => f.Priority)) { var val = Values.FirstOrDefault(v => v.MixDatabaseColumnId == field.Id); if (val == null) { val = new MixDatabaseDataValues.UpdateViewModel( new MixDatabaseDataValue() { MixDatabaseColumnId = field.Id } , _context, _transaction) { Field = field, MixDatabaseColumnName = field.Name, StringValue = field.DefaultValue, Priority = field.Priority }; Values.Add(val); } val.CreatedBy = CreatedBy; val.ModifiedBy = ModifiedBy; val.MixDatabaseName = MixDatabaseName; val.Priority = field.Priority; val.Field = field; val.DataType = val.Field.DataType; val.MixDatabaseColumnName = val.MixDatabaseColumnName ?? val.Field?.Name; } }
private void ParseModelValue(JToken property, MixDatabaseDataValues.UpdateViewModel item) { switch (item.Column.DataType) { case MixDataType.DateTime: item.DateTimeValue = property.Value <DateTime?>(); item.StringValue = property.Value <string>(); break; case MixDataType.Date: item.DateTimeValue = property.Value <DateTime?>(); item.StringValue = property.Value <string>(); break; case MixDataType.Time: item.DateTimeValue = property.Value <DateTime?>(); item.StringValue = property.Value <string>(); break; case MixDataType.Double: item.DoubleValue = property.Value <double?>(); item.StringValue = property.Value <string>(); break; case MixDataType.Boolean: item.BooleanValue = property.Value <bool?>(); item.StringValue = property.Value <string>().ToLower(); break; case MixDataType.Integer: item.IntegerValue = property.Value <int?>(); item.StringValue = property.Value <string>(); break; case MixDataType.Reference: item.StringValue = property.Value <string>(); break; case MixDataType.Upload: string mediaData = property.Value <string>(); if (mediaData.IsBase64()) { Lib.ViewModels.MixMedias.UpdateViewModel media = new Lib.ViewModels.MixMedias.UpdateViewModel() { Specificulture = Specificulture, Status = MixContentStatus.Published, MediaFile = new FileViewModel() { FileStream = mediaData, Extension = ".png", Filename = Guid.NewGuid().ToString(), FileFolder = "Attributes" } }; var saveMedia = media.SaveModel(true); if (saveMedia.IsSucceed) { item.StringValue = saveMedia.Data.FullPath; } } else { item.StringValue = mediaData; } break; case MixDataType.Custom: case MixDataType.Duration: case MixDataType.PhoneNumber: case MixDataType.Text: case MixDataType.Html: case MixDataType.MultilineText: case MixDataType.EmailAddress: case MixDataType.Password: case MixDataType.Url: case MixDataType.ImageUrl: case MixDataType.CreditCard: case MixDataType.PostalCode: case MixDataType.Color: case MixDataType.Icon: case MixDataType.VideoYoutube: case MixDataType.TuiEditor: default: item.StringValue = property.Value <string>(); break; } }
public override MixDatabaseData ParseModel(MixCmsContext _context = null, IDbContextTransaction _transaction = null) { if (string.IsNullOrEmpty(Id)) { Id = Guid.NewGuid().ToString(); CreatedDateTime = DateTime.UtcNow; Priority = Repository.Count(m => m.MixDatabaseName == MixDatabaseName && m.Specificulture == Specificulture, _context, _transaction).Data + 1; } if (string.IsNullOrEmpty(MixDatabaseName)) { MixDatabaseName = _context.MixDatabase.First(m => m.Id == MixDatabaseId)?.Name; } if (MixDatabaseId == 0) { MixDatabaseId = _context.MixDatabase.First(m => m.Name == MixDatabaseName)?.Id ?? 0; } Values ??= MixDatabaseDataValues.UpdateViewModel .Repository.GetModelListBy(a => a.DataId == Id && a.Specificulture == Specificulture , _context, _transaction) .Data.OrderBy(a => a.Priority).ToList(); Columns ??= MixDatabaseColumns.UpdateViewModel.Repository.GetModelListBy( f => f.MixDatabaseId == MixDatabaseId, _context, _transaction).Data; foreach (var field in Columns.OrderBy(f => f.Priority)) { var val = Values.FirstOrDefault(v => v.MixDatabaseColumnId == field.Id); if (val == null) { val = new MixDatabaseDataValues.UpdateViewModel( new MixDatabaseDataValue() { MixDatabaseColumnId = field.Id, MixDatabaseColumnName = field.Name, } , _context, _transaction) { StringValue = field.DefaultValue, Priority = field.Priority, Column = field }; Values.Add(val); } else { val.LastModified = DateTime.UtcNow; } val.CreatedBy = CreatedBy; val.Status = Status; val.Priority = field.Priority; val.MixDatabaseName = MixDatabaseName; if (Obj[val.MixDatabaseColumnName] != null) { if (val.Column.DataType == MixDataType.Reference) { var arr = Obj[val.MixDatabaseColumnName].Value <JArray>(); if (arr != null) { foreach (JObject objData in arr) { string id = objData["id"]?.Value <string>(); // if have id => update data, else add new if (!string.IsNullOrEmpty(id)) { var getData = Repository.GetSingleModel( m => m.Id == id && m.Specificulture == Specificulture, _context, _transaction); if (getData.IsSucceed) { getData.Data.Obj = objData["obj"].Value <JObject>(); RefData.Add(getData.Data); } } else { RefData.Add(new ImportViewModel() { Specificulture = Specificulture, MixDatabaseId = field.ReferenceId.Value, Obj = objData["obj"].Value <JObject>() }); } } } } else { val.ToModelValue(Obj[val.MixDatabaseColumnName], _context, _transaction); } } else { Obj.Add(val.Model.ToJProperty(_context, _transaction)); } } return(base.ParseModel(_context, _transaction));; }
public override MixDatabaseData ParseModel(MixCmsContext _context = null, IDbContextTransaction _transaction = null) { if (string.IsNullOrEmpty(Id)) { Id = Guid.NewGuid().ToString(); CreatedDateTime = DateTime.UtcNow; Priority = Repository.Count(m => m.MixDatabaseName == MixDatabaseName && m.Specificulture == Specificulture, _context, _transaction).Data + 1; } Values = Values ?? MixDatabaseDataValues.UpdateViewModel .Repository.GetModelListBy(a => a.DataId == Id && a.Specificulture == Specificulture, _context, _transaction).Data.OrderBy(a => a.Priority).ToList(); Fields = MixDatabaseColumns.UpdateViewModel.Repository.GetModelListBy(f => f.MixDatabaseId == MixDatabaseId, _context, _transaction).Data; if (string.IsNullOrEmpty(MixDatabaseName)) { MixDatabaseName = _context.MixDatabase.First(m => m.Id == MixDatabaseId)?.Name; } foreach (var field in Fields.OrderBy(f => f.Priority)) { var val = Values.FirstOrDefault(v => v.MixDatabaseColumnId == field.Id); if (val == null) { val = new MixDatabaseDataValues.UpdateViewModel( new MixDatabaseDataValue() { MixDatabaseColumnId = field.Id, MixDatabaseColumnName = field.Name, } , _context, _transaction) { StringValue = field.DefaultValue, Priority = field.Priority, Column = field }; Values.Add(val); } val.Priority = field.Priority; val.MixDatabaseName = MixDatabaseName; if (Data[val.MixDatabaseColumnName] != null) { if (val.Column.DataType == MixDataType.Reference) { var arr = Data[val.MixDatabaseColumnName].Value <JArray>(); foreach (JObject objData in arr) { string id = objData["id"]?.Value <string>(); // if have id => update data, else add new if (!string.IsNullOrEmpty(id)) { //var getData = Repository.GetSingleModel(m => m.Id == id && m.Specificulture == Specificulture, _context, _transaction); //if (getData.IsSucceed) //{ // getData.Data.Data = objData; // RefData.Add(getData.Data); //} } else { RefData.Add(new UpdateViewModel() { Specificulture = Specificulture, MixDatabaseId = field.ReferenceId.Value, Data = objData }); } } } else { ParseModelValue(Data[val.MixDatabaseColumnName], val); } } else { Data.Add(ParseValue(val)); } } return(base.ParseModel(_context, _transaction));; }