public async Task <ActionResult <RepositoryResponse <UpdateViewModel> > > DetailsAsync(string viewType, int themeId, string folderType, int?id)
        {
            if (id.HasValue)
            {
                Expression <Func <MixTemplate, bool> > predicate = model => model.Id == id;
                var portalResult = await base.GetSingleAsync <UpdateViewModel>($"{viewType}_{themeId}_{folderType}_{id}", predicate);

                return(Ok(JObject.FromObject(portalResult)));
            }
            else
            {
                var getTheme = await Lib.ViewModels.MixThemes.ReadViewModel.Repository.GetSingleModelAsync(t => t.Id == themeId);

                if (getTheme.IsSucceed)
                {
                    var model = new MixTemplate()
                    {
                        Status     = MixService.GetEnumConfig <MixContentStatus>(MixAppSettingKeywords.DefaultContentStatus),
                        ThemeId    = themeId,
                        ThemeName  = getTheme.Data.Name,
                        Extension  = MixService.GetConfig <string>("TemplateExtension"),
                        FolderType = folderType
                    };

                    RepositoryResponse <UpdateViewModel> result = await base.GetSingleAsync <UpdateViewModel>($"{viewType}_default", null, model);

                    return(Ok(JObject.FromObject(result)));
                }
                else
                {
                    return(new RepositoryResponse <Lib.ViewModels.MixTemplates.UpdateViewModel>());
                }
            }
        }
Exemple #2
0
        public async Task <ActionResult <JObject> > Details(string viewType, int?id)
        {
            string msg = string.Empty;

            if (id.HasValue)
            {
                Expression <Func <MixUrlAlias, bool> > predicate = model => model.Id == id;
                var portalResult = await base.GetSingleAsync <UpdateViewModel>($"{viewType}_{id}", predicate);

                return(Ok(JObject.FromObject(portalResult)));
            }
            else
            {
                var model = new MixUrlAlias()
                {
                    Status = MixService.GetEnumConfig <MixEnums.MixContentStatus>(MixAppSettingKeywords.DefaultContentStatus)
                    ,
                    Priority = UpdateViewModel.Repository.Max(a => a.Priority).Data + 1
                };

                RepositoryResponse <UpdateViewModel> result = await base.GetSingleAsync <UpdateViewModel>($"{viewType}_default", null, model);

                return(Ok(JObject.FromObject(result)));
            }
        }
Exemple #3
0
        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            string cnn = MixService.GetConnectionString(MixConstants.CONST_CMS_CONNECTION);

            if (!string.IsNullOrEmpty(cnn))
            {
                var provider = MixService.GetEnumConfig <MixDatabaseProvider>(MixConstants.CONST_SETTING_DATABASE_PROVIDER);
                switch (provider)
                {
                case MixDatabaseProvider.MSSQL:
                    optionsBuilder.UseSqlServer(cnn);
                    break;

                case MixDatabaseProvider.MySQL:
                    optionsBuilder.UseMySql(cnn, ServerVersion.AutoDetect(cnn));
                    break;

                case MixDatabaseProvider.SQLITE:
                    optionsBuilder.UseSqlite(cnn);
                    break;

                case MixDatabaseProvider.PostgreSQL:
                    optionsBuilder.UseNpgsql(cnn);
                    break;

                default:
                    break;
                }
            }
        }
Exemple #4
0
        private static void InitializeRepoDb()
        {
            var provider = MixService.GetEnumConfig <MixDatabaseProvider>(MixConstants.CONST_SETTING_DATABASE_PROVIDER);

            switch (provider)
            {
            case MixDatabaseProvider.MSSQL:
                SqlServerBootstrap.Initialize();
                break;

            case MixDatabaseProvider.MySQL:
                MySqlBootstrap.Initialize();
                break;

            case MixDatabaseProvider.PostgreSQL:
                PostgreSqlBootstrap.Initialize();
                break;

            case MixDatabaseProvider.SQLITE:
                SqLiteBootstrap.Initialize();
                break;

            default:
                SqLiteBootstrap.Initialize();
                break;
            }
        }
Exemple #5
0
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            var    provider = MixService.GetEnumConfig <MixDatabaseProvider>(MixConstants.CONST_SETTING_DATABASE_PROVIDER);
            string ns       = string.Empty;

            switch (provider)
            {
            case MixDatabaseProvider.MSSQL:
                ns = "Mix.Cms.Lib.Models.EntityConfigurations.MSSQL";
                break;

            case MixDatabaseProvider.MySQL:
                ns = "Mix.Cms.Lib.Models.EntityConfigurations.MySQL";
                break;

            case MixDatabaseProvider.SQLITE:
                ns = "Mix.Cms.Lib.Models.EntityConfigurations.SQLITE";
                break;

            case MixDatabaseProvider.PostgreSQL:
                ns = "Mix.Cms.Lib.Models.EntityConfigurations.POSTGRESQL";
                break;

            default:
                break;
            }
            modelBuilder.ApplyAllConfigurationsFromNamespace(this.GetType().Assembly, ns);
            OnModelCreatingPartial(modelBuilder);
        }
Exemple #6
0
        public async Task <ActionResult <JObject> > Details(string viewType, int?pageId, int?postId)
        {
            string msg = string.Empty;

            switch (viewType)
            {
            default:
                if (pageId.HasValue && postId.HasValue)
                {
                    Expression <Func <MixPagePost, bool> > predicate = model => model.PageId == pageId && model.PostId == postId && model.Specificulture == _lang;
                    var portalResult = await base.GetSingleAsync <ReadViewModel>($"{viewType}_{pageId}_{postId}", predicate);

                    return(Ok(JObject.FromObject(portalResult)));
                }
                else
                {
                    var model = new MixPagePost()
                    {
                        Specificulture = _lang,
                        Status         = MixService.GetEnumConfig <MixContentStatus>(MixAppSettingKeywords.DefaultContentStatus),
                        Priority       = ReadViewModel.Repository.Max(a => a.Priority).Data + 1
                    };

                    RepositoryResponse <ReadViewModel> result = await base.GetSingleAsync <ReadViewModel>($"{viewType}_default", null, model);

                    return(Ok(JObject.FromObject(result)));
                }
            }
        }
        public async Task <ActionResult <JObject> > Details(string viewType, int?id)
        {
            string msg = string.Empty;

            switch (viewType)
            {
            case "portal":
                if (id.HasValue)
                {
                    Expression <Func <MixTheme, bool> > predicate = model => model.Id == id;
                    var portalResult = await base.GetSingleAsync <UpdateViewModel>($"{viewType}_{id}", predicate);

                    if (portalResult.IsSucceed)
                    {
                        portalResult.Data.IsActived = MixService.GetConfig <int>(MixAppSettingKeywords.ThemeId, _lang) == portalResult.Data.Id;
                    }
                    return(Ok(JObject.FromObject(portalResult)));
                }
                else
                {
                    var model = new MixTheme()
                    {
                        Status = Enum.Parse <MixEnums.MixContentStatus>(MixService.GetConfig <string>(MixAppSettingKeywords.DefaultContentStatus))
                        ,
                        Priority = UpdateViewModel.Repository.Max(a => a.Priority).Data + 1
                    };

                    RepositoryResponse <UpdateViewModel> result = await base.GetSingleAsync <UpdateViewModel>($"{viewType}_default", null, model);

                    return(Ok(JObject.FromObject(result)));
                }

            default:
                if (id.HasValue)
                {
                    Expression <Func <MixTheme, bool> > predicate = model => model.Id == id;
                    var result = await base.GetSingleAsync <ReadViewModel>($"{viewType}_{id}", predicate);

                    if (result.IsSucceed)
                    {
                        result.Data.IsActived = MixService.GetConfig <int>(MixAppSettingKeywords.ThemeId, _lang) == result.Data.Id;
                    }
                    return(Ok(JObject.FromObject(result)));
                }
                else
                {
                    var model = new MixTheme()
                    {
                        Status = MixService.GetEnumConfig <MixEnums.MixContentStatus>(MixAppSettingKeywords.DefaultContentStatus)
                        ,
                        Priority = ReadViewModel.Repository.Max(a => a.Priority).Data + 1
                    };

                    RepositoryResponse <ReadViewModel> result = await base.GetSingleAsync <ReadViewModel>($"{viewType}_default", null, model);

                    return(Ok(JObject.FromObject(result)));
                }
            }
        }
        public async Task <ActionResult <JObject> > Details(string viewType, int?id)
        {
            string msg = string.Empty;

            switch (viewType)
            {
            case "portal":
                if (id.HasValue)
                {
                    Expression <Func <MixModule, bool> > predicate = model => model.Id == id && model.Specificulture == _lang;
                    var portalResult = await base.GetSingleAsync <UpdateViewModel>($"{viewType}_{id}", predicate);

                    return(Ok(JObject.FromObject(portalResult)));
                }
                else
                {
                    var model = new MixModule()
                    {
                        Specificulture = _lang,
                        Status         = MixService.GetEnumConfig <MixContentStatus>(MixAppSettingKeywords.DefaultContentStatus),
                        Priority       = UpdateViewModel.Repository.Max(a => a.Priority).Data + 1
                    };

                    RepositoryResponse <UpdateViewModel> result = await base.GetSingleAsync <UpdateViewModel>($"{viewType}_default", null, model);

                    return(Ok(JObject.FromObject(result)));
                }

            default:
                if (id.HasValue)
                {
                    var beResult = await ReadMvcViewModel.Repository.GetSingleModelAsync(model => model.Id == id && model.Specificulture == _lang).ConfigureAwait(false);

                    if (beResult.IsSucceed)
                    {
                        beResult.Data.LoadData();
                    }
                    return(Ok(JObject.FromObject(beResult)));
                }
                else
                {
                    var model = new MixModule();
                    RepositoryResponse <ReadMvcViewModel> result = new RepositoryResponse <ReadMvcViewModel>()
                    {
                        IsSucceed = true,
                        Data      = new ReadMvcViewModel(model)
                        {
                            Specificulture = _lang,
                            Status         = MixContentStatus.Preview,
                        }
                    };

                    return(Ok(JObject.FromObject(result)));
                }
            }
        }
Exemple #9
0
        /*** Methods ***/

        public IDbConnection CreateConnection()
        {
            var    provider       = MixService.GetEnumConfig <MixDatabaseProvider>(MixConstants.CONST_SETTING_DATABASE_PROVIDER);
            var    connectionType = GetDbConnectionType(provider);
            var    connection     = Activator.CreateInstance(connectionType) as IDbConnection;
            string cnn            = MixService.GetConnectionString(MixConstants.CONST_CMS_CONNECTION);

            connection.ConnectionString = cnn;
            return(connection);
        }
Exemple #10
0
        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            if (!optionsBuilder.IsConfigured)
            {
                //define the database to use
                //string cnn = "Data Source=mix-messenger.db";
                //optionsBuilder.UseSqlite(cnn);
                ;
                // IConfiguration configuration = new ConfigurationBuilder()
                //.SetBasePath(System.IO.Directory.GetCurrentDirectory())
                //.AddJsonFile(Common.Utility.Const.CONST_FILE_APPSETTING)
                //.Build();

                // //optionsBuilder.UseSqlServer(cnn);
                // string cnn = configuration.GetConnectionString("MixMessengerConnection");
                // if (string.IsNullOrEmpty(cnn))
                // {
                //     cnn = _cnn;
                // }
                // //define the database to use
                // if (!string.IsNullOrEmpty(cnn))
                // {
                //         optionsBuilder.UseSqlServer(cnn);
                // }

                string cnn = MixService.GetConnectionString(MixConstants.CONST_CMS_CONNECTION);
                if (!string.IsNullOrEmpty(cnn))
                {
                    var provider = MixService.GetEnumConfig <MixDatabaseProvider>(MixConstants.CONST_SETTING_DATABASE_PROVIDER);
                    switch (provider)
                    {
                    case MixDatabaseProvider.MSSQL:
                        optionsBuilder.UseSqlServer(cnn);
                        break;

                    case MixDatabaseProvider.MySQL:
                        optionsBuilder.UseMySql(cnn, ServerVersion.AutoDetect(cnn));
                        break;

                    case MixDatabaseProvider.SQLITE:
                        optionsBuilder.UseSqlite(cnn);
                        break;

                    case MixDatabaseProvider.PostgreSQL:
                        optionsBuilder.UseNpgsql(cnn);
                        break;

                    default:
                        break;
                    }
                }
            }
        }
        public async Task <ActionResult <JObject> > Details(string viewType, string name, int?id)
        {
            string msg = string.Empty;

            switch (viewType)
            {
            case "portal":
                if (id.HasValue || !string.IsNullOrEmpty(name))
                {
                    Expression <Func <MixDatabase, bool> > predicate = model => (model.Id == id || model.Name == name);
                    var portalResult = await base.GetSingleAsync <UpdateViewModel>($"{viewType}_{id}", predicate);

                    return(Ok(JObject.FromObject(portalResult)));
                }
                else
                {
                    var model = new MixDatabase()
                    {
                        Status = MixService.GetEnumConfig <MixContentStatus>(MixAppSettingKeywords.DefaultContentStatus)
                        ,
                        Priority = UpdateViewModel.Repository.Max(a => a.Priority).Data + 1
                    };

                    RepositoryResponse <UpdateViewModel> result = await base.GetSingleAsync <UpdateViewModel>($"{viewType}_default", null, model);

                    return(Ok(JObject.FromObject(result)));
                }

            default:
                if (id.HasValue || !string.IsNullOrEmpty(name))
                {
                    Expression <Func <MixDatabase, bool> > predicate = model => model.Id == id || model.Name == name;
                    var result = await base.GetSingleAsync <ReadViewModel>($"{viewType}_{id}", predicate);

                    return(Ok(JObject.FromObject(result)));
                }
                else
                {
                    var model = new MixDatabase()
                    {
                        Status = MixService.GetEnumConfig <MixContentStatus>(MixAppSettingKeywords.DefaultContentStatus)
                        ,
                        Priority = ReadViewModel.Repository.Max(a => a.Priority).Data + 1
                    };

                    RepositoryResponse <ReadViewModel> result = await base.GetSingleAsync <ReadViewModel>($"{viewType}_default", null, model);

                    return(Ok(JObject.FromObject(result)));
                }
            }
        }
Exemple #12
0
        private static string GetColumnType(MixDataType dataType, int?maxLength = null)
        {
            var provider = MixService.GetEnumConfig <MixDatabaseProvider>(MixConstants.CONST_SETTING_DATABASE_PROVIDER);

            switch (dataType)
            {
            case MixDataType.DateTime:
            case MixDataType.Date:
            case MixDataType.Time:
                return(provider switch
                {
                    MixDatabaseProvider.PostgreSQL => "timestamp without time zone",
                    _ => "datetime"
                });
Exemple #13
0
        //Ref https://github.com/dotnet/efcore/issues/10169
        public override void Dispose()
        {
            var provider = MixService.GetEnumConfig <MixDatabaseProvider>(MixConstants.CONST_SETTING_DATABASE_PROVIDER);

            switch (provider)
            {
            case MixDatabaseProvider.MSSQL:
                SqlConnection.ClearPool((SqlConnection)Database.GetDbConnection());
                break;

            case MixDatabaseProvider.MySQL:
                MySqlConnection.ClearPool((MySqlConnection)Database.GetDbConnection());
                break;
            }
            base.Dispose();
        }
Exemple #14
0
 public override ActionResult <UpdateViewModel> Default()
 {
     using (MixCmsContext context = new MixCmsContext())
     {
         var transaction = context.Database.BeginTransaction();
         var model       = new MixPost()
         {
             Specificulture = _lang,
             Status         = MixService.GetEnumConfig <MixEnums.MixContentStatus>(MixConstants.ConfigurationKeyword.DefaultContentStatus),
             Type           = Request.Query["type"].ToString(),
             Template       = Request.Query["template"].ToString()
         };
         var result = new UpdateViewModel(model, context, transaction);
         return(Ok(result));
     }
 }
Exemple #15
0
        public virtual async Task <ActionResult <TModel> > Create([FromBody] TUpdate data)
        {
            ReflectionHelper.SetPropertyValue(data, new JProperty("CreatedBy", User.Claims.FirstOrDefault(
                                                                      c => c.Type == "Username")?.Value));
            ReflectionHelper.SetPropertyValue(data, new JProperty("Specificulture", _lang));
            ReflectionHelper.SetPropertyValue(data, new JProperty("Status", MixService.GetEnumConfig <MixContentStatus>(MixAppSettingKeywords.DefaultContentStatus)));
            var result = await SaveAsync(data, true);

            if (result.IsSucceed)
            {
                return(Ok(result.Data));
            }
            else
            {
                return(BadRequest(result.Errors));
            }
        }
Exemple #16
0
        public static async Task <RepositoryResponse <bool> > ImportData(
            string culture, Lib.ViewModels.MixAttributeSets.ReadViewModel attributeSet, IFormFile file)
        {
            var result = new RepositoryResponse <bool>()
            {
                IsSucceed = true
            };

            UnitOfWorkHelper <MixCmsContext> .InitTransaction(null, null, out MixCmsContext context, out IDbContextTransaction transaction, out bool isRoot);

            try
            {
                List <ImportViewModel> data = LoadFileData(culture, attributeSet, file);

                var fields = MixAttributeFields.UpdateViewModel.Repository.GetModelListBy(f => f.AttributeSetId == attributeSet.Id, context, transaction).Data;
                foreach (var item in data)
                {
                    if (result.IsSucceed)
                    {
                        var isCreateNew = string.IsNullOrEmpty(item.Id);
                        item.Fields           = fields;
                        item.AttributeSetName = attributeSet.Name;
                        item.Status           = MixService.GetEnumConfig <MixContentStatus>(MixAppSettingKeywords.DefaultContentStatus);
                        var saveResult = await item.SaveModelAsync(true, context, transaction);

                        ViewModelHelper.HandleResult(saveResult, ref result);
                    }
                }
                UnitOfWorkHelper <MixCmsContext> .HandleTransaction(result.IsSucceed, isRoot, transaction);

                return(result);
            }
            catch (Exception ex)
            {
                return(UnitOfWorkHelper <MixCmsContext> .HandleException <bool>(ex, isRoot, transaction));
            }
            finally
            {
                if (isRoot)
                {
                    //if current Context is Root
                    UnitOfWorkHelper <MixCmsContext> .CloseDbContext(ref context, ref transaction);
                }
            }
        }
Exemple #17
0
        public async Task <RepositoryResponse <UpdateViewModel> > Save([FromForm] string model, [FromForm] IFormFile file)
        {
            if (model != null)
            {
                var json = JObject.Parse(model);
                var data = json.ToObject <UpdateViewModel>();
                data.Status         = MixService.GetEnumConfig <MixContentStatus>(MixAppSettingKeywords.DefaultContentStatus);
                data.Specificulture = _lang;
                data.File           = file;
                var result = await base.SaveAsync <UpdateViewModel>(data, true);

                return(result);
            }
            return(new RepositoryResponse <UpdateViewModel>()
            {
                Status = 501
            });
        }
Exemple #18
0
 public override ActionResult <UpdateViewModel> Default()
 {
     using (MixCmsContext context = new MixCmsContext())
     {
         var    transaction = context.Database.BeginTransaction();
         string template    = !string.IsNullOrEmpty(Request.Query["template"].ToString())
                 ? $"{Request.Query["template"]}.cshtml"
                 : null;
         var model = new MixPost()
         {
             Specificulture = _lang,
             Status         = MixService.GetEnumConfig <MixContentStatus>(MixAppSettingKeywords.DefaultContentStatus),
             Type           = Request.Query["type"].ToString(),
             Template       = template
         };
         var result = new UpdateViewModel(model, context, transaction);
         return(Ok(result));
     }
 }
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            var provider = MixService.GetEnumConfig <MixDatabaseProvider>(MixConstants.CONST_SETTING_DATABASE_PROVIDER);

            switch (provider)
            {
            case MixDatabaseProvider.PostgreSQL:
                modelBuilder.ApplyPostgresIddentityConfigurations();
                break;

            case MixDatabaseProvider.MSSQL:
            case MixDatabaseProvider.MySQL:
            case MixDatabaseProvider.SQLITE:
            default:
                modelBuilder.ApplyIddentityConfigurations();
                break;
            }
            OnModelCreatingPartial(modelBuilder);
        }
Exemple #20
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;
            }
        }
Exemple #21
0
        public async Task <RepositoryResponse <UpdateViewModel> > UploadMedia([FromForm] IFormFile file)
        {
            if (file != null)
            {
                var data = new UpdateViewModel()
                {
                    Status         = MixService.GetEnumConfig <MixContentStatus>(MixAppSettingKeywords.DefaultContentStatus),
                    Specificulture = _lang,
                    FileFolder     = $"{MixService.GetTemplateUploadFolder(_lang)}",
                    File           = file
                };
                var result = await base.SaveAsync <UpdateViewModel>(data, true);

                return(result);
            }
            return(new RepositoryResponse <UpdateViewModel>()
            {
                Status = 501
            });
        }
        public async Task <ActionResult <UpdateViewModel> > Init(string mixDatabaseName)
        {
            var getAttrSet = await Lib.ViewModels.MixDatabases.ReadViewModel.Repository.GetSingleModelAsync(m => m.Name == mixDatabaseName);

            if (getAttrSet.IsSucceed)
            {
                FormViewModel result = new FormViewModel()
                {
                    Specificulture  = _lang,
                    MixDatabaseId   = getAttrSet.Data.Id,
                    MixDatabaseName = getAttrSet.Data.Name,
                    Status          = MixService.GetEnumConfig <MixContentStatus>(MixAppSettingKeywords.DefaultContentStatus),
                };
                result.ExpandView();
                return(Ok(result));
            }
            else
            {
                return(BadRequest(getAttrSet.Errors));
            }
        }
Exemple #23
0
        public async Task <ActionResult <UpdateViewModel> > InitByIdAsync(int moduleId)
        {
            var getModule = await Lib.ViewModels.MixModules.ReadListItemViewModel.Repository.GetSingleModelAsync(
                m => m.Id == moduleId && m.Specificulture == _lang).ConfigureAwait(false);

            if (getModule.IsSucceed)
            {
                var ModuleData = new UpdateViewModel(
                    new MixModuleData()
                {
                    ModuleId       = getModule.Data.Id,
                    Specificulture = _lang,
                    Fields         = getModule.Data.Fields,
                    Status         = MixService.GetEnumConfig <MixContentStatus>(MixAppSettingKeywords.DefaultContentStatus),
                });
                return(Ok(ModuleData));
            }
            else
            {
                return(BadRequest());
            }
        }
        public async Task <RepositoryResponse <UpdateViewModel> > DetailsAsync(string viewType, int moduleId, string id = null)
        {
            if (string.IsNullOrEmpty(id))
            {
                var getModule = await Lib.ViewModels.MixModules.ReadListItemViewModel.Repository.GetSingleModelAsync(
                    m => m.Id == moduleId && m.Specificulture == _lang).ConfigureAwait(false);

                if (getModule.IsSucceed)
                {
                    var model = new MixModuleData(
                        )
                    {
                        ModuleId       = moduleId,
                        Specificulture = _lang,
                        Fields         = getModule.Data.Fields,
                        Status         = MixService.GetEnumConfig <MixContentStatus>(MixAppSettingKeywords.DefaultContentStatus)
                    };
                    RepositoryResponse <UpdateViewModel> result = await base.GetSingleAsync <UpdateViewModel>($"{viewType}_default", null, model);

                    return(result);
                }
                else
                {
                    return(new RepositoryResponse <UpdateViewModel>()
                    {
                        IsSucceed = false
                    });
                }
            }
            else
            {
                Expression <Func <MixModuleData, bool> > predicate = model => model.Id == id && model.Specificulture == _lang;
                var portalResult = await base.GetSingleAsync <UpdateViewModel>($"{viewType}_{id}", predicate);

                return(portalResult);
            }
        }
Exemple #25
0
        public void LoadData(int?postId               = null, int?productId = null, int?pageId = null
                             , int?pageSize           = null, int?pageIndex = 0
                             , MixCmsContext _context = null, IDbContextTransaction _transaction = null)
        {
            UnitOfWorkHelper <MixCmsContext> .InitTransaction(_context, _transaction, out MixCmsContext context, out IDbContextTransaction transaction, out bool isRoot);

            try
            {
                string sortBy = Property <string>("sortBy") ?? MixService.GetAppSetting <string>(MixAppSettingKeywords.SortBy);
                Enum.TryParse(typeof(DisplayDirection), Property <string>("sortDirection"), out object direction);
                DisplayDirection sortDirection = direction != null
                    ? (DisplayDirection)direction
                    : MixService.GetEnumConfig <DisplayDirection>(MixAppSettingKeywords.SortBy);;
                pageSize  = pageSize > 0 ? pageSize : PageSize;
                pageIndex = pageIndex > 0 ? pageIndex : 0;
                Expression <Func <MixModuleData, bool> > dataExp = null;
                Expression <Func <MixModulePost, bool> > postExp = null;
                switch (Type)
                {
                case MixModuleType.Content:
                case MixModuleType.Data:
                    dataExp = m => m.ModuleId == Id && m.Specificulture == Specificulture;
                    //postExp = n => n.ModuleId == Id && n.Specificulture == Specificulture;
                    //productExp = m => m.ModuleId == Id && m.Specificulture == Specificulture;
                    break;

                case MixModuleType.ListPost:
                    postExp = n => n.ModuleId == Id && n.Specificulture == Specificulture;
                    break;

                default:
                    dataExp = m => m.ModuleId == Id && m.Specificulture == Specificulture;
                    postExp = n => n.ModuleId == Id && n.Specificulture == Specificulture;
                    break;
                }

                if (dataExp != null)
                {
                    var getDataResult = MixModuleDatas.ReadViewModel.Repository
                                        .GetModelListBy(
                        dataExp,
                        sortBy,
                        sortDirection,
                        pageSize, pageIndex
                        , _context: context, _transaction: transaction);
                    if (getDataResult.IsSucceed)
                    {
                        //getDataResult.Data.JsonItems = new List<JObject>();
                        //getDataResult.Data.Items.ForEach(d => getDataResult.Data.JsonItems.Add(d.JItem));
                        Data = getDataResult.Data;
                    }
                }
                if (postExp != null)
                {
                    var getPosts = MixModulePosts.ReadViewModel.Repository
                                   .GetModelListBy(postExp
                                                   , sortBy, sortDirection
                                                   , pageSize, pageIndex
                                                   , _context: context, _transaction: transaction);
                    if (getPosts.IsSucceed)
                    {
                        Posts = getPosts.Data;
                    }
                }
            }
            catch (Exception ex)
            {
                UnitOfWorkHelper <MixCmsContext> .HandleException <PaginationModel <ReadMvcViewModel> >(ex, isRoot, transaction);
            }
            finally
            {
                if (isRoot)
                {
                    //if current Context is Root
                    UnitOfWorkHelper <MixCmsContext> .CloseDbContext(ref context, ref transaction);
                }
            }
        }