public ActionResult TryRun(string id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } var item = DbContext.Current.GetBackupTasks().Find(s => s.Id == id); if (item == null) { return(HttpNotFound()); } Dictionary <string, Tuple <bool, string> > v = new Dictionary <string, Tuple <bool, string> >(); var connection = DbContext.Current.GetServerConnections().FirstOrDefault(s => s.Id == item.ConnectionId); if (connection == null) { v.Add("ValidateConnectionId", new Tuple <bool, string>(false, "Не выполнено!")); } else { v.Add("ValidateConnectionId", new Tuple <bool, string>(true, "Выполнено!")); string cnnString = ServerConnection.BuildConnectionString(connection); if (ServerConnection.TryConnect(cnnString)) { v.Add("ValidateConnectionCanConnect", new Tuple <bool, string>(true, "Выполнено!")); } else { v.Add("ValidateConnectionCanConnect", new Tuple <bool, string>(false, "Не выполнено!")); } var drive = DbContext.Current.GetCloudDrives().FirstOrDefault(s => s.Id == item.CloudDriveId); if (drive != null) { if (drive.Provider == CloudDrive.PROVIDER_FILESYSTEM) { v.Add("ValidateCloudDriveId", new Tuple <bool, string>(true, "Выполнено!")); if (string.IsNullOrEmpty(drive.Location)) { drive.Location = AppConfig.DefaultBackupLocation; } // проверка доступности файловой системы if (!Directory.Exists(drive.Location)) { Directory.CreateDirectory(drive.Location); } v.Add("ValidateCloudDriveCanConnect", new Tuple <bool, string>(true, "Выполнено!")); BackupToFileSystem(id, item, drive, cnnString, v); if (v.Keys.Contains("CreateBackupDone")) { if (v["CreateBackupDone"].Item1) { item.LastRun = DateTime.Now; item.LastStatus = v["CreateBackupDone"].Item2; DbContext.Current.Save(item); } } } else if (drive.Provider == CloudDrive.PROVIDER_BACKUPDEVICE) { v.Add("ValidateCloudDriveId", new Tuple <bool, string>(true, "Выполнено!")); // проверка доступности устройства резервного копирования v.Add("ValidateCloudDriveCanConnect", new Tuple <bool, string>(true, "Выполнено!")); BackupToSqlDevice(id, item, drive, cnnString, v); if (v.Keys.Contains("CreateBackupDone")) { if (v["CreateBackupDone"].Item1) { item.LastRun = DateTime.Now; item.LastStatus = v["CreateBackupDone"].Item2; DbContext.Current.Save(item); } } } else if (drive.Provider == CloudDrive.PROVIDER_MEGA) { // проверка доступности устройства резервного копирования string msg = string.Empty; if (CloudDataApi.TestMegaCloud(drive, out msg)) { v.Add("ValidateCloudDriveId", new Tuple <bool, string>(true, "Выполнено!")); string fileToTransfer = string.Empty; BackupToDefaultFileSystem(id, item, cnnString, v, out fileToTransfer); if (v.Keys.Contains("CreateBackupDone")) { if (v["CreateBackupDone"].Item1) { item.LastRun = DateTime.Now; item.LastStatus = v["CreateBackupDone"].Item2; DbContext.Current.Save(item); if (CloudDataApi.UploadToMegaCloud(drive, fileToTransfer, out msg)) { v.Add("TranferToCloudDriveId", new Tuple <bool, string>(true, "Выполнено! Файл доступен по ссылке:" + msg)); //удаляем исходный файл try { System.IO.File.Delete(fileToTransfer); } catch (Exception e) { } } else { v.Add("TranferToCloudDriveId", new Tuple <bool, string>(false, msg)); } } } } else { v.Add("ValidateCloudDriveId", new Tuple <bool, string>(false, msg)); } } else if (drive.Provider == CloudDrive.PROVIDER_MAILRU) { // проверка доступности устройства резервного копирования string msg = string.Empty; if (CloudDataApi.TestMailRuCloud(drive, out msg)) { v.Add("ValidateCloudDriveId", new Tuple <bool, string>(true, "Выполнено!")); string fileToTransfer = string.Empty; BackupToDefaultFileSystem(id, item, cnnString, v, out fileToTransfer); if (v.Keys.Contains("CreateBackupDone")) { if (v["CreateBackupDone"].Item1) { item.LastRun = DateTime.Now; item.LastStatus = v["CreateBackupDone"].Item2; DbContext.Current.Save(item); if (CloudDataApi.UploadToMailRuCloud(drive, fileToTransfer, out msg)) { v.Add("TranferToCloudDriveId", new Tuple <bool, string>(true, "Выполнено! Файл доступен по ссылке:" + msg)); //удаляем исходный файл try { System.IO.File.Delete(fileToTransfer); } catch (Exception e) { } } else { v.Add("TranferToCloudDriveId", new Tuple <bool, string>(false, msg)); } } } } else { v.Add("ValidateCloudDriveId", new Tuple <bool, string>(false, msg)); } } else if (drive.Provider == CloudDrive.PROVIDER_PCLOUD) { // проверка доступности устройства резервного копирования string msg = string.Empty; if (CloudDataApi.TestPCloud(drive, out msg)) { v.Add("ValidateCloudDriveId", new Tuple <bool, string>(true, "Выполнено!")); string fileToTransfer = string.Empty; BackupToDefaultFileSystem(id, item, cnnString, v, out fileToTransfer); if (v.Keys.Contains("CreateBackupDone")) { if (v["CreateBackupDone"].Item1) { item.LastRun = DateTime.Now; item.LastStatus = v["CreateBackupDone"].Item2; DbContext.Current.Save(item); if (CloudDataApi.UploadToPCloud(drive, fileToTransfer, out msg)) { v.Add("TranferToCloudDriveId", new Tuple <bool, string>(true, "Выполнено! " + msg)); //удаляем исходный файл try { System.IO.File.Delete(fileToTransfer); } catch (Exception e) { } } else { v.Add("TranferToCloudDriveId", new Tuple <bool, string>(false, msg)); } } } } else { v.Add("ValidateCloudDriveId", new Tuple <bool, string>(false, msg)); } } else if (drive.Provider == CloudDrive.PROVIDER_B2CLOUD) { // проверка доступности устройства резервного копирования string msg = string.Empty; if (CloudDataApi.TestB2Cloud(drive, out msg)) { v.Add("ValidateCloudDriveId", new Tuple <bool, string>(true, "Выполнено!")); string fileToTransfer = string.Empty; BackupToDefaultFileSystem(id, item, cnnString, v, out fileToTransfer); if (v.Keys.Contains("CreateBackupDone")) { if (v["CreateBackupDone"].Item1) { item.LastRun = DateTime.Now; item.LastStatus = v["CreateBackupDone"].Item2; DbContext.Current.Save(item); if (CloudDataApi.UploadToB2Cloud(drive, fileToTransfer, out msg)) { v.Add("TranferToCloudDriveId", new Tuple <bool, string>(true, "Выполнено! " + msg)); //удаляем исходный файл try { System.IO.File.Delete(fileToTransfer); } catch (Exception e) { } } else { v.Add("TranferToCloudDriveId", new Tuple <bool, string>(false, msg)); } } } } else { v.Add("ValidateCloudDriveId", new Tuple <bool, string>(false, msg)); } } else if (drive.Provider == CloudDrive.PROVIDER_YANDEXDISK) { // проверка доступности устройства резервного копирования string msg = string.Empty; if (CloudDataApi.TestYandexCloud(drive, out msg)) { v.Add("ValidateCloudDriveId", new Tuple <bool, string>(true, "Выполнено!")); string fileToTransfer = string.Empty; BackupToDefaultFileSystem(id, item, cnnString, v, out fileToTransfer); if (v.Keys.Contains("CreateBackupDone")) { if (v["CreateBackupDone"].Item1) { item.LastRun = DateTime.Now; item.LastStatus = v["CreateBackupDone"].Item2; DbContext.Current.Save(item); if (CloudDataApi.UploadToYandexCloud(drive, fileToTransfer, out msg)) { v.Add("TranferToCloudDriveId", new Tuple <bool, string>(true, "Выполнено! " + msg)); //удаляем исходный файл try { System.IO.File.Delete(fileToTransfer); } catch (Exception e) { } } else { v.Add("TranferToCloudDriveId", new Tuple <bool, string>(false, msg)); } } } } else { v.Add("ValidateCloudDriveId", new Tuple <bool, string>(false, msg)); } } else if (drive.Provider == CloudDrive.PROVIDER_GOOGLEDRIVE) { // проверка доступности устройства резервного копирования string msg = string.Empty; if (CloudDataApi.TestGoogleCloud(drive, out msg)) { v.Add("ValidateCloudDriveId", new Tuple <bool, string>(true, "Выполнено!")); string fileToTransfer = string.Empty; BackupToDefaultFileSystem(id, item, cnnString, v, out fileToTransfer); if (v.Keys.Contains("CreateBackupDone")) { if (v["CreateBackupDone"].Item1) { item.LastRun = DateTime.Now; item.LastStatus = v["CreateBackupDone"].Item2; DbContext.Current.Save(item); if (CloudDataApi.UploadToGoogleCloud(drive, fileToTransfer, out msg)) { v.Add("TranferToCloudDriveId", new Tuple <bool, string>(true, "Выполнено! " + msg)); //удаляем исходный файл try { System.IO.File.Delete(fileToTransfer); v.Add("RemoveCurrentBackupFile", new Tuple <bool, string>(true, "Выполнено!")); } catch (Exception e) { v.Add("RemoveCurrentBackupFile", new Tuple <bool, string>(false, "Не выполнено! " + msg)); } } else { v.Add("TranferToCloudDriveId", new Tuple <bool, string>(false, msg)); } } } } else { v.Add("ValidateCloudDriveId", new Tuple <bool, string>(false, msg)); } } else // неизвесный провайдер???? { v.Add("ValidateCloudDriveId", new Tuple <bool, string>(false, "Не выполнено! Неизвестный и не поддерживаемый провайдер.")); } } else { v.Add("ValidateCloudDriveId", new Tuple <bool, string>(false, "Не выполнено!")); v.Add("ValidateCloudDriveCanConnect", new Tuple <bool, string>(false, "Не выполнено!")); } } var allModels = new Tuple <ModelBackupTaskViewDetail, Dictionary <string, Tuple <bool, string> > > (ModelHelper.GetDetailModel(item), v); return(View(allModels)); }
public ActionResult TryValidate(string id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } var item = DbContext.Current.GetBackupTasks().Find(s => s.Id == id); if (item == null) { return(HttpNotFound()); } Dictionary <string, Tuple <bool, string> > v = new Dictionary <string, Tuple <bool, string> >(); v.Add("ValidateConnectionId", new Tuple <bool, string>(true, "Выполнено!")); if (!string.IsNullOrEmpty(item.CloudDriveId)) { CloudDrive drive = DbContext.Current.GetCloudDrives().FirstOrDefault(s => s.Id == item.CloudDriveId); if (drive != null) { if (drive.Provider == CloudDrive.PROVIDER_MEGA) { string msg = string.Empty; if (CloudDataApi.TestMegaCloud(drive, out msg)) { v.Add("ValidateCloudDriveId", new Tuple <bool, string>(true, "Выполнено!")); } else { v.Add("ValidateCloudDriveId", new Tuple <bool, string>(false, msg)); } } else if (drive.Provider == CloudDrive.PROVIDER_BACKUPDEVICE) { v.Add("ValidateCloudDriveId", new Tuple <bool, string>(true, "Выполнено!")); } else if (drive.Provider == CloudDrive.PROVIDER_FILESYSTEM) { v.Add("ValidateCloudDriveId", new Tuple <bool, string>(true, "В разработке!")); } else if (drive.Provider == CloudDrive.PROVIDER_GOOGLEDRIVE) { v.Add("ValidateCloudDriveId", new Tuple <bool, string>(true, "В разработке!")); } else { v.Add("ValidateCloudDriveId", new Tuple <bool, string>(false, "Не поддерживаемый провайдер!")); } } else { v.Add("ValidateCloudDriveId", new Tuple <bool, string>(false, "Не найдено место хранения!")); } } else { v.Add("ValidateCloudDriveId", new Tuple <bool, string>(false, "Не указано место хранения!")); } v.Add("ValidateCloudDriveCanConnect", new Tuple <bool, string>(true, "Выполнено!")); v.Add("ValidateConnectionCanConnect", new Tuple <bool, string>(true, "Выполнено!")); var allModels = new Tuple <ModelBackupTaskViewDetail, Dictionary <string, Tuple <bool, string> > > (ModelHelper.GetDetailModel(item), v); return(View(allModels)); }