public override void ExpandView(MixCmsContext _context = null, IDbContextTransaction _transaction = null) { Values = MixAttributeSetValues.UpdateViewModel .Repository.GetModelListBy(a => a.DataId == Id && a.Specificulture == Specificulture, _context, _transaction).Data.OrderBy(a => a.Priority).ToList(); Fields = MixAttributeFields.UpdateViewModel.Repository.GetModelListBy(f => f.AttributeSetId == AttributeSetId, _context, _transaction).Data; if (Values.Count == 0) { foreach (var field in Fields) { var val = new MixAttributeSetValues.UpdateViewModel( new MixAttributeSetValue() { AttributeFieldId = field.Id } , _context, _transaction); val.Field = field; val.AttributeName = field.Name; val.Priority = field.Priority; Values.Add(val); } } else { foreach (var val in Values) { val.Field = Fields.FirstOrDefault(f => f.Id == val.AttributeFieldId); val.Priority = val.Field.Priority; } } }
public override void ExpandView(MixCmsContext _context = null, IDbContextTransaction _transaction = null) { // Related Datas //DataNavs = MixRelatedAttributeDatas.UpdateViewModel.Repository.GetModelListBy( // n => n.ParentId == Id && n.ParentType == (int)MixEnums.MixAttributeSetDataType.Set && n.Specificulture == Specificulture, // _context, _transaction).Data; Values = MixAttributeSetValues.UpdateViewModel .Repository.GetModelListBy(a => a.DataId == Id && a.Specificulture == Specificulture, _context, _transaction).Data.OrderBy(a => a.Priority).ToList(); Fields = MixAttributeFields.UpdateViewModel.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.UpdateViewModel( new MixAttributeSetValue() { AttributeFieldId = field.Id } , _context, _transaction); val.Field = field; val.DataType = field.DataType; val.AttributeFieldName = field.Name; val.AttributeSetName = field.AttributeSetName; val.StringValue = field.DefaultValue; val.Priority = field.Priority; Values.Add(val); } val.DataId = Id; val.Priority = field.Priority; val.Field = field; } }
public override void ExpandView(MixCmsContext _context = null, IDbContextTransaction _transaction = null) { var getValues = MixAttributeSetValues.UpdateViewModel .Repository.GetModelListBy(a => a.DataId == Id && a.Specificulture == Specificulture, _context, _transaction); if (getValues.IsSucceed) { Fields = MixAttributeFields.UpdateViewModel.Repository.GetModelListBy(f => f.AttributeSetId == AttributeSetId, _context, _transaction).Data; Values = getValues.Data.OrderBy(a => a.Priority).ToList(); foreach (var field in Fields.OrderBy(f => f.Priority)) { var val = Values.FirstOrDefault(v => v.AttributeFieldId == field.Id); if (val == null) { val = new MixAttributeSetValues.UpdateViewModel( new MixAttributeSetValue() { AttributeFieldId = field.Id, AttributeFieldName = field.Name, } , _context, _transaction) { Priority = field.Priority }; Values.Add(val); } val.Priority = field.Priority; val.AttributeSetName = AttributeSetName; } ParseData(); } }
private void LoadAttributes(MixCmsContext _context, IDbContextTransaction _transaction) { var getAttrs = MixAttributeSets.UpdateViewModel.Repository.GetSingleModel(m => m.Name == "post", _context, _transaction); if (getAttrs.IsSucceed) { Attributes = getAttrs.Data; AttributeData = MixRelatedAttributeDatas.UpdateViewModel.Repository.GetFirstModel( a => a.ParentId == Id.ToString() && a.Specificulture == Specificulture && a.AttributeSetId == Attributes.Id , _context, _transaction).Data; if (AttributeData == null) { AttributeData = new MixRelatedAttributeDatas.UpdateViewModel( new MixRelatedAttributeData() { Specificulture = Specificulture, ParentType = (int)MixEnums.MixAttributeSetDataType.Post, ParentId = Id.ToString(), AttributeSetId = Attributes.Id, AttributeSetName = Attributes.Name } ) { Data = new MixAttributeSetDatas.UpdateViewModel( new MixAttributeSetData() { Specificulture = Specificulture, AttributeSetId = Attributes.Id, AttributeSetName = Attributes.Name } ) }; } foreach (var field in Attributes.Fields.OrderBy(f => f.Priority)) { var val = AttributeData.Data.Values.FirstOrDefault(v => v.AttributeFieldId == field.Id); if (val == null) { val = new MixAttributeSetValues.UpdateViewModel( new MixAttributeSetValue() { AttributeFieldId = field.Id } , _context, _transaction) { Field = field, AttributeFieldName = field.Name, Priority = field.Priority, StringValue = field.DefaultValue }; AttributeData.Data.Values.Add(val); } val.Priority = field.Priority; val.Field = field; } } }
private JProperty ParseValue(MixAttributeSetValues.UpdateViewModel item, MixCmsContext context, IDbContextTransaction transaction) { 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: var arr = new JArray(); 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)); } }
private JProperty ParseValue(MixAttributeSetValues.UpdateViewModel 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)); } }
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 = MixRelatedAttributeDatas.UpdateViewModel.Repository.GetModelListBy( n => n.ParentId == Id && n.ParentType == MixDatabaseParentType.Set && n.Specificulture == Specificulture, _context, _transaction).Data; Values = MixAttributeSetValues.UpdateViewModel .Repository.GetModelListBy(a => a.DataId == Id && a.Specificulture == Specificulture, _context, _transaction).Data.OrderBy(a => a.Priority).ToList(); Fields = MixAttributeFields.UpdateViewModel.Repository.GetModelListBy(f => (f.AttributeSetId == AttributeSetId || f.AttributeSetName == AttributeSetName), _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.UpdateViewModel( new MixAttributeSetValue() { AttributeFieldId = field.Id } , _context, _transaction) { Field = field, AttributeFieldName = field.Name, StringValue = field.DefaultValue, Priority = field.Priority }; Values.Add(val); } val.CreatedBy = CreatedBy; val.ModifiedBy = ModifiedBy; val.AttributeSetName = AttributeSetName; val.Priority = field.Priority; val.Field = field; val.DataType = val.Field.DataType; val.AttributeFieldName = val.AttributeFieldName ?? val.Field?.Name; } }
//public override List<Task> GenerateRelatedData(MixCmsContext context, IDbContextTransaction transaction) //{ // var tasks = new List<Task>(); // var attrDatas = context.MixAttributeSetData.Where(m => m.MixRelatedAttributeData // .Any(d => d.Specificulture == Specificulture && d.Id == Id)); // foreach (var item in attrDatas) // { // tasks.Add(Task.Run(() => // { // var data = new ReadViewModel(item, context, transaction); // data.RemoveCache(item, context, transaction); // })); // } // foreach (var item in Values) // { // tasks.Add(Task.Run(() => // { // item.RemoveCache(item.Model); // })); // } // return tasks; //} private void ParseData(MixCmsContext _context = null, IDbContextTransaction _transaction = null) { var getValues = MixAttributeSetValues.UpdateViewModel .Repository.GetModelListBy(a => a.DataId == Id && a.Specificulture == Specificulture, _context, _transaction); if (getValues.IsSucceed) { Fields = MixAttributeFields.UpdateViewModel.Repository.GetModelListBy(f => f.AttributeSetId == AttributeSetId, _context, _transaction).Data; Values = getValues.Data.OrderBy(a => a.Priority).ToList(); foreach (var field in Fields.OrderBy(f => f.Priority)) { var val = Values.FirstOrDefault(v => v.AttributeFieldId == field.Id); if (val == null) { val = new MixAttributeSetValues.UpdateViewModel( new MixAttributeSetValue() { AttributeFieldId = field.Id, AttributeFieldName = field.Name, } , _context, _transaction) { }; Values.Add(val); } val.Priority = field.Priority; val.DataType = field.DataType; val.Field = field; val.AttributeSetName = AttributeSetName; } Obj = new JObject( new JProperty("id", Id) ); foreach (var item in Values.OrderBy(v => v.Priority)) { item.AttributeFieldName = item.Field.Name; Obj.Add(ParseValue(item, _context, _transaction)); } } }
private void LoadAttributes(MixCmsContext _context, IDbContextTransaction _transaction) { LoadAttributeData(_context, _transaction); LoadAttributeFields(_context, _transaction); foreach (var field in Attributes.OrderBy(f => f.Priority)) { var val = AttributeData.Data.Values.FirstOrDefault(v => v.AttributeFieldId == field.Id); if (val == null) { val = new MixAttributeSetValues.UpdateViewModel( new MixAttributeSetValue() { AttributeFieldId = field.Id } , _context, _transaction); val.DataType = field.DataType; val.AttributeFieldName = field.Name; val.Priority = field.Priority; AttributeData.Data.Values.Add(val); } val.Priority = field.Priority; val.Field = field; } var getCategories = MixRelatedAttributeDatas.UpdateViewModel.Repository.GetModelListBy(m => m.Specificulture == Specificulture && m.ParentId == Id.ToString() && m.ParentType == MixEnums.MixAttributeSetDataType.Module.ToString() && m.AttributeSetName == MixConstants.AttributeSetName.SYSTEM_CATEGORY, _context, _transaction); if (getCategories.IsSucceed) { SysCategories = getCategories.Data; } var getTags = MixRelatedAttributeDatas.UpdateViewModel.Repository.GetModelListBy(m => m.Specificulture == Specificulture && m.ParentId == Id.ToString() && m.ParentType == MixEnums.MixAttributeSetDataType.Module.ToString() && m.AttributeSetName == MixConstants.AttributeSetName.SYSTEM_TAG, _context, _transaction); if (getTags.IsSucceed) { SysTags = getTags.Data; } }
private void LoadAttributes(MixCmsContext _context, IDbContextTransaction _transaction) { LoadAttributeData(_context, _transaction); LoadAttributeFields(_context, _transaction); foreach (var field in Attributes.OrderBy(f => f.Priority)) { var val = AttributeData.Data.Values.FirstOrDefault(v => v.AttributeFieldId == field.Id); if (val == null) { val = new MixAttributeSetValues.UpdateViewModel( new MixAttributeSetValue() { AttributeFieldId = field.Id } , _context, _transaction); val.DataType = field.DataType; val.AttributeFieldName = field.Name; val.Priority = field.Priority; AttributeData.Data.Values.Add(val); } val.Priority = field.Priority; val.Field = field; } }
private void ParseModelValue(JToken property, MixAttributeSetValues.UpdateViewModel item) { if (item.Field.IsEncrypt) { var obj = property.Value <JObject>(); item.StringValue = obj.ToString(Formatting.None); item.EncryptValue = obj["data"]?.ToString(); item.EncryptKey = obj["key"]?.ToString(); } else { 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()) { MixMedias.UpdateViewModel media = new MixMedias.UpdateViewModel() { Specificulture = Specificulture, Status = MixEnums.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; Obj[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; } } }
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; } if (string.IsNullOrEmpty(AttributeSetName)) { AttributeSetName = _context.MixAttributeSet.First(m => m.Id == AttributeSetId)?.Name; } if (AttributeSetId == 0) { AttributeSetId = _context.MixAttributeSet.First(m => m.Name == AttributeSetName)?.Id ?? 0; } Values = Values ?? MixAttributeSetValues.UpdateViewModel .Repository.GetModelListBy(a => a.DataId == Id && a.Specificulture == Specificulture, _context, _transaction).Data.OrderBy(a => a.Priority).ToList(); Fields = MixAttributeFields.UpdateViewModel.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.UpdateViewModel( new MixAttributeSetValue() { AttributeFieldId = field.Id, AttributeFieldName = field.Name, } , _context, _transaction) { StringValue = field.DefaultValue, Priority = field.Priority, Field = field }; Values.Add(val); } val.Priority = field.Priority; val.AttributeSetName = AttributeSetName; if (Obj[val.AttributeFieldName] != null) { if (val.Field.DataType == MixEnums.MixDataType.Reference) { var arr = Obj[val.AttributeFieldName].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 FormPortalViewModel() { Specificulture = Specificulture, AttributeSetId = field.ReferenceId.Value, Obj = objData["obj"].Value <JObject>() }); } } } } else { ParseModelValue(Obj[val.AttributeFieldName], val); } } else { Obj.Add(ParseValue(val, _context, _transaction)); } } // Save Edm html var getAttrSet = Mix.Cms.Lib.ViewModels.MixAttributeSets.ReadViewModel.Repository.GetSingleModel(m => m.Name == AttributeSetName, _context, _transaction); var getEdm = Lib.ViewModels.MixTemplates.UpdateViewModel.GetTemplateByPath(getAttrSet.Data.EdmTemplate, Specificulture); var edmField = Values.FirstOrDefault(f => f.AttributeFieldName == "edm"); if (edmField != null && getEdm.IsSucceed && !string.IsNullOrEmpty(getEdm.Data.Content)) { string body = getEdm.Data.Content; foreach (var prop in Obj.Properties()) { body = body.Replace($"[[{prop.Name}]]", Obj[prop.Name].Value <string>()); } var edmFile = new FileViewModel() { Content = body, Extension = ".html", FileFolder = "edms", Filename = $"{getAttrSet.Data.EdmSubject}-{Id}" }; if (FileRepository.Instance.SaveWebFile(edmFile)) { Obj["edm"] = edmFile.WebPath; edmField.StringValue = edmFile.WebPath; } } //End save edm return(base.ParseModel(_context, _transaction));; }
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.UpdateViewModel .Repository.GetModelListBy(a => a.DataId == Id && a.Specificulture == Specificulture, _context, _transaction).Data.OrderBy(a => a.Priority).ToList(); Fields = MixAttributeFields.UpdateViewModel.Repository.GetModelListBy(f => f.AttributeSetId == AttributeSetId, _context, _transaction).Data; if (string.IsNullOrEmpty(AttributeSetName)) { AttributeSetName = _context.MixAttributeSet.First(m => m.Id == AttributeSetId)?.Name; } foreach (var field in Fields.OrderBy(f => f.Priority)) { var val = Values.FirstOrDefault(v => v.AttributeFieldId == field.Id); if (val == null) { val = new MixAttributeSetValues.UpdateViewModel( new MixAttributeSetValue() { AttributeFieldId = field.Id, AttributeFieldName = field.Name, } , _context, _transaction) { StringValue = field.DefaultValue, Priority = field.Priority, Field = field }; Values.Add(val); } val.Priority = field.Priority; val.AttributeSetName = AttributeSetName; if (Data[val.AttributeFieldName] != null) { if (val.Field.DataType == MixDataType.Reference) { var arr = Data[val.AttributeFieldName].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, AttributeSetId = field.ReferenceId.Value, Data = objData }); } } } else { ParseModelValue(Data[val.AttributeFieldName], val); } } else { Data.Add(ParseValue(val)); } } return(base.ParseModel(_context, _transaction));; }
private void LoadAttributes(MixCmsContext _context, IDbContextTransaction _transaction) { var getAttrs = MixAttributeSets.UpdateViewModel.Repository.GetSingleModel(m => m.Name == MixConstants.AttributeSetName.ADDITIONAL_FIELD_PAGE , _context, _transaction); if (getAttrs.IsSucceed) { Attributes = getAttrs.Data; AttributeData = MixRelatedAttributeDatas.UpdateViewModel.Repository.GetFirstModel( a => a.ParentId == Id.ToString() && a.Specificulture == Specificulture && a.AttributeSetId == Attributes.Id , _context, _transaction).Data; if (AttributeData == null) { AttributeData = new MixRelatedAttributeDatas.UpdateViewModel( new MixRelatedAttributeData() { Specificulture = Specificulture, ParentType = (int)MixEnums.MixAttributeSetDataType.Page, ParentId = Id.ToString(), AttributeSetId = Attributes.Id, AttributeSetName = Attributes.Name } ) { Data = new MixAttributeSetDatas.UpdateViewModel( new MixAttributeSetData() { Specificulture = Specificulture, AttributeSetId = Attributes.Id, AttributeSetName = Attributes.Name } ) }; } foreach (var field in Attributes.Fields.OrderBy(f => f.Priority)) { var val = AttributeData.Data.Values.FirstOrDefault(v => v.AttributeFieldId == field.Id); if (val == null) { val = new MixAttributeSetValues.UpdateViewModel( new MixAttributeSetValue() { AttributeFieldId = field.Id } , _context, _transaction) { Field = field, AttributeFieldName = field.Name, Priority = field.Priority }; AttributeData.Data.Values.Add(val); } val.Priority = field.Priority; val.Field = field; } var getCategories = MixRelatedAttributeDatas.UpdateViewModel.Repository.GetModelListBy(m => m.Specificulture == Specificulture && m.ParentId == Id.ToString() && m.ParentType == (int)MixEnums.MixAttributeSetDataType.Page && m.AttributeSetName == MixConstants.AttributeSetName.SYSTEM_CATEGORY, _context, _transaction); if (getCategories.IsSucceed) { SysCategories = getCategories.Data; } var getTags = MixRelatedAttributeDatas.UpdateViewModel.Repository.GetModelListBy(m => m.Specificulture == Specificulture && m.ParentId == Id.ToString() && m.ParentType == (int)MixEnums.MixAttributeSetDataType.Page && m.AttributeSetName == MixConstants.AttributeSetName.SYSTEM_TAG, _context, _transaction); if (getTags.IsSucceed) { SysTags = getTags.Data; } } }
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; } if (string.IsNullOrEmpty(AttributeSetName)) { AttributeSetName = _context.MixAttributeSet.First(m => m.Id == AttributeSetId)?.Name; } if (AttributeSetId == 0) { AttributeSetId = _context.MixAttributeSet.First(m => m.Name == AttributeSetName)?.Id ?? 0; } Values ??= MixAttributeSetValues.UpdateViewModel .Repository.GetModelListBy(a => a.DataId == Id && a.Specificulture == Specificulture).Data.OrderBy(a => a.Priority).ToList(); Fields ??= MixAttributeFields.UpdateViewModel.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.UpdateViewModel( new MixAttributeSetValue() { AttributeFieldId = field.Id, AttributeFieldName = field.Name, } , _context, _transaction) { StringValue = field.DefaultValue, Priority = field.Priority, Field = field }; Values.Add(val); } else { val.LastModified = DateTime.UtcNow; } val.Status = Status; val.Priority = field.Priority; val.AttributeSetName = AttributeSetName; if (Obj[val.AttributeFieldName] != null) { if (val.Field.DataType == MixEnums.MixDataType.Reference) { var arr = Obj[val.AttributeFieldName].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, AttributeSetId = field.ReferenceId.Value, Obj = objData["obj"].Value <JObject>() }); } } } } else { val.ToModelValue(Obj[val.AttributeFieldName]); } } else { Obj.Add(val.Model.ToJProperty()); } } return(base.ParseModel(_context, _transaction));; }