private void ImportPlatformEntriesInternal(Package package, PlatformExportManifest manifest, Action <ExportImportProgressInfo> progressCallback) { var progressInfo = new ExportImportProgressInfo(); var platformEntriesPart = package.GetPart(_platformEntriesPartUri); if (platformEntriesPart != null) { PlatformExportEntries platformEntries; using (var stream = platformEntriesPart.GetStream()) { platformEntries = stream.DeserializeJson <PlatformExportEntries>(GetJsonSerializer()); } //Import security objects if (manifest.HandleSecurity) { progressInfo.Description = String.Format("Import {0} users with roles...", platformEntries.Users.Count()); progressCallback(progressInfo); //First need import roles foreach (var role in platformEntries.Roles) { _roleManagementService.AddOrUpdateRole(role); } //Next create or update users foreach (var user in platformEntries.Users) { if (_securityService.FindByIdAsync(user.Id, UserDetails.Reduced).Result != null) { var dummy = _securityService.UpdateAsync(user).Result; } else { var dummy = _securityService.CreateAsync(user).Result; } } } //Import modules settings if (manifest.HandleSettings) { //Import dynamic properties _dynamicPropertyService.SaveProperties(platformEntries.DynamicProperties.ToArray()); foreach (var propDicGroup in platformEntries.DynamicPropertyDictionaryItems.GroupBy(x => x.PropertyId)) { _dynamicPropertyService.SaveDictionaryItems(propDicGroup.Key, propDicGroup.ToArray()); } foreach (var module in manifest.Modules) { _settingsManager.SaveSettings(platformEntries.Settings.Where(x => x.ModuleId == module.Id).ToArray()); } } } }
private void ImportPlatformEntriesInternal(Package package, PlatformExportManifest manifest, Action <ExportImportProgressInfo> progressCallback) { var progressInfo = new ExportImportProgressInfo(); var platformEntriesPart = package.GetPart(_platformEntriesPartUri); if (platformEntriesPart != null) { PlatformExportEntries platformEntries; using (var stream = platformEntriesPart.GetStream()) { platformEntries = stream.DeserializeJson <PlatformExportEntries>(GetJsonSerializer()); } //Import security objects if (manifest.HandleSecurity) { progressInfo.Description = $"Import {platformEntries.Users.Count()} users with roles..."; progressCallback(progressInfo); //First need import roles foreach (var role in platformEntries.Roles) { _roleManagementService.AddOrUpdateRole(role); } //Next create or update users foreach (var user in platformEntries.Users) { if (_securityService.FindByIdAsync(user.Id, UserDetails.Reduced).Result != null) { var dummy = _securityService.UpdateAsync(user).Result; } else { var dummy = _securityService.CreateAsync(user).Result; } } } //Import modules settings if (manifest.HandleSettings) { //Import dynamic properties _dynamicPropertyService.SaveProperties(platformEntries.DynamicProperties.ToArray()); foreach (var propDicGroup in platformEntries.DynamicPropertyDictionaryItems.GroupBy(x => x.PropertyId)) { _dynamicPropertyService.SaveDictionaryItems(propDicGroup.Key, propDicGroup.ToArray()); } foreach (var module in manifest.Modules) { _settingsManager.SaveSettings(platformEntries.Settings.Where(x => x.ModuleId == module.Id).ToArray()); } } //Import notification templates if (!platformEntries.NotificationTemplates.IsNullOrEmpty()) { _notificationTemplateService.Update(platformEntries.NotificationTemplates.ToArray()); } //Import asset entires if (!platformEntries.AssetEntries.IsNullOrEmpty()) { var totalAssetsEntriesCount = platformEntries.AssetEntries.Count(); const int batchSize = 50; for (var i = 0; i <= totalAssetsEntriesCount; i += batchSize) { progressInfo.Description = $"Asset: {Math.Min(totalAssetsEntriesCount, i + batchSize) } of {totalAssetsEntriesCount} asset entries have been imported..."; progressCallback(progressInfo); _assetEntryService.SaveChanges(platformEntries.AssetEntries.Skip(i).Take(batchSize)); } } } }
public IHttpActionResult SaveDictionaryItems(string typeName, string propertyId, DynamicPropertyDictionaryItem[] items) { _service.SaveDictionaryItems(propertyId, items); return(StatusCode(HttpStatusCode.NoContent)); }
private async Task ImportPlatformEntriesInternalAsync(ZipArchive zipArchive, PlatformExportManifest manifest, Action <ExportImportProgressInfo> progressCallback, CancellationToken cancellationToken) { var progressInfo = new ExportImportProgressInfo(); var platformZipEntries = zipArchive.GetEntry(_platformZipEntryName); if (platformZipEntries != null) { PlatformExportEntries platformEntries; using (var stream = platformZipEntries.Open()) { platformEntries = stream.DeserializeJson <PlatformExportEntries>(GetJsonSerializer()); } //Import security objects if (manifest.HandleSecurity) { progressInfo.Description = $"Import { platformEntries.Users.Count()} users with roles..."; progressCallback(progressInfo); foreach (var role in platformEntries.Roles) { //TODO: Test with new and already exist await _roleManager.UpdateAsync(role); foreach (var permission in role.Permissions) { //TODO: Test with new and already exist await _roleManager.AddClaimAsync(role, new Claim(SecurityConstants.Claims.PermissionClaimType, permission.Name)); } } //Next create or update users foreach (var user in platformEntries.Users) { if (_userManager.FindByIdAsync(user.Id).Result != null) { await _userManager.UpdateAsync(user); } else { await _userManager.CreateAsync(user); } } } //Import modules settings if (manifest.HandleSettings) { //Import dynamic properties _dynamicPropertyService.SaveProperties(platformEntries.DynamicProperties.ToArray()); foreach (var propDicGroup in platformEntries.DynamicPropertyDictionaryItems.GroupBy(x => x.PropertyId)) { _dynamicPropertyService.SaveDictionaryItems(propDicGroup.Key, propDicGroup.ToArray()); } foreach (var module in manifest.Modules) { _settingsManager.SaveSettings(platformEntries.Settings.Where(x => x.ModuleId == module.Id).ToArray()); } } } }