Example #1
0
        /// <summary>
        /// ورودی آدرس فایل خروجی آدرس پوشه ای که باید فشرده سازی شود
        /// </summary>
        /// <param name="filePath"></param>
        /// <returns></returns>
        public static async Task <ReturnedSaveFuncInfoWithValue <string> > Move2Temp(string filePath, Guid guid, EnBackUpType type)
        {
            var ret = new ReturnedSaveFuncInfoWithValue <string>();

            try
            {
                string   tempDIR   = TempDirName();
                FileInfo tempInfor = new FileInfo(filePath);
                if (!File.Exists(filePath))
                {
                    var msg = $"path not exists : {filePath}";
                    await DatabaseAction.BackUpLogAsync(guid, type, EnBackUpStatus.Error, filePath, msg);

                    ret.AddReturnedValue(ReturnedState.Error, msg);
                    return(ret);
                }
                var retFilePath = Path.Combine(tempDIR, tempInfor.Name);
                File.Move(filePath, retFilePath);
                ret.value = tempDIR;
                await DatabaseAction.BackUpLogAsync(guid, type, EnBackUpStatus.Success, filePath, "انتقال فایل به پوشه Temp انجام شد");
            }
            catch (Exception ex)
            {
                await DatabaseAction.BackUpLogAsync(guid, type, EnBackUpStatus.Error, filePath, ex.Message);

                WebErrorLog.ErrorInstence.StartErrorLog(ex);
                ret.AddReturnedValue(ex);
            }
            return(ret);
        }
        public static async Task <ReturnedSaveFuncInfo> ReStoreStartAsync(IWin32Window owner, string connectionString, ENSource source, string path = "", bool autoBackup = true)
        {
            var ret = new ReturnedSaveFuncInfo();

            try
            {
                if (string.IsNullOrEmpty(path))
                {
                    var ofd = new OpenFileDialog
                    {
                        Multiselect = false,
                        Filter      = @"Backup Files(*.NPZ;*.NPZ2;*.BAK)|*.NPZ;*.NPZ2;*.BAK",
                        Title       = @"فایل حاوی اطلاعات پشتیبانی نرم افزار را انتخاب نمائید"
                    };

                    if (ofd.ShowDialog(owner) != DialogResult.OK)
                    {
                        ret.AddReturnedValue(ReturnedState.Warning, "بازگردانی اطلاعات توسط کاربر لغو شد. عدم انتخاب آدرس ذخیره سازی فایل.");
                        return(ret);
                    }
                    path = ofd.FileName;
                }

                var backUpVersion   = GetBackUpVersion(connectionString, path);
                var dataBaseVersion = GetDataBaseVersion(connectionString);
                if (backUpVersion > dataBaseVersion)
                {
                    ret.AddReturnedValue(ReturnedState.Error, $@"{backUpVersion} نسخه فایل پشتیبان" + " \r\n" +
                                         $@"{dataBaseVersion} نسخه دیتابیس" + "\r\n" +
                                         "بدلیل بالاتر بودن نسخه پشتیبان نسبت به دیتابیس، امکان بازگردانی وجود ندارد");
                    return(ret);
                }

                SqlConnection.ClearAllPools();
                ret.AddReturnedValue(await DatabaseAction.ReStoreDbAsync(connectionString, path, autoBackup, source));
            }
            catch (Exception ex)
            {
                WebErrorLog.ErrorInstence.StartErrorLog(ex);
                ret.AddReturnedValue(ex);
            }
            return(ret);
        }
        public static async Task <ReturnedSaveFuncInfo> BackUpStartAsync(IWin32Window owner, string connectionString, ENSource source, EnBackUpType type, string path = "")
        {
            var ret = new ReturnedSaveFuncInfo();

            try
            {
                if (path == "")
                {
                    var dlg = new SaveFileDialog {
                        Title = @"پشتیبان گیری اطلاعات آراد"
                    };
                    var file = Path.GetFileName(System.Reflection.Assembly.GetEntryAssembly()?.Location)
                               ?.Replace(".exe", "__");
                    var d = Calendar.MiladiToShamsi(DateTime.Now).Replace("/", "_");
                    d           += "__" + DateTime.Now.Hour + " - " + DateTime.Now.Minute;
                    file        += d;
                    file         = file.Replace(" ", "");
                    dlg.FileName = file;
                    dlg.Filter   = "*.NPZ2|*.NPZ2";
                    if (dlg.ShowDialog(owner) != DialogResult.OK)
                    {
                        ret.AddReturnedValue(ReturnedState.Warning, "لغو  توسط کاربر. عدم انتخاب آدرس ذخیره سازی.");
                        return(ret);
                    }
                    path = dlg.FileName;
                }
                ret.AddReturnedValue(await DatabaseAction.BackupDbAsync(connectionString, source, type, path));
            }
            catch (ThreadAbortException ex) { ret.AddReturnedValue(ex); }
            catch (OperationCanceledException ex) { ret.AddReturnedValue(ex); }
            catch (Exception ex)
            {
                WebErrorLog.ErrorInstence.StartErrorLog(ex);
                Finish_Event = true;
                ret.AddReturnedValue(ex);
            }
            return(ret);
        }
        public async Task <ReturnedSaveFuncInfo> CompressFileAsync(string pathForZipDirectory, string zipFilePath, Guid guid, EnBackUpType type)
        {
            var ret  = new ReturnedSaveFuncInfo();
            int line = 0;

            try
            {
                line        = 1;
                zipFilePath = zipFilePath.ToLower();
                line        = 2;
                var inf = new FileInfo(zipFilePath);
                line        = 3;
                zipFilePath = inf.FullName.Replace(inf.Extension, ".npz2");
                using (var archive = ArchiveFactory.Create(ArchiveType.GZip))
                {
                    line = 48;
                    archive.AddAllFromDirectory(pathForZipDirectory);
                    line = 51;
                    archive.SaveTo(zipFilePath, CompressionType.GZip);
                }

                line = 52;
                line = 53;
                Directory.Delete(pathForZipDirectory, true);
                await DatabaseAction.BackUpLogAsync(guid, type, EnBackUpStatus.Success, zipFilePath,
                                                    "فایل فشره شده ایجاد شد");
            }
            catch (OperationCanceledException ex) { ret.AddReturnedValue(ex); }
            catch (Exception ex)
            {
                await DatabaseAction.BackUpLogAsync(guid, type, EnBackUpStatus.Error, zipFilePath,
                                                    ex.Message);

                WebErrorLog.ErrorInstence.StartErrorLog(ex, $"Line:{line}");
                ret.AddReturnedValue(ex);
            }
            return(ret);
        }