Пример #1
0
        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;
        }
Пример #2
0
        /// <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);
        }
Пример #3
0
        /// <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);
        }
Пример #4
0
        /// <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);
        }
Пример #5
0
 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);
     }
 }
Пример #6
0
        public List<ScanFile> GetList(ScanFileFilter filter)
        {
            if (filter == null) throw new ArgumentNullException("filter");

            ScanFileRepository repository = new ScanFileRepository();
            return repository.Select(filter);
        }
Пример #7
0
        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;
        }
Пример #8
0
        public List<ScanFile> GetBySysNo(string sysno)
        {
            ScanFileFilter filter = new ScanFileFilter();
            filter.SysNo = sysno;

            ScanFileRepository repository = new ScanFileRepository();
            return repository.Select(filter);
        }
Пример #9
0
        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();
        }
Пример #10
0
        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;
        }