Example #1
0
 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;
         }
     }
 }
Example #2
0
        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;
            }
        }
Example #3
0
        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();
            }
        }
Example #4
0
        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;
                }
            }
        }
Example #5
0
        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));
            }
        }
Example #6
0
        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));
            }
        }
Example #7
0
        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;
            }
        }
Example #8
0
        //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));
                }
            }
        }
Example #9
0
        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;
            }
        }
Example #10
0
 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;
     }
 }
Example #11
0
        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;
                }
            }
        }
Example #12
0
        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));;
        }
Example #13
0
        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));;
        }
Example #14
0
        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;
                }
            }
        }
Example #15
0
        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));;
        }