Ejemplo n.º 1
0
        public override RepositoryResponse <bool> RemoveRelatedModels(DeleteViewModel view, MixCmsContext _context = null, IDbContextTransaction _transaction = null)
        {
            var result = new RepositoryResponse <bool>()
            {
                IsSucceed = true
            };
            var removeData = MixAttributeSetDatas.DeleteViewModel.Repository.RemoveListModel(false, f => f.AttributeSetId == Id, _context, _transaction);

            ViewModelHelper.HandleResult(removeData, ref result);
            if (result.IsSucceed)
            {
                var removeFields = MixAttributeFields.DeleteViewModel.Repository.RemoveListModel(false, f => f.AttributeSetId == Id, _context, _transaction);
                ViewModelHelper.HandleResult(removeFields, ref result);
            }
            return(result);
        }
        private async Task <RepositoryResponse <bool> > ImportAttributeSetsAsync(MixCmsContext context, IDbContextTransaction transaction)
        {
            var result = new RepositoryResponse <bool>()
            {
                IsSucceed = true
            };

            if (AttributeSets != null)
            {
                var startId         = MixAttributeSets.ImportViewModel.Repository.Max(m => m.Id, context, transaction).Data;
                var startFieldId    = MixAttributeFields.UpdateViewModel.Repository.Max(m => m.Id, context, transaction).Data;
                var attributeFields = new List <MixAttributeFields.UpdateViewModel>();
                foreach (var set in AttributeSets)
                {
                    if (result.IsSucceed)
                    {
                        if (!context.MixAttributeSet.Any(m => m.Name == set.Name))
                        {
                            startId++;
                            set.Id = startId;
                            set.CreatedDateTime = DateTime.UtcNow;
                            attributeFields.AddRange(set.Fields
                                                     .Where(m => !attributeFields.Any(n => n.Id == m.Id))
                                                     .ToList());
                            var saveResult = await set.SaveModelAsync(false, context, transaction);

                            ViewModelHelper.HandleResult(saveResult, ref result);
                        }
                        if (!dicAttributeSetIds.Any(m => m.Key == set.Id))
                        {
                            dicAttributeSetIds.Add(set.Id, startId);
                        }
                    }
                    else
                    {
                        break;
                    }
                }
                // save fields
                if (result.IsSucceed)
                {
                    foreach (var field in attributeFields)
                    {
                        if (result.IsSucceed)
                        {
                            var setId = dicAttributeSetIds.FirstOrDefault(m => m.Key == field.AttributeSetId);
                            field.AttributeSetId = setId.Value;
                            if (field.ReferenceId != null)
                            {
                                var refId = dicAttributeSetIds.FirstOrDefault(m => m.Key == field.ReferenceId);
                                field.ReferenceId = refId.Value;
                            }
                            if (!dicFieldIds.Any(m => m.Key == field.Id))
                            {
                                startFieldId++;
                                dicFieldIds.Add(field.Id, startFieldId);
                                field.Id = startFieldId;
                                field.CreatedDateTime = DateTime.UtcNow;
                            }
                            else
                            {
                                var current = dicFieldIds.FirstOrDefault(m => m.Key == field.Id);
                                field.Id = current.Value;
                                field.CreatedDateTime = DateTime.UtcNow;
                            }
                            var saveResult = await field.SaveModelAsync(false, context, transaction);

                            ViewModelHelper.HandleResult(saveResult, ref result);
                        }
                        else
                        {
                            result.Errors.Add($"Cannot Import {field.Name} - {field.Id}");
                            break;
                        }
                    }
                }
            }
            return(result);
        }
        private async Task <RepositoryResponse <bool> > ImportPagesAsync(string destCulture,
                                                                         MixCmsContext _context = null, IDbContextTransaction _transaction = null)
        {
            var result = new RepositoryResponse <bool>()
            {
                IsSucceed = true
            };

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

            try
            {
                int startId       = MixPages.UpdateViewModel.ModelRepository.Max(m => m.Id, context, transaction).Data;
                int startModuleId = MixModules.UpdateViewModel.ModelRepository.Max(m => m.Id, context, transaction).Data;
                //var pages = FileRepository.Instance.GetFile(MixConstants.CONST_FILE_PAGES, "data", true, "{}");
                //var obj = JObject.Parse(pages.Content);
                //var initPages = obj["data"].ToObject<JArray>();
                foreach (var item in Pages)
                {
                    // store old id => update to related data if save success
                    var oldId = item.Id;
                    // TODO: Id > 7 => not system init page
                    if (!context.MixPage.Any(p => p.SeoName == item.SeoName))
                    {
                        startId++;
                        item.Id = startId;

                        item.CreatedDateTime = DateTime.UtcNow;
                        item.ThemeName       = ThemeName;

                        item.Specificulture = destCulture;
                        var saveResult = await item.SaveModelAsync(false, context, transaction);

                        if (!saveResult.IsSucceed)
                        {
                            result.IsSucceed = false;
                            result.Exception = saveResult.Exception;
                            result.Errors    = saveResult.Errors;
                            break;
                        }
                    }
                    if (!dicPageIds.Any(m => m.Key == item.Id))
                    {
                        dicPageIds.Add(oldId, startId);
                    }
                }
                UnitOfWorkHelper <MixCmsContext> .HandleTransaction(result.IsSucceed, isRoot, transaction);
            }
            catch (Exception ex) // TODO: Add more specific exeption types instead of Exception only
            {
                var error = UnitOfWorkHelper <MixCmsContext> .HandleException <MixPages.ImportViewModel>(ex, isRoot, transaction);

                result.IsSucceed = false;
                result.Errors    = error.Errors;
                result.Exception = error.Exception;
            }
            finally
            {
                //if current Context is Root
                if (isRoot)
                {
                    context.Database.CloseConnection(); transaction.Dispose(); context.Dispose();
                }
            }
            return(result);
        }
 private void ExportAddictionalData(string id, MixEnums.MixAttributeSetDataType type, MixCmsContext context, IDbContextTransaction transaction)
 {
     if (!RelatedData.Any(m => m.ParentId == id && m.ParentType == type))
     {
         var getRelatedData = MixRelatedAttributeDatas.ImportViewModel.Repository.GetSingleModel(
             m => m.Specificulture == Specificulture && m.ParentType == type.ToString() &&
             m.ParentId == id, context, transaction);
         if (getRelatedData.IsSucceed)
         {
             RelatedData.Add(getRelatedData.Data);
         }
     }
 }
        private async Task <RepositoryResponse <bool> > ImportModulesAsync(string destCulture, MixCmsContext context, IDbContextTransaction transaction)
        {
            var result = new RepositoryResponse <bool>()
            {
                IsSucceed = true
            };
            var startId = context.MixModule.Any() ? context.MixModule.Max(m => m.Id) : 0;

            foreach (var module in Modules)
            {
                var oldId = module.Id;

                if (result.IsSucceed)
                {
                    if (!context.MixModule.Any(m => m.Name == module.Name && m.Specificulture == destCulture))
                    {
                        startId++;
                        module.Id              = startId;
                        module.Specificulture  = destCulture;
                        module.CreatedDateTime = DateTime.UtcNow;
                        var saveResult = await module.SaveModelAsync(false, context, transaction);

                        ViewModelHelper.HandleResult(saveResult, ref result);
                    }
                    if (!dicModuleIds.Any(m => m.Key == oldId))
                    {
                        // update new id to related attribute data
                        dicModuleIds.Add(oldId, module.Id);
                    }
                }
                else
                {
                    break;
                }
            }

            return(result);
        }
 private void ExportDatas(MixCmsContext context, IDbContextTransaction transaction)
 {
     ExportAttributeSetData(context, transaction);
     ExportRelatedDatas(context, transaction);
 }
        private void ExportModuleDatas(MixModules.ImportViewModel item, MixCmsContext context, IDbContextTransaction transaction)
        {
            var getDataResult = MixModuleDatas.ImportViewModel.Repository
                                .GetModelListBy(m => m.ModuleId == item.Id &&
                                                m.Specificulture == item.Specificulture
                                                , context, transaction);

            if (getDataResult.IsSucceed)
            {
                ModuleDatas.AddRange(getDataResult.Data);
            }
        }
        public override async Task <RepositoryResponse <SiocModuleData> > RemoveModelAsync(bool isRemoveRelatedModels = false, SiocCmsContext _context = null, IDbContextTransaction _transaction = null)
        {
            var result = await base.RemoveModelAsync(isRemoveRelatedModels, _context, _transaction);

            if (result.IsSucceed)
            {
                foreach (var prop in DataProperties)
                {
                    if (prop.DataType == SWCmsConstants.DataType.Image)
                    {
                        FileRepository.Instance.DeleteWebFile(prop.StringValue);
                    }
                }
            }
            return(result);
        }
 public IDisposable BeginTransaction(IsolationLevel isolationLevel = IsolationLevel.ReadCommitted)
 {
     _dbContextTransaction = Database.BeginTransaction(isolationLevel);
     return(_dbContextTransaction);
 }
 public BEModuleDataViewModel(SiocModuleData model, SiocCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction)
 {
 }
        public override void ExpandView(SiocCmsContext _context = null, IDbContextTransaction _transaction = null)
        {
            ListSupportedCulture = CommonRepository.Instance.LoadCultures(Specificulture, _context, _transaction);

            var objValue = Value != null?JObject.Parse(Value) : new JObject();

            this.DataProperties = new List <ModuleDataValueViewModel>();
            Fields       = InfoModuleViewModel.Repository.GetSingleModel(m => m.Id == ModuleId && m.Specificulture == Specificulture, _context, _transaction).Data?.Fields;
            this.Columns = new List <ModuleFieldViewModel>();
            if (!string.IsNullOrEmpty(Fields))
            {
                JArray arrField = JArray.Parse(Fields);

                foreach (var field in arrField)
                {
                    ModuleFieldViewModel thisField = new ModuleFieldViewModel()
                    {
                        Name      = CommonHelper.ParseJsonPropertyName(field["name"].ToString()),
                        Priority  = field["priority"] != null ? field["priority"].Value <int>() : 0,
                        DataType  = (SWCmsConstants.DataType)(int) field["dataType"],
                        Width     = field["width"] != null ? field["width"].Value <int>() : 3,
                        IsDisplay = field["isDisplay"] != null ? field["isDisplay"].Value <bool>() : true
                    };
                    this.Columns.Add(thisField);
                }
            }
            foreach (var col in Columns)
            {
                JProperty prop = objValue.Property(col.Name);
                if (prop == null)
                {
                    JObject val = new JObject
                    {
                        { "dataType", (int)col.DataType },
                        { "value", null }
                    };
                    prop = new JProperty(col.Name, val);
                }
                var dataVal = new ModuleDataValueViewModel()
                {
                    ModuleId    = ModuleId,
                    DataType    = (SWCmsConstants.DataType)col.DataType,
                    Name        = CommonHelper.ParseJsonPropertyName(prop.Name),
                    IsDisplay   = col.IsDisplay,
                    IsSelect    = col.IsSelect,
                    IsGroupBy   = col.IsGroupBy,
                    Options     = col.Options,
                    StringValue = prop.Value["value"].Value <string>()
                };
                switch (col.DataType)
                {
                case SWCmsConstants.DataType.Int:
                    dataVal.Value = prop.Value["value"].HasValues ? prop.Value["value"].Value <int>() : 0;
                    break;

                case SWCmsConstants.DataType.Boolean:
                    dataVal.Value = !string.IsNullOrEmpty(prop.Value["value"].ToString()) ? prop.Value["value"].Value <bool>() : false;
                    break;

                case SWCmsConstants.DataType.String:
                case SWCmsConstants.DataType.Image:
                case SWCmsConstants.DataType.Icon:
                case SWCmsConstants.DataType.CodeEditor:
                case SWCmsConstants.DataType.Html:
                case SWCmsConstants.DataType.TextArea:
                default:
                    dataVal.Value = prop.Value["value"].Value <string>();
                    break;
                }
                this.DataProperties.Add(dataVal);
            }
        }
Ejemplo n.º 12
0
 public ReadViewModel(MixAttributeSetValue model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction)
 {
     IsCache = false;
 }
 public NavCategoryModuleViewModel(SiocCategoryModule model, SiocCmsContext _context = null, IDbContextTransaction _transaction = null)
     : base(model, _context, _transaction)
 {
 }
Ejemplo n.º 14
0
        public override async System.Threading.Tasks.Task <RepositoryResponse <bool> > RemoveRelatedModelsAsync(DeleteViewModel view, MixCmsContext _context = null, IDbContextTransaction _transaction = null)
        {
            var result = new RepositoryResponse <bool>()
            {
                IsSucceed = true
            };
            var removeData = await MixAttributeSetDatas.DeleteViewModel.Repository.RemoveListModelAsync(false, f => f.AttributeSetId == Id, _context, _transaction);

            ViewModelHelper.HandleResult(removeData, ref result);
            if (result.IsSucceed)
            {
                var removeFields = await MixAttributeFields.DeleteViewModel.Repository.RemoveListModelAsync(
                    false, f => f.AttributeSetId == Id || f.ReferenceId == Id, _context, _transaction);

                ViewModelHelper.HandleResult(removeFields, ref result);
            }
            if (result.IsSucceed)
            {
                var removeRelated = await MixRelatedAttributeSets.DeleteViewModel.Repository.RemoveListModelAsync(false,
                                                                                                                  f => f.Id == Id || (f.ParentId == Id && f.ParentType == (int)MixEnums.MixAttributeSetDataType.Service)
                                                                                                                  , _context, _transaction);

                ViewModelHelper.HandleResult(removeRelated, ref result);
            }

            return(result);
        }
Ejemplo n.º 15
0
 public UpdateViewModel(MixAttributeSetData model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction)
 {
 }
        public async Task <IDisposable> BeginTransactionAsync(IsolationLevel isolationLevel = IsolationLevel.ReadCommitted, CancellationToken cancellationToken = default)
        {
            _dbContextTransaction = await Database.BeginTransactionAsync(isolationLevel, cancellationToken);

            return(_dbContextTransaction);
        }
Ejemplo n.º 17
0
 public override MixAttributeSetData ParseModel(MixCmsContext _context = null, IDbContextTransaction _transaction = null)
 {
     if (string.IsNullOrEmpty(Id))
     {
         Id = Guid.NewGuid().ToString();
         CreatedDateTime = DateTime.UtcNow;
     }
     return(base.ParseModel(_context, _transaction));
 }
Ejemplo n.º 18
0
 protected override void UseTransaction(DatabaseFacade facade, IDbContextTransaction transaction)
 => facade.UseTransaction(transaction.GetDbTransaction());
 private void ExportPageModuleNav(MixPages.ImportViewModel item, MixCmsContext context, IDbContextTransaction transaction)
 {
     PageModuleNavs.AddRange(item.GetModuleNavs(context, transaction)
                             .Where(m => !PageModuleNavs.Any(n => n.ModuleId == m.ModuleId && n.PageId == m.PageId)));
     foreach (var nav in PageModuleNavs)
     {
         if (!Modules.Any(m => m.Id == nav.ModuleId && m.Specificulture == Specificulture))
         {
             Modules.Add(nav.Module);
         }
     }
 }
Ejemplo n.º 20
0
 public ImportViewModel(MixPageModule model, MixCmsContext _context = null, IDbContextTransaction _transaction = null)
     : base(model, _context, _transaction)
 {
 }
 private void ExportModulePostNavs(MixModules.ImportViewModel item, MixCmsContext context, IDbContextTransaction transaction)
 {
     ModulePostNavs.AddRange(item.GetPostNavs(context, transaction)
                             .Where(m => !ModulePostNavs.Any(n => n.PostId == m.PostId && n.ModuleId == m.ModuleId)));
     foreach (var nav in ModulePostNavs)
     {
         if (!Posts.Any(m => m.Id == nav.Post.Id && m.Specificulture == Specificulture))
         {
             Posts.Add(nav.Post);
         }
     }
 }
Ejemplo n.º 22
0
 public void BeginTransaction()
 {
     _transaction = DbContext.Database.BeginTransaction();
 }
        public async Task <RepositoryResponse <bool> > ImportAsync(string destCulture,
                                                                   MixCmsContext _context = null, IDbContextTransaction _transaction = null)
        {
            var result = new RepositoryResponse <bool>()
            {
                IsSucceed = true
            };

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

            try
            {
                if (Configurations != null && Configurations.Count > 0)
                {
                    result = await ImportConfigurationsAsync(destCulture, context, transaction);
                }
                if (result.IsSucceed && Languages != null && Languages.Count > 0)
                {
                    result = await ImportLanguagesAsync(destCulture, context, transaction);
                }
                if (result.IsSucceed && Pages != null && Pages.Count > 0)
                {
                    result = await ImportPagesAsync(destCulture, context, transaction);
                }
                if (result.IsSucceed && Modules != null && Modules.Count > 0)
                {
                    result = await ImportModulesAsync(destCulture, context, transaction);
                }

                if (result.IsSucceed && ModuleDatas.Count > 0)
                {
                    result = await ImportModuleDatas(destCulture, context, transaction);
                }
                if (result.IsSucceed && Posts != null && Posts.Count > 0)
                {
                    result = await ImportPostsAsync(destCulture, context, transaction);
                }
                if (result.IsSucceed && AttributeSets != null && AttributeSets.Count > 0)
                {
                    result = await ImportAttributeSetsAsync(context, transaction);
                }
                if (result.IsSucceed && AttributeSetDatas.Count > 0)
                {
                    result = await ImportAttributeSetDatas(destCulture, context, transaction);
                }
                if (result.IsSucceed && RelatedData.Count > 0)
                {
                    result = await ImportRelatedDatas(destCulture, context, transaction);
                }

                UnitOfWorkHelper <MixCmsContext> .HandleTransaction(result.IsSucceed, isRoot, transaction);
            }
            catch (Exception ex) // TODO: Add more specific exeption types instead of Exception only
            {
                var error = UnitOfWorkHelper <MixCmsContext> .HandleException <MixPages.ImportViewModel>(ex, isRoot, transaction);

                result.IsSucceed = false;
                result.Errors    = error.Errors;
                result.Exception = error.Exception;
            }
            finally
            {
                //if current Context is Root
                if (isRoot)
                {
                    context.Database.CloseConnection(); transaction.Dispose(); context.Dispose();
                }
            }
            return(result);
        }
Ejemplo n.º 24
0
        public async Task <IActionResult> Edit([Required][FromForm] int id, AreaEditModel areaEditModel)
        {
            if (ModelState.IsValid)
            {
                IDbContextTransaction transaction = null;
                try
                {
                    transaction = await lawyerDbContext.Database.BeginTransactionAsync();

                    Area area = await lawyerDbContext.Areas.FindAsync(id);

                    if (area == null)
                    {
                        throw new NullReferenceException("This area doesn't exist. ");
                    }

                    area.MeetingMinute = areaEditModel.MeetingMinute;

                    IEnumerable <Text> nameTextAllLanguage = await lawyerDbContext.Texts
                                                             .Where(m => m.Key == area.NameKey)
                                                             .ToListAsync();

                    IEnumerable <Text> descriptionTextAllLanguage = await lawyerDbContext.Texts
                                                                    .Where(m => m.Key == area.DescriptionKey)
                                                                    .ToListAsync();

                    //Update texts all language for properties
                    foreach (var item in areaEditModel.Areas)
                    {
                        Text name = nameTextAllLanguage.SingleOrDefault(m => m.LanguageId == item.LanguageId);
                        name.TextContent = item.Name;
                        Text description = descriptionTextAllLanguage.SingleOrDefault(m => m.LanguageId == item.LanguageId);
                        description.TextContent = item.Description;
                    }

                    await lawyerDbContext.SaveChangesAsync();

                    transaction.Commit();

                    return(RedirectToAction(nameof(Index)));
                }

                catch (NullReferenceException exp)
                {
                    ModelState.AddModelError("", exp.Message);
                }

                catch
                {
                    transaction.Rollback();

                    ModelState.AddModelError("", "Some error occured. Please try again.");
                }
                finally
                {
                    if (transaction != null)
                    {
                        transaction.Dispose();
                    }
                }
            }

            AreaViewModel areaViewModel = new AreaViewModel
            {
                Id        = id,
                Areas     = areaEditModel.Areas,
                Languages = await lawyerDbContext.Languages
                            .AsNoTracking()
                            .ToListAsync(),
                MeetingMinute = areaEditModel.MeetingMinute
            };

            return(View(areaViewModel));
        }
        private async Task <RepositoryResponse <bool> > ImportPostsAsync(string destCulture, MixCmsContext context, IDbContextTransaction transaction)
        {
            var result = new RepositoryResponse <bool>()
            {
                IsSucceed = true
            };

            var startId = context.MixPost.Any() ? context.MixPost.Max(m => m.Id) : 0;

            foreach (var post in Posts)
            {
                var oldId = post.Id;

                if (result.IsSucceed)
                {
                    if (!context.MixPost.Any(m => m.SeoName == post.SeoName && m.Specificulture == destCulture))
                    {
                        startId++;
                        post.Id              = startId;
                        post.Specificulture  = destCulture;
                        post.CreatedDateTime = DateTime.UtcNow;
                        var saveResult = await post.SaveModelAsync(true, context, transaction);

                        ViewModelHelper.HandleResult(saveResult, ref result);
                    }
                    // update new id to related attribute data
                    if (!dicPostIds.Any(m => m.Key == oldId))
                    {
                        dicPostIds.Add(oldId, post.Id);
                    }
                }
                else
                {
                    break;
                }
            }

            return(result);
        }
Ejemplo n.º 26
0
        public async Task <IActionResult> Create(AreaCreateModel areaCreateModel)
        {
            if (ModelState.IsValid)
            {
                IDbContextTransaction transaction = null;

                try
                {
                    transaction = await lawyerDbContext.Database.BeginTransactionAsync();

                    Area area = new Area
                    {
                        NameKey        = DbContextService.GenerateKey("area_name"),
                        DescriptionKey = DbContextService.GenerateKey("desc"),
                        MeetingMinute  = areaCreateModel.MeetingMinute,
                    };

                    IEnumerable <Text> areaNameForAllLangueges = areaCreateModel.Areas.Select(m => new Text
                    {
                        Key         = area.NameKey,
                        TextContent = m.Name,
                        LanguageId  = m.LanguageId
                    });

                    await lawyerDbContext.Texts.AddRangeAsync(areaNameForAllLangueges);

                    IEnumerable <Text> areaDescriptionForAllLangueges = areaCreateModel.Areas.Select(m => new Text
                    {
                        Key         = area.DescriptionKey,
                        TextContent = m.Description,
                        LanguageId  = m.LanguageId
                    });

                    await lawyerDbContext.Areas.AddAsync(area);

                    await lawyerDbContext.Texts.AddRangeAsync(areaDescriptionForAllLangueges);

                    await lawyerDbContext.SaveChangesAsync();

                    transaction.Commit();

                    return(RedirectToAction(nameof(Index)));
                }
                catch
                {
                    transaction.Rollback();

                    ModelState.AddModelError("", "Some error occured ! Please try again .");
                }

                finally
                {
                    if (transaction != null)
                    {
                        transaction.Dispose();
                    }
                }
            }

            AreaViewModel areaViewModel = new AreaViewModel
            {
                Languages = await lawyerDbContext.Languages
                            .AsNoTracking()
                            .ToListAsync(),
                Areas         = areaCreateModel.Areas,
                MeetingMinute = areaCreateModel.MeetingMinute
            };

            return(View(areaViewModel));
        }
        private async Task <RepositoryResponse <bool> > ImportLanguagesAsync(string destCulture,
                                                                             MixCmsContext _context = null, IDbContextTransaction _transaction = null)
        {
            var result = new RepositoryResponse <bool>()
            {
                IsSucceed = true
            };

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

            try
            {
                int startId = MixLanguages.UpdateViewModel.ModelRepository.Max(m => m.Id, context, transaction).Data;
                foreach (var item in Languages)
                {
                    var oldId = item.Id;
                    if (!context.MixLanguage.Any(p => p.Keyword == item.Keyword))
                    {
                        startId++;
                        item.Id = startId;

                        item.CreatedDateTime = DateTime.UtcNow;

                        item.Specificulture = destCulture;
                        var saveResult = await item.SaveModelAsync(false, context, transaction);

                        if (!saveResult.IsSucceed)
                        {
                            result.IsSucceed = false;
                            result.Exception = saveResult.Exception;
                            result.Errors    = saveResult.Errors;
                            break;
                        }
                    }
                    if (!dicLanguageIds.Any(m => m.Key == item.Id))
                    {
                        dicLanguageIds.Add(oldId, startId);
                    }
                }
                UnitOfWorkHelper <MixCmsContext> .HandleTransaction(result.IsSucceed, isRoot, transaction);
            }
            catch (Exception ex) // TODO: Add more specific exeption types instead of Exception only
            {
                var error = UnitOfWorkHelper <MixCmsContext> .HandleException <MixPages.ImportViewModel>(ex, isRoot, transaction);

                result.IsSucceed = false;
                result.Errors    = error.Errors;
                result.Exception = error.Exception;
            }
            finally
            {
                //if current Context is Root
                if (isRoot)
                {
                    context.Database.CloseConnection(); transaction.Dispose(); context.Dispose();
                }
            }
            return(result);
        }
Ejemplo n.º 28
0
        public override RepositoryResponse <bool> SaveSubModels(MixAttributeSetData parent, MixCmsContext _context, IDbContextTransaction _transaction)
        {
            var result = new RepositoryResponse <bool>()
            {
                IsSucceed = true
            };

            if (result.IsSucceed)
            {
                foreach (var item in Values)
                {
                    if (result.IsSucceed)
                    {
                        item.Priority       = item.Field.Priority;
                        item.DataId         = parent.Id;
                        item.Specificulture = parent.Specificulture;
                        var saveResult = item.SaveModel(false, _context, _transaction);
                        ViewModelHelper.HandleResult(saveResult, ref result);
                    }
                    else
                    {
                        break;
                    }
                }
            }
            return(result);
        }
        private async Task <RepositoryResponse <bool> > ImportAttributeSetDatas(string destCulture, MixCmsContext context, IDbContextTransaction transaction)
        {
            var result = new RepositoryResponse <bool>()
            {
                IsSucceed = true
            };

            foreach (var item in AttributeSetDatas)
            {
                if (result.IsSucceed)
                {
                    if (!context.MixAttributeSetData.Any(m => m.Id == item.Id && m.Specificulture == item.Specificulture))
                    {
                        item.Specificulture  = destCulture;
                        item.CreatedDateTime = DateTime.UtcNow;
                        // update new Id if not system attribute
                        if (item.AttributeSetName.IndexOf("sys_") != 0 && dicAttributeSetIds.ContainsKey(item.AttributeSetId))
                        {
                            item.AttributeSetId = dicAttributeSetIds[item.AttributeSetId];
                        }
                        item.Fields = item.Fields ?? MixAttributeFields.UpdateViewModel.Repository.GetModelListBy(
                            m => m.AttributeSetId == item.AttributeSetId, context, transaction).Data;
                        foreach (var field in item.Fields)
                        {
                            field.Specificulture = destCulture;
                            var newSet   = AttributeSets.FirstOrDefault(m => m.Name == field.AttributeSetName);
                            var newField = newSet?.Fields.FirstOrDefault(m => m.Name == field.Name);
                            if (newField != null)
                            {
                                field.Id               = newField.Id;
                                field.AttributeSetId   = newSet.Id;
                                field.AttributeSetName = newSet.Name;
                                field.CreatedDateTime  = DateTime.UtcNow;
                            }
                        }
                        var saveResult = await item.SaveModelAsync(true, context, transaction);

                        ViewModelHelper.HandleResult(saveResult, ref result);
                    }
                }
                else
                {
                    break;
                }
            }
            return(result);
        }
Ejemplo n.º 30
0
 public ReadMvcViewModel(MixPostAttributeValue model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction)
 {
 }