Beispiel #1
0
        public static async Task <ReturnedSaveFuncInfo> BackUpStartAsync(string connectionString, ENSource Source, string path = "", Guid?Guid = null, CancellationToken token = default)
        {
            var ret = new ReturnedSaveFuncInfo();

            try
            {
                token.ThrowIfCancellationRequested();
                if (path == "")
                {
                    token.ThrowIfCancellationRequested();
                    var dlg = new SaveFileDialog {
                        Title = @"پشتیبان گیری اطلاعات نوین پرداز"
                    };
                    token.ThrowIfCancellationRequested();
                    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;
                    token.ThrowIfCancellationRequested();
                    dlg.Filter = "*.NPZ2|*.NPZ2";
                    token.ThrowIfCancellationRequested();
                    token.ThrowIfCancellationRequested();
                    if (dlg.ShowDialog() != DialogResult.OK)
                    {
                        ret.AddReturnedValue(ReturnedState.Warning, "لغو  توسط کاربر. عدم انتخاب آدرس ذخیره سازی.");
                        return(ret);
                    }
                    path = dlg.FileName;
                }
                token.ThrowIfCancellationRequested();
                ret.AddReturnedValue(await DatabaseAction.BackupDbAsync(connectionString, Source, path, Guid, token));
            }
            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);
        }
Beispiel #2
0
        public static async Task <ReturnedSaveFuncInfo> ReStoreStartAsync(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() != 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);
        }