Example #1
0
        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));
            }
        }
Example #2
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 = 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;
            }
        }
Example #3
0
        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;
            }
        }
Example #4
0
        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));;
        }
Example #5
0
        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));;
        }