Exemplo n.º 1
0
 /// <summary>
 /// Назначить скан документа для записи в перечне.
 /// </summary>
 /// <param name="findModel">Запись перечня.</param>
 /// <param name="folders">Список путей к папкам, содержащим сканы.</param>
 /// <param name="primaryModel">Основная запись перечня, к которой относится запись.</param>
 private void SetScan(FindModel findModel, FindModel primaryModel)
 {
     if (findModel.IsPrimary)
     {
         SetPrimaryScan(findModel);
     }
     else
     {
         SetSecondaryScan(findModel, primaryModel);
     }
 }
Exemplo n.º 2
0
        /// <summary>
        /// Установить скан основного докумена.
        /// </summary>
        /// <param name="findModel">Запись перечня.</param>
        private void SetPrimaryScan(FindModel findModel)
        {
            Regex actRegex = new Regex(@"[0-2]AJ\.(\d{5,6})\.[C|С]-2\.\d{3}.\d", RegexOptions.IgnoreCase);

            if (actRegex.IsMatch(findModel.DocNumber))
            {
                findModel.IsAct = true;
            }

            var findFolderNameModel = GetDigitsFromText(findModel.DocNumber);

            foreach (var folder in baseSubFoldersPath)
            {
                var folderNameDisk     = Path.GetFileName(folder);
                var findFolderNameDisk = GetDigitsFromText(folderNameDisk);
                if (findFolderNameDisk.Contains(findFolderNameModel) || findFolderNameModel.Contains(findFolderNameDisk))
                {
                    findModel.FindFolder        = folder;
                    findModel.FindFolderIsExist = true;

                    // Назначить папку как из ИСУП исходя из длины ее названия.
                    // Из исупа папка выгружается с именем следующего формата: "Акт № 1AJ.78717.С-2.0563",
                    // при наименовании папок вручную, применяется формат "78717".
                    if (folderNameDisk.Length > 5)
                    {
                        findModel.IsIsup               = true;
                        findModel.FindFolder           = folder;
                        findModel.ScanFileNameVariants = Directory.GetFiles(folder);

                        var scanFileName = Directory.GetFiles(folder).FirstOrDefault();
                        SetScanFile(findModel, scanFileName);
                        SetNewDocName(findModel);
                        SetNewFileName(findModel);
                    }
                    else
                    {
                        findModel.IsIsup = false;
                        FindAndSetScan(findModel, folder, true);
                    }
                    break;
                }
            }
            if (string.IsNullOrEmpty(findModel.FindFolder))
            {
                if (!findModel.IsAct)
                {
                    findModel.FindFolder = baseFolderPath;
                    FindAndSetScan(findModel, baseFolderPath);
                }
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// Получить сканы для документов перечня.
        /// </summary>
        /// <param name="findModels"></param>
        /// <returns></returns>
        public IEnumerable <FindModel> GetMatchingResults(IEnumerable <FindModel> findModels)
        {
            var       models       = findModels.ToArray();
            FindModel primaryModel = null;
            var       groupId      = 0;

            foreach (var model in models)
            {
                SetScan(model, primaryModel);
                if (model.IsPrimary)
                {
                    groupId++;
                    primaryModel = model;
                }
                model.GroupId = groupId;
            }
            return(models);
        }
Exemplo n.º 4
0
 /// <summary>
 /// Установить скан второстепенного документа.
 /// </summary>
 /// <param name="findModel"></param>
 /// <param name="primaryModel"></param>
 private void SetSecondaryScan(FindModel findModel, FindModel primaryModel)
 {
     if (primaryModel == null)
     {
         return;
     }
     if (primaryModel.IsIsup)
     {
         var findFolder = Directory.GetDirectories(primaryModel.FindFolder).FirstOrDefault();
         findModel.FindFolder = findFolder;
         FindAndSetScan(findModel, findFolder);
     }
     else
     {
         var findFolder = primaryModel.FindFolder;
         findModel.FindFolder = findFolder;
         FindAndSetScan(findModel, findFolder);
     }
 }