/// <summary>
        /// Проверить является ли таблица штампом и вернуть его тип
        /// </summary>
        public static StampType GetStampType(ITableElementWord tableWord)
        {
            var hasFullCode      = false;
            var hasShortMarker   = false;
            var hasMainMarkers   = false;
            var hasChangeMarkers = false;

            foreach (var cell in tableWord.CellsElementWord)
            {
                if (CheckFieldType.IsFieldFullCode(cell, tableWord))
                {
                    hasFullCode = true;
                }
                if (MarkersAdditionalStamp.MarkerContain(cell.TextNoSpaces))
                {
                    hasShortMarker = true;
                }
                if (MarkersFullStamp.MarkerContain(cell.TextNoSpaces))
                {
                    hasMainMarkers = true;
                }
                if (MarkersChangeNoticeStamp.MarkerContain(cell.TextNoSpaces))
                {
                    hasChangeMarkers = true;
                }

                if (hasFullCode && (hasMainMarkers || hasChangeMarkers))
                {
                    break;
                }
            }

            return(hasFullCode switch
            {
                true when hasMainMarkers => StampType.Full,
                true when hasShortMarker => StampType.Shortened,
                _ when hasChangeMarkers => StampType.ChangeNotice,
                false => StampType.Unknown,
                _ => StampType.Unknown,
            });
예제 #2
0
 /// <summary>
 /// Получить поля штампа
 /// </summary>
 private IReadOnlyList <IStampTextFieldWord> GetFields() =>
 TableStamp?.CellsElementWord?.
 Where(cell => !String.IsNullOrWhiteSpace(cell.TextNoSpaces)).
 Select(cell => new StampTextFieldWord(cell, CheckFieldType.GetStampFieldType(cell, TableStamp))).
 Where(field => field.StampFieldType != StampFieldType.Unknown).
 ToList();
예제 #3
0
 /// <summary>
 /// Получить класс с ответственным лицом и подписью по строке Word для штампа согласования
 /// </summary>
 private IResultAppValue <IStampApprovalChange> GetStampApprovalChangeFromRow(IRowElementWord approvalChangeRow) =>
 CheckFieldType.GetDepartmentType(approvalChangeRow.CellsElement[ApprovalChangeRowIndexes.ACTION_TYPE].MaxLengthWord).
 Map(departmentType => GetSignatureInformation(approvalChangeRow.CellsElement[ApprovalChangeRowIndexes.RESPONSIBLE_PERSON].MaxLengthWord,
                                               PersonId, departmentType,
                                               approvalChangeRow.CellsElement[ApprovalChangeRowIndexes.ACTION_TYPE].MaxLengthWord)).
 ResultValueOk(signature => GetStampApprovalChangeFromFields(approvalChangeRow, signature, _stampIdentifier));