private void ExportMixDatabasesAsync(MixCmsContext context, IDbContextTransaction transaction) { foreach (var item in MixDatabases) { item.Fields = MixDatabaseColumns.UpdateViewModel.Repository.GetModelListBy(a => a.MixDatabaseId == 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 == MixDataType.Reference); foreach (var field in refFields) { var refSet = MixDatabases.FirstOrDefault(m => m.Name == field.MixDatabaseName); if (refSet == null) { var getSet = ViewModels.MixDatabases.ImportViewModel.Repository.GetSingleModel(m => m.Name == field.MixDatabaseName, context, transaction); if (getSet.IsSucceed) { refSet = getSet.Data; refSet.IsExportData = refSet.IsExportData || item.IsExportData; MixDatabases.Add(refSet); } } else { refSet.IsExportData = refSet.IsExportData || item.IsExportData; } } // Load export data if checked and did not process if (item.IsExportData && item.Data != null) { } } }
private async Task <RepositoryResponse <bool> > ImportMixDatabaseDatas(string destCulture, MixCmsContext context, IDbContextTransaction transaction) { var result = new RepositoryResponse <bool>() { IsSucceed = true }; foreach (var item in MixDatabaseDatas) { item.CreatedBy = CreatedBy; if (result.IsSucceed) { item.CreatedBy = CreatedBy; if (!context.MixDatabaseData.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.MixDatabaseName.IndexOf("sys_") != 0 && dicMixDatabaseIds.ContainsKey(item.MixDatabaseId)) { item.MixDatabaseId = dicMixDatabaseIds[item.MixDatabaseId]; } item.Fields = item.Fields ?? MixDatabaseColumns.UpdateViewModel.Repository.GetModelListBy( m => m.MixDatabaseId == item.MixDatabaseId, context, transaction).Data; foreach (var field in item.Fields) { field.Specificulture = destCulture; var newSet = MixDatabases.FirstOrDefault(m => m.Name == field.MixDatabaseName); var newField = newSet?.Fields.FirstOrDefault(m => m.Name == field.Name); if (newField != null) { field.Id = newField.Id; field.MixDatabaseId = newSet.Id; field.MixDatabaseName = newSet.Name; field.CreatedDateTime = DateTime.UtcNow; } } var saveResult = await item.SaveModelAsync(true, context, transaction); ViewModelHelper.HandleResult(saveResult, ref result); } } else { break; } } return(result); }