private void BtnReAddAll_Click(object sender, RoutedEventArgs e) { SVR_Scan scan = Scanner.Instance.ActiveScan; if ((scan != null) && (Scanner.Instance.ActiveErrorFiles.Count > 0)) { if (scan.GetScanStatus() == ScanStatus.Running) { MessageBox.Show(Shoko.Commons.Properties.Resources.Integerity_ReaddMessage, Shoko.Commons.Properties.Resources.Integerity_ReaddTitle, MessageBoxButton.OK, MessageBoxImage.Information); return; } if (scan.GetScanStatus() == ScanStatus.Finish) { scan.Status = (int)ScanStatus.Standby; RepoFactory.Scan.Save(scan); } List <ScanFile> files = Scanner.Instance.ActiveErrorFiles.ToList(); Scanner.Instance.ActiveErrorFiles.Clear(); files.ForEach(a => { a.Status = (int)ScanFileStatus.Waiting; }); RepoFactory.ScanFile.Save(files); Scanner.Instance.Refresh(); } }
private void BtnAdd_Click(object sender, RoutedEventArgs e) { List <int> ids = new List <int>(); foreach (CheckedImportFolder f in ImportFolders) { if (f.Checked) { ids.Add(f.ImportFolderID); } } if (ids.Count == 0) { return; } SVR_Scan s = new SVR_Scan { Status = (int)ScanStatus.Standby, CreationTIme = DateTime.Now, ImportFolders = string.Join(",", ids.Select(a => a.ToString())) }; RepoFactory.Scan.Save(s); SelectedScan = s; this.DialogResult = true; this.Close(); }
private void Add_Click(object sender, RoutedEventArgs e) { ScanFile item = (ScanFile)(sender as Button)?.DataContext; SVR_Scan scan = Scanner.Instance.ActiveScan; if (scan != null && item != null && scan.ScanID == item.ScanID) { if (scan.GetScanStatus() == ScanStatus.Running) { MessageBox.Show(Shoko.Commons.Properties.Resources.Integerity_ReaddSingleMessage, Shoko.Commons.Properties.Resources.Integerity_ReaddSingleTitle, MessageBoxButton.OK, MessageBoxImage.Information); return; } if (scan.GetScanStatus() == ScanStatus.Finish) { scan.Status = (int)ScanStatus.Standby; RepoFactory.Scan.Save(scan); } item.Status = (int)ScanFileStatus.Waiting; RepoFactory.ScanFile.Save(item); Scanner.Instance.ActiveErrorFiles.Remove(item); Scanner.Instance.Refresh(); } }
private void BtnDeleteAll_Click(object sender, RoutedEventArgs e) { SVR_Scan scan = Scanner.Instance.ActiveScan; if ((scan != null) && (Scanner.Instance.ActiveErrorFiles.Count > 0)) { if (scan.GetScanStatus() == ScanStatus.Running) { MessageBox.Show(Shoko.Commons.Properties.Resources.Integerity_ReaddMessage, Shoko.Commons.Properties.Resources.Integerity_ReaddTitle, MessageBoxButton.OK, MessageBoxImage.Information); return; } if (scan.GetScanStatus() == ScanStatus.Finish) { using (var upd = Repo.Instance.Scan.BeginAddOrUpdate(() => scan)) { upd.Entity.Status = (int)ScanStatus.Standby; scan = upd.Commit(); } } Scanner.Instance.DeleteAllErroredFiles(); Scanner.Instance.Refresh(); } }
private void BtnReAddAll_Click(object sender, RoutedEventArgs e) { SVR_Scan scan = Scanner.Instance.ActiveScan; if ((scan != null) && (Scanner.Instance.ActiveErrorFiles.Count > 0)) { if (scan.GetScanStatus() == ScanStatus.Running) { MessageBox.Show(Shoko.Commons.Properties.Resources.Integerity_ReaddMessage, Shoko.Commons.Properties.Resources.Integerity_ReaddTitle, MessageBoxButton.OK, MessageBoxImage.Information); return; } if (scan.GetScanStatus() == ScanStatus.Finish) { using (var upd = Repo.Instance.Scan.BeginAddOrUpdate(() => scan)) { upd.Entity.Status = (int)ScanStatus.Standby; scan = upd.Commit(); } } List <ScanFile> files = Scanner.Instance.ActiveErrorFiles.ToList(); Scanner.Instance.ActiveErrorFiles.Clear(); using (var upd = Repo.Instance.ScanFile.BeginBatchUpdate(() => files)) { upd.ForEach(a => { a.Status = (int)ScanFileStatus.Waiting; }); upd.Commit(); } Scanner.Instance.Refresh(); } }
public ActionResult <Scan> AddScan(Scan scan) { if (scan.ScanID == 0) { SVR_Scan s = new SVR_Scan { Status = scan.Status, ImportFolders = scan.ImportFolders, CreationTIme = DateTime.Now }; RepoFactory.Scan.Save(s); scan = s; } List <ScanFile> files = scan.GetImportFolderList() .SelectMany(a => RepoFactory.VideoLocalPlace.GetByImportFolder(a)) .Select(p => new { p, v = p.VideoLocal }) .Select(t => new ScanFile { Hash = t.v.ED2KHash, FileSize = t.v.FileSize, FullName = t.p.FullServerPath, ScanID = scan.ScanID, Status = (int)ScanFileStatus.Waiting, ImportFolderID = t.p.ImportFolderID, VideoLocal_Place_ID = t.p.VideoLocal_Place_ID }).ToList(); RepoFactory.ScanFile.Save(files); return(scan); }
public void Init() { Utils.MainThreadDispatch(() => { RepoFactory.Scan.GetAll().ForEach(a => Scans.Add(a)); }); SVR_Scan runscan = Scans.FirstOrDefault(a => a.GetScanStatus() == ScanStatus.Running); if (runscan != null) { ActiveScan = runscan; StartScan(); } }
public void Init() { Application.Current.Dispatcher.Invoke(() => { RepoFactory.Scan.GetAll().ForEach(a => Scans.Add(a)); }); SVR_Scan runscan = Scans.FirstOrDefault(a => a.GetScanStatus() == ScanStatus.Running); if (runscan != null) { ActiveScan = runscan; StartScan(); } }
private void BtnAddcheck_Click(object sender, RoutedEventArgs e) { ScanImportFolders frm = new ScanImportFolders(); frm.Owner = GetTopParent(); bool?result = frm.ShowDialog(); if (result.HasValue && result.Value) { this.IsEnabled = false; Cursor = Cursors.Wait; SVR_Scan s = (SVR_Scan)frm.SelectedScan; HashSet <int> imp = new HashSet <int>(s.GetImportFolderList()); List <SVR_VideoLocal> vl = imp.SelectMany(a => RepoFactory.VideoLocal.GetByImportFolder(a)) .Distinct() .ToList(); List <ScanFile> files = new List <ScanFile>(); foreach (SVR_VideoLocal v in vl) { foreach (SVR_VideoLocal_Place p in v.Places.Where(a => imp.Contains(a.ImportFolderID))) { ScanFile sfile = new ScanFile(); sfile.Hash = v.ED2KHash; sfile.FileSize = v.FileSize; sfile.FullName = p.FullServerPath; sfile.ScanID = s.ScanID; sfile.Status = (int)ScanFileStatus.Waiting; sfile.ImportFolderID = p.ImportFolderID; sfile.VideoLocal_Place_ID = p.VideoLocal_Place_ID; files.Add(sfile); } } RepoFactory.ScanFile.Save(files); this.IsEnabled = true; Scanner.Instance.Scans.Add(s); comboProvider.SelectedItem = s; Cursor = Cursors.Arrow; } }
private void BtnDeleteAll_Click(object sender, RoutedEventArgs e) { SVR_Scan scan = Scanner.Instance.ActiveScan; if ((scan != null) && (Scanner.Instance.ActiveErrorFiles.Count > 0)) { if (scan.GetScanStatus() == ScanStatus.Running) { MessageBox.Show(Commons.Properties.Resources.Integerity_ReaddMessage, Commons.Properties.Resources.Integerity_ReaddTitle, MessageBoxButton.OK, MessageBoxImage.Information); return; } if (scan.GetScanStatus() == ScanStatus.Finish) { scan.Status = (int)ScanStatus.Standby; RepoFactory.Scan.Save(scan); } Scanner.Instance.DeleteAllErroredFiles(); Scanner.Instance.Refresh(); } }
private void WorkerIntegrityScanner_DoWork(object sender, DoWorkEventArgs e) { if (RunScan != null && RunScan.GetScanStatus() != ScanStatus.Finish) { bool paused = ShokoService.CmdProcessorHasher.Paused; ShokoService.CmdProcessorHasher.Paused = true; SVR_Scan s = RunScan; s.Status = (int)ScanStatus.Running; RepoFactory.Scan.Save(s); Refresh(); List <ScanFile> files = RepoFactory.ScanFile.GetWaiting(s.ScanID); int cnt = 0; foreach (ScanFile sf in files) { try { if (!File.Exists(sf.FullName)) { sf.Status = (int)ScanFileStatus.ErrorFileNotFound; } else { FileInfo f = new FileInfo(sf.FullName); if (sf.FileSize != f.Length) { sf.Status = (int)ScanFileStatus.ErrorInvalidSize; } else { ShokoService.CmdProcessorHasher.QueueState = new QueueStateStruct() { queueState = QueueStateEnum.HashingFile, extraParams = new[] { sf.FullName } }; Hashes hashes = FileHashHelper.GetHashInfo(sf.FullName, true, OnHashProgress, false, false, false); if (string.IsNullOrEmpty(hashes.ED2K)) { sf.Status = (int)ScanFileStatus.ErrorMissingHash; } else { sf.HashResult = hashes.ED2K; if (!sf.Hash.Equals(sf.HashResult, StringComparison.InvariantCultureIgnoreCase)) { sf.Status = (int)ScanFileStatus.ErrorInvalidHash; } else { sf.Status = (int)ScanFileStatus.ProcessedOK; } } } } } catch (Exception) { sf.Status = (int)ScanFileStatus.ErrorIOError; } cnt++; sf.CheckDate = DateTime.Now; RepoFactory.ScanFile.Save(sf); if (sf.Status > (int)ScanFileStatus.ProcessedOK) { Scanner.Instance.AddErrorScan(sf); } Refresh(); if (cancelIntegrityCheck) { break; } } if (files.Any(a => a.GetScanFileStatus() == ScanFileStatus.Waiting)) { s.Status = (int)ScanStatus.Standby; } else { s.Status = (int)ScanStatus.Finish; } RepoFactory.Scan.Save(s); Refresh(); RunScan = null; ShokoService.CmdProcessorHasher.Paused = paused; } }