public ActionResult Index()
        {
            var model = new MigrateMediaModel
            {
                IsOverwrite = false,
                UseConfigurationAzureBlobStorage = true
            };

            SetDefaultModelProperties(model);

            return(View(model));
        }
        public ActionResult Index(MigrateMediaModel model)
        {
            if (!model.UseConfigurationAzureBlobStorage && string.IsNullOrWhiteSpace(model.CustomAzureBlobStorageConnectionString))
            {
                ModelState.AddModelError("CustomAzureBlobStorageConnectionString", "Azure Blob Storage Connection String is required.");
            }

            SetDefaultModelProperties(model);

            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            var connectionString = model.UseConfigurationAzureBlobStorage ? ConfigurationManager.AppSettings[MediaStorageStorageConnectionStringSettingName] : model.CustomAzureBlobStorageConnectionString;

            if (!_migrateMediaService.CanConnectToAzureCloudStorage(connectionString))
            {
                _orchardServices.Notifier.Add(NotifyType.Error, T("Migration failed: Unable to connect to Azure blob storage."));
                return(View(model));
            }

            var result = model.MigrationMethod == MigrateMethodTypes.AzureBlobStorageToFileSystem ? _migrateMediaService.MigratAzureBlobStorageToFileSystem(connectionString, model.IsOverwrite) : _migrateMediaService.MigrateFileSystemToAzureBlobStorage(connectionString, model.IsOverwrite);

            if (result.SuccessfulTransferCount > 0 || result.UnsuccessfulTransferCount == 0)
            {
                _orchardServices.Notifier.Add(NotifyType.Information, T(string.Format("Successfully migrated {0} media item(s).", result.SuccessfulTransferCount)));
            }

            if (result.IgnoredCount > 0)
            {
                _orchardServices.Notifier.Add(NotifyType.Warning, T(string.Format("Ignored {0} media item(s) during migration.", result.IgnoredCount)));
            }

            if (result.UnsuccessfulTransferCount > 0)
            {
                _orchardServices.Notifier.Add(NotifyType.Error, T(string.Format("Failed to migrate {0} media item(s).", result.UnsuccessfulTransferCount)));
            }

            return(RedirectToAction("Index"));
        }
 private void SetDefaultModelProperties(MigrateMediaModel model)
 {
     model.ConfiguredAzureBlobStorage = RemoveSensitiveInfoFromConnectionString(ConfigurationManager.AppSettings[MediaStorageStorageConnectionStringSettingName]);
     model.MediaItemsCount            = _mediaLibraryService.GetMediaContentItems().Count();
 }