private void ExportRelatedDatas(MixCmsContext context, IDbContextTransaction transaction) { foreach (var item in AttributeSetDatas) { var getDataResult = MixRelatedAttributeDatas.ImportViewModel.Repository .GetModelListBy(m => m.ParentId == item.Id && m.Specificulture == item.Specificulture , context, transaction); if (getDataResult.IsSucceed && getDataResult.Data.Count > 0) { var data = getDataResult.Data.Where(m => AttributeSetDatas.Any(d => d.Id == m.DataId) && !RelatedData.Any(r => r.ParentId == item.Id && r.DataId == m.DataId)) .ToList(); RelatedData.AddRange(data); } } }
private void GetAdditionalData(string id, MixEnums.MixAttributeSetDataType type, MixCmsContext context, IDbContextTransaction transaction) { var getRelatedData = MixRelatedAttributeDatas.ReadViewModel.Repository.GetSingleModel( m => m.Specificulture == Specificulture && m.ParentType == (int)type && m.ParentId == id, context, transaction); if (getRelatedData.IsSucceed) { RelatedData.Add(getRelatedData.Data); var getData = MixAttributeSetDatas.ImportViewModel.Repository.GetSingleModel( m => m.Specificulture == Specificulture && m.Id == getRelatedData.Data.Id); if (getData.IsSucceed) { getData.Data.Fields = new List <MixAttributeFields.UpdateViewModel>(); foreach (var item in getData.Data.Values) { getData.Data.Fields.Add(item.Field); } AttributeSetDatas.Add(getData.Data); } } }
private void ProcessAttributeSetsAsync(MixCmsContext context, IDbContextTransaction transaction) { foreach (var item in AttributeSets) { item.Fields = MixAttributeFields.UpdateViewModel.Repository.GetModelListBy(a => a.AttributeSetId == item.Id, context, transaction).Data?.OrderBy(a => a.Priority).ToList(); // Filter list reference field => Add to Export Data if not exist var refFields = item.Fields.Where(f => f.DataType == MixEnums.MixDataType.Reference); foreach (var field in refFields) { var refSet = AttributeSets.FirstOrDefault(m => m.Name == field.AttributeSetName); if (refSet == null) { var getSet = MixAttributeSets.ImportViewModel.Repository.GetSingleModel(m => m.Name == field.AttributeSetName, context, transaction); if (getSet.IsSucceed) { refSet = getSet.Data; // Load ref data if export parent Data if (item.IsExportData) { var refData = MixAttributeSetDatas.ImportViewModel.Repository.GetModelListBy( a => a.Specificulture == Specificulture && a.AttributeSetId == refSet.Id, context, transaction) .Data?.OrderBy(a => a.Priority).ToList(); if (refData != null) { AttributeSetDatas.AddRange(refData); } } AttributeSets.Add(getSet.Data); } } else { refSet.IsExportData = refSet.IsExportData || item.IsExportData; if (item.IsExportData) { refSet.Data = refSet.Data ?? MixAttributeSetDatas.ImportViewModel.Repository.GetModelListBy( a => a.Specificulture == Specificulture && a.AttributeSetId == refSet.Id, context, transaction) .Data?.OrderBy(a => a.Priority).ToList(); } } } // Load export data if checked and did not process if (item.IsExportData) { var data = item.Data ?? MixAttributeSetDatas.ImportViewModel.Repository.GetModelListBy( a => a.Specificulture == Specificulture && a.AttributeSetId == item.Id, context, transaction) .Data?.OrderBy(a => a.Priority).ToList(); if (data != null) { AttributeSetDatas.AddRange(data); } foreach (var d in item.Data) { var getRelatedData = MixRelatedAttributeDatas.ReadViewModel.Repository.GetModelListBy( m => m.ParentId == d.Id && d.Specificulture == Specificulture); if (getRelatedData.IsSucceed) { RelatedData.AddRange(getRelatedData.Data); } } } } }