Пример #1
0
        public override async Task <RepositoryResponse <ImportViewModel> > SaveModelAsync(bool isSaveSubModels = false, MixCmsContext _context = null, IDbContextTransaction _transaction = null)
        {
            UnitOfWorkHelper <MixCmsContext> .InitTransaction(_context, _transaction, out MixCmsContext context, out IDbContextTransaction transaction, out bool isRoot);

            try
            {
                var result = await base.SaveModelAsync(isSaveSubModels, context, transaction);

                if (result.IsSucceed && !string.IsNullOrEmpty(ParentId))
                {
                    var getNav = MixRelatedAttributeDatas.UpdateViewModel.Repository.CheckIsExists(
                        m => m.DataId == Id && m.ParentId == ParentId && m.ParentType == ParentType && m.Specificulture == Specificulture
                        , context, transaction);
                    if (!getNav)
                    {
                        var nav = new MixRelatedAttributeDatas.UpdateViewModel()
                        {
                            DataId           = Id,
                            Specificulture   = Specificulture,
                            AttributeSetId   = AttributeSetId,
                            AttributeSetName = AttributeSetName,
                            ParentType       = ParentType,
                            ParentId         = ParentId,
                            Status           = MixContentStatus.Published
                        };
                        var saveResult = await nav.SaveModelAsync(false, context, transaction);

                        if (!saveResult.IsSucceed)
                        {
                            result.IsSucceed = false;
                            result.Exception = saveResult.Exception;
                            result.Errors    = saveResult.Errors;
                        }
                    }
                }

                UnitOfWorkHelper <MixCmsContext> .HandleTransaction(result.IsSucceed, isRoot, transaction);

                if (result.IsSucceed)
                {
                    Obj = Helper.ParseData(Id, Specificulture, context, transaction);
                }
                return(result);
            }
            catch (Exception ex)
            {
                return(UnitOfWorkHelper <MixCmsContext> .HandleException <ImportViewModel>(ex, isRoot, transaction));
            }
            finally
            {
                if (isRoot)
                {
                    transaction.Dispose();
                    context.Dispose();
                }
            }
        }
Пример #2
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;
                }
            }
        }
Пример #3
0
        public override async Task <RepositoryResponse <UpdateViewModel> > SaveModelAsync(bool isSaveSubModels = false, MixCmsContext _context = null, IDbContextTransaction _transaction = null)
        {
            UnitOfWorkHelper <MixCmsContext> .InitTransaction(_context, _transaction, out MixCmsContext context, out IDbContextTransaction transaction, out bool isRoot);

            try
            {
                var result = await base.SaveModelAsync(isSaveSubModels, context, transaction);

                // if save current data success and there is related parent data
                if (result.IsSucceed && !string.IsNullOrEmpty(ParentId))
                {
                    MixRelatedAttributeDatas.UpdateViewModel nav = new MixRelatedAttributeDatas.UpdateViewModel()
                    {
                        DataId           = result.Data.Id,
                        Specificulture   = Specificulture,
                        AttributeSetId   = result.Data.AttributeSetId,
                        AttributeSetName = result.Data.AttributeSetName,
                        ParentId         = ParentId,
                        ParentType       = ParentType
                    };
                    var saveNav = await nav.SaveModelAsync(true, context, transaction);

                    result.IsSucceed = result.IsSucceed && saveNav.IsSucceed;
                    result.Errors    = saveNav.Errors;
                    result.Exception = saveNav.Exception;
                }
                UnitOfWorkHelper <MixCmsContext> .HandleTransaction(result.IsSucceed, isRoot, transaction);

                return(result);
            }
            catch (Exception ex)
            {
                return(UnitOfWorkHelper <MixCmsContext> .HandleException <UpdateViewModel>(ex, isRoot, transaction));
            }
            finally
            {
                if (isRoot)
                {
                    UnitOfWorkHelper <MixCmsContext> .CloseDbContext(ref context, ref transaction);
                }
            }
        }
Пример #4
0
 private void LoadAttributeData(MixCmsContext context, IDbContextTransaction transaction)
 {
     AttributeData = MixRelatedAttributeDatas.UpdateViewModel.Repository.GetFirstModel(
         a => a.ParentId == Id.ToString() && a.Specificulture == Specificulture && a.ParentType == (int)MixEnums.MixAttributeSetDataType.Module
         , context, transaction).Data;
     if (AttributeData == null)
     {
         AttributeData = new MixRelatedAttributeDatas.UpdateViewModel(
             new MixRelatedAttributeData()
         {
             Specificulture = Specificulture,
             ParentType     = (int)MixEnums.MixAttributeSetDataType.Module,
             ParentId       = Id.ToString()
         }
             );
         AttributeData.Data = new MixAttributeSetDatas.UpdateViewModel(
             new MixAttributeSetData()
         {
             Specificulture = Specificulture
         }
             );
     }
 }
Пример #5
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;
                }
            }
        }