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(); } } }
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; } } }
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); } } }
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 } ); } }
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; } } }