public List<ScanFile> Select(ScanFileFilter filter) { if (filter == null) return null; List<ScanFile> list = null; using (var db = new DozpContext()) { list = (from f in db.ScanFiles.Include(e => e.Book.Catalogue) where (0 == filter.ScanFileID || f.ScanFileID == filter.ScanFileID) && (0 == filter.BookID || f.BookID == filter.BookID) && (0 == filter.CatalogueID || f.Book.CatalogueID == filter.CatalogueID) && (String.IsNullOrEmpty(filter.SysNo) || f.Book.SysNo == filter.SysNo) && (!filter.PartOfBook.HasValue || f.PartOfBook == filter.PartOfBook.Value) && (!filter.UseOCR.HasValue || f.UseOCR == filter.UseOCR.Value) && (!filter.Modified.From.HasValue || f.Modified >= filter.Modified.From.Value) && (!filter.Modified.From.HasValue || f.Modified <= filter.Modified.To.Value) && (!filter.Status.HasValue || f.Status == filter.Status.Value) && (String.IsNullOrEmpty(filter.UserName) || f.Operations.Count(o => o.UserName == filter.UserName) > 0) select f).ToList(); } return list; }
/// <summary> /// Načte nezpracované obsahy katalogu pro OCR zpracování. /// </summary> /// <param name="catalogueID"></param> /// <returns>Nezpracované obsahy</returns> public static List<ScanFile> GetUnprocessedContents(int catalogueID) { ScanFileFilter filter = new ScanFileFilter(); filter.CatalogueID = catalogueID; filter.PartOfBook = PartOfBook.TableOfContents; filter.UseOCR = true; filter.Status = StatusCode.Scanned; List<ScanFile> files = AuthController.GetProxy().Execute(client => client.GetScanFiles(filter)); return (files != null ? files.OrderBy(f => f.Created).ToList() : null); }
/// <summary> /// Načte vyřazené obsahy katalogu pri OCR zpracování. /// </summary> /// <param name="catalogueID"></param> /// <returns></returns> public static List<ScanFile> GetDiscardContents(int catalogueID, string userName) { ScanFileFilter filter = new ScanFileFilter(); filter.CatalogueID = catalogueID; filter.UserName = userName; filter.Status = StatusCode.Discarded; List<ScanFile> files = AuthController.GetProxy().Execute(client => client.GetScanFiles(filter)); return (files != null ? files.OrderBy(f => f.Modified).ToList() : null); }
/// <summary> /// Načte aktuálně zpracovávaný OCR obsah. /// </summary> /// <returns>Záznam obsahu</returns> public static ScanFile GetCheckOutContents() { ScanFileFilter filter = new ScanFileFilter(); filter.UserName = AuthController.UserIdentity.LoginUser.UserName; filter.PartOfBook = PartOfBook.TableOfContents; filter.UseOCR = true; filter.Status = StatusCode.InProgress; List<ScanFile> files = AuthController.GetProxy().Execute(client => client.GetScanFiles(filter)); return (files != null ? files.FirstOrDefault() : null); }
public List<ScanFile> GetScanFiles(ScanFileFilter filter) { try { return ScanFileComponent.Instance.GetList(filter); } catch (Exception ex) { string message = "Chyba při načtení záznamů souborů podle filtru"; throw new FaultException<DozpServiceFault>(new DozpServiceFault(message), ex.Message); } }
public List<ScanFile> GetList(ScanFileFilter filter) { if (filter == null) throw new ArgumentNullException("filter"); ScanFileRepository repository = new ScanFileRepository(); return repository.Select(filter); }
public ScanFile GetContentsToOCR(string userName) { if (String.IsNullOrEmpty(userName)) throw new ArgumentException("Neplatný parametr jméno uživatele."); //kontrola, jestli j*z uzivatel neco nezpracovava ScanFileFilter filter = new ScanFileFilter(); filter.PartOfBook = PartOfBook.TableOfContents; filter.UseOCR = true; filter.UserName = userName; filter.Status = StatusCode.InProgress; //nacteni posledniho nezpracovaneho obsahu ScanFileRepository repository = new ScanFileRepository(); ScanFile result = repository.Select(filter).FirstOrDefault(); if (result == null) { filter.UserName = null; filter.Status = StatusCode.Scanned; result = repository.Select(filter).OrderBy(f => f.ScanFileID).FirstOrDefault(); } return result; }
public List<ScanFile> GetBySysNo(string sysno) { ScanFileFilter filter = new ScanFileFilter(); filter.SysNo = sysno; ScanFileRepository repository = new ScanFileRepository(); return repository.Select(filter); }
public List<ScanFile> GetByFilter(int catalogueID, DateTime modifiedFrom, DateTime modifiedTo, string userName, short? partOfBook, short? processingMode, int? status, string sortExpression) { ScanFileFilter filter = new ScanFileFilter(); filter.CatalogueID = catalogueID; filter.Modified = new DateRange(modifiedFrom, modifiedTo); filter.UserName = userName; filter.PartOfBook = (PartOfBook?)partOfBook; filter.UseOCR = (processingMode.HasValue ? (bool?)(processingMode.Value == (short)ProcessingMode.OCR) : null); filter.Status = (StatusCode?)status; if (sortExpression.Contains("SysNo")) return GetList(filter).OrderBy(o => o.Book.SysNo).ToList(); else return GetList(filter).OrderBy(sortExpression).ToList(); }
public byte[] CheckOut(int scanFileID, string userName, string computer, string comment) { //kontrola vstupnich parametru if (scanFileID == 0) throw new ArgumentException("Neplatný parametr identifikátor souboru."); if (String.IsNullOrEmpty(userName)) throw new ArgumentException("Neplatný parametr jméno uživatele."); if (String.IsNullOrEmpty(computer)) throw new ArgumentException("Neplatný parametr název počítače."); ScanFileRepository repository = new ScanFileRepository(); //kontrola, jestli uzivatel j*z neco nezpracovava ScanFileFilter filter = new ScanFileFilter() { UserName = userName, Status = StatusCode.InProgress }; if (repository.Select(filter).Count > 0) throw new ApplicationException(String.Format("Nelze stáhnout naskenovaný obsah, uživatel '{0}' již zpracovává obsah.", userName)); //kontrola existence naskenovaneho souboru ScanFile result = repository.Select(scanFileID); if (result == null) throw new ApplicationException(String.Format("Soubor (ID={0}) neexistuje.", scanFileID)); //kontrola ulozenych parametrov if (result.PartOfBook != PartOfBook.TableOfContents) throw new ApplicationException(String.Format("Soubor (ID={0}) není typ pro OCR zpracování.", result.ScanFileID)); if (result.UseOCR == false) throw new ApplicationException(String.Format("Soubor (ID={0}) není určen pro OCR zpracování.", result.ScanFileID)); if (result.Status != StatusCode.Scanned) throw new ApplicationException(String.Format("Soubor (ID={0}) nemá status naskenován.", result.ScanFileID)); //nacitanie souboru naskenovaneho obsahu byte[] image = null; string filePath = null; try { filePath = result.GetScanFilePath(); image = ImageFunctions.ReadFile(filePath); } catch (Exception ex) { throw new ApplicationException(String.Format("Nepodařilo se načíst naskenovaný soubor '{0}' z disku: {1}.", filePath, ex.Message)); } //ulozenie operace do databazy using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required)) { try { result.Modified = DateTime.Now; result.Comment = comment.Left(1000); result.Status = StatusCode.InProgress; repository.Update(result); LogOperation(result.ScanFileID, userName, computer, result.Modified, result.Comment, result.Status); ts.Complete(); } catch (Exception ex) { throw new ApplicationException(String.Format("Nepodařilo se uložit data souboru (ID={0}) do databáze.", scanFileID), ex); } } return image; }