public static async Task <ReturnedSaveFuncInfo> SaveAsync(BackupHistory item) { var ret = new ReturnedSaveFuncInfo(); try { } catch (Exception ex) { WebErrorLog.ErrorInstence.StartErrorLog(ex); ret.AddReturnedValue(ex); } return(ret); }
public static async Task <ReturnedSaveFuncInfo> BackupDbAsync(string connectionString, ENSource Source, string path = "", Guid?Guid = null, CancellationToken token = default) { var line = 0; var res = new ReturnedSaveFuncInfo(); bool IsAutomatic = string.IsNullOrEmpty(path); string DatabaseName = ""; try { OnCreateBackup?.Invoke(null, new CreateBackupArgs() { Message = "", State = CreateBackupState.Start }); token.ThrowIfCancellationRequested(); DeleteTempFilesToken?.Cancel(); if (IsAutomatic) { path = CreateFileName(connectionString); } if (!string.IsNullOrEmpty(path) && Directory.Exists(path)) { //در نرم افزار حسابداری آدرس پوشه پشتیبان گیری اتوماتیک داده شده است //باید فایل پشتیبان در این پوشه ایجاد گردد path = CreateFileName(connectionString, path); IsAutomatic = true; } DeleteTempFilesToken?.Cancel(); token.ThrowIfCancellationRequested(); //تهیه اولین نسخه بکاپ توسط سرویس اس کیو ال var CreateSqlBackuResult = await CreateSqlServerBackupFileAsync(path, connectionString); DatabaseName = CreateSqlBackuResult.value; res.AddReturnedValue(CreateSqlBackuResult); DeleteTempFilesToken?.Cancel(); token.ThrowIfCancellationRequested(); var PathForZipDirectory = Zip.Move2Temp(path); res.AddReturnedValue(PathForZipDirectory); DeleteTempFilesToken?.Cancel(); token.ThrowIfCancellationRequested(); try { //please dont remove this try //اگر به خطا خورد باید تابع ادامه پیدا کند و پشتیبان با پسوند .بک تهیه شود res.AddReturnedValue(await CompressFile.CompressFileInstance.CompressFileAsync(PathForZipDirectory.value, path, token)); } catch (Exception ex) { WebErrorLog.ErrorInstence.StartErrorLog(ex); res.AddReturnedValue(ex); } res.value = path.ToLower().Replace(".npz2", ".np").Replace(".npz", ".np").Replace(".np", ".npz2"); //بنا به هر دلیلی امکان فشرده کردن فایل وجود نداشته است //باید همان بکاپ فشرده نشده به آدرس مقصد درخواستی مشتری متقل گردد if (res.HasError) { var file = Directory.GetFiles(PathForZipDirectory.value).FirstOrDefault(); File.Move(file, path.ToLower().Replace(".npz2", ".np").Replace(".npz", ".np")); } OnCreateBackup?.Invoke(null, new CreateBackupArgs() { Message = "", State = CreateBackupState.End }); } catch (OperationCanceledException ex) { res.AddReturnedValue(ex); } catch (Exception ex) { WebErrorLog.ErrorInstence.StartErrorLog(ex, $"Error in Line {line}"); res.AddReturnedValue(ex); } finally { DeleteTempFilesToken?.Cancel(); DeleteTempFilesToken = new CancellationTokenSource(); Task.Run(() => deleteTempsAsync(DeleteTempFilesToken.Token)); Task.Run(() => BackupHistory.DeleteOldBackupsAsync()); Task.Run(() => BackupHistory.SaveAsync(new BackupHistory() { Date = DateTime.Now, Guid = Guid ?? System.Guid.NewGuid(), IsAutomatic = IsAutomatic, DatabaseName = DatabaseName, Path = path, IsSuccess = !res.HasError, Source = Source })); } return(res); }