public void UnLockBackupFolder(BackupRestoreLog bk)
        {
            if (!string.IsNullOrEmpty(bk.LinkDatabase))
            {
                Commons.Common.UnLockFolder(Path.GetDirectoryName(bk.LinkDatabase));
            }

            if (!string.IsNullOrEmpty(bk.LinkDataNCC))
            {
                Commons.Common.UnLockFolder(bk.LinkDataNCC);
            }
        }
        public IHttpActionResult Restore(DataRestore dti)
        {
            var tempLog = db.BackupRestoreLogs.ToList();

            BackupRestoreLog bkrs = new BackupRestoreLog();

            bkrs.OriDisk     = dti.bk.OriDisk;
            bkrs.TimeBackup  = dti.bk.TimeBackup;
            bkrs.Type        = 2;
            bkrs.UserName    = HttpContext.Current.User.Identity.Name;
            bkrs.TimeRestore = DateTime.Now;

            if (dti.dtb)
            {
                if (!File.Exists(dti.bk.LinkDatabase))
                {
                    return(BadRequest("Tệp tin sao lưu cơ sở dữ liệu không tồn tại. Vui lòng kiểm tra lại!"));
                }
                ExeRestoreDatabase(dti.bk.LinkDatabase);
                ReSaveLog(tempLog);
                bkrs.LinkDatabase = dti.bk.LinkDatabase;
            }

            if (dti.hsncc)
            {
                if (!NormalizePath(dti.bk.LinkDataNCC).EndsWith("DataNCC"))
                {
                    return(BadRequest("Đường dẫn đến dữ liệu Hồ sơ NCC không hợp lệ! Đường dẫn phải kết thúc bởi thư mục DataNCC"));
                }
                if (!Directory.Exists(dti.bk.LinkDataNCC))
                {
                    return(BadRequest("Thư mục sao lưu hồ sơ người có công không tồn tại. Vui lòng kiểm tra lại!"));
                }

                DirectoryInfo src = new DirectoryInfo(dti.bk.LinkDataNCC);
                DirectoryInfo des = new DirectoryInfo(folderNCC);
                fileCopy = 0;
                ExeRestoreDataNCC(src, des);
                bkrs.LinkDataNCC = dti.bk.LinkDataNCC;
            }
            db.BackupRestoreLogs.Add(bkrs);

            db.SaveChanges();
            return(Ok(new
            {
                fileCopy
            }));
        }
        public IHttpActionResult BackUp(string backupFolder, bool dtb, bool hsncc, bool IsLock)
        {
            //var timer = new Timer();

            //timer.Elapsed += delegate { ExeBackupDatabase(backupFolder); }; //new ElapsedEventHandler(ExeBackupDatabase(backupFolder));

            //timer.Interval = TimeSpan.FromMinutes(1).TotalMilliseconds;
            //timer.Enabled = true;
            //timer.Start();

            BackupRestoreLog bkrs = new BackupRestoreLog();

            bkrs.OriDisk    = NormalizePath(backupFolder);
            bkrs.TimeBackup = DateTime.Now;
            bkrs.Type       = 1;
            bkrs.UserName   = HttpContext.Current.User.Identity.Name;

            if (dtb)
            {
                Commons.Common.UnLockFolder(Path.Combine(backupFolder, "Database"));
                bkrs.LinkDatabase = NormalizePath(ExeBackupDatabase(backupFolder));
            }
            if (hsncc)
            {
                Commons.Common.UnLockFolder(Path.Combine(backupFolder, "DataNCC"));
                bkrs.LinkDataNCC = NormalizePath(ExeBackupDataNCC(backupFolder));
            }


            db.BackupRestoreLogs.Add(bkrs);

            db.SaveChanges();

            if (IsLock)
            {
                LockBackupFolder(bkrs);
            }

            // JobScheduler jb = new JobScheduler();
            //JobScheduler.Start();
            return(Ok(new
            {
                LinkDatabase = bkrs.LinkDatabase == null ? "---Không sao lưu---" : bkrs.LinkDatabase,
                bkrs.LinkDataNCC,
                fileCopy,
                fileDelete
            }));
        }
        public void AutoBackUp()
        {
            string text = File.ReadAllText(Path.Combine(HttpRuntime.AppDomainAppPath, "BackupConfig.json"));

            var obj = Newtonsoft.Json.JsonConvert.DeserializeObject <ModelConfigBackup>(text);

            if (obj != null)
            {
                if (obj.isActive)
                {
                    File.AppendAllText(Path.Combine(HttpRuntime.AppDomainAppPath, "BackupLog.txt"),
                                       "Backup start at " + DateTime.Now.ToString("HH:mm dd/MM/yyyy") + Environment.NewLine);

                    // GlobalHost.ConnectionManager.GetHubContext<HubStore.UserActivityHub>().Clients.All.receive(1, "Job1");

                    BackupRestoreLog bkrs = new BackupRestoreLog();
                    bkrs.OriDisk    = NormalizePath(obj.Folder);
                    bkrs.TimeBackup = DateTime.Now;
                    bkrs.Type       = 1;
                    bkrs.UserName   = "******";

                    if (obj.dtb)
                    {
                        Commons.Common.UnLockFolder(Path.Combine(obj.Folder, "Database"));
                        bkrs.LinkDatabase = NormalizePath(ExeBackupDatabase(obj.Folder));
                    }
                    if (obj.hsncc)
                    {
                        Commons.Common.UnLockFolder(Path.Combine(obj.Folder, "DataNCC"));
                        bkrs.LinkDataNCC = NormalizePath(ExeBackupDataNCC(obj.Folder));
                    }


                    db.BackupRestoreLogs.Add(bkrs);

                    db.SaveChanges();

                    if (obj.IsLock)
                    {
                        LockBackupFolder(bkrs);
                    }

                    File.AppendAllText(Path.Combine(HttpRuntime.AppDomainAppPath, "BackupLog.txt"),
                                       "Backup end at " + DateTime.Now.ToString("HH:mm dd/MM/yyyy") + Environment.NewLine);
                }
            }
        }