Exemplo n.º 1
0
        private static void AddExternalSignatureInfoToBlock(StateBlock signingBlock, Sungero.Domain.Shared.ISignature signature, int?versionNumber, IOfficialDocument document)
        {
            var subject       = Docflow.PublicFunctions.Module.GetSignatureCertificate(signature.GetDataSignature()).SubjectName.Format(true);
            var parsedSubject = ParseSignatureSubject(subject);

            signingBlock.AddLabel(ApprovalReviewAssignments.Resources.SignatureBlockFormat(parsedSubject.JobTitle,
                                                                                           Docflow.Server.ModuleFunctions.GetCertificateOwnerShortName(parsedSubject),
                                                                                           parsedSubject.OrganizationName,
                                                                                           parsedSubject.TIN),
                                  Functions.Module.CreateHeaderStyle());
            signingBlock.AddLineBreak();
            signingBlock.AddLabel(Constants.Module.SeparatorText, Docflow.PublicFunctions.Module.CreateSeparatorStyle());
            signingBlock.AddLineBreak();

            var exchangeServiceName = GetOriginalExchangeServiceNameByDocument(document);

            signingBlock.AddLabel(ApprovalReviewAssignments.Resources.DocumentSignedByCounterpartyIsExchangeServiceNoteFormat(exchangeServiceName),
                                  Docflow.PublicFunctions.Module.CreateNoteStyle());

            var number      = versionNumber.HasValue ? versionNumber.Value.ToString() : string.Empty;
            var numberLabel = string.Format("{0} {1}", ApprovalReviewAssignments.Resources.StateViewVersion, number);

            Functions.Module.AddInfoToRightContent(signingBlock, numberLabel, Docflow.PublicFunctions.Module.CreateNoteStyle());

            // Добавить информацию о валидности подписи.
            AddValidationInfoToBlock(signingBlock, signature);

            // Установить иконку.
            signingBlock.AssignIcon(Docflow.ApprovalReviewAssignments.Resources.ExternalSignatureIcon, StateBlockIconSize.Small);

            signingBlock.DockType = DockType.Bottom;
        }
Exemplo n.º 2
0
        private static void AddSignatureInfoToBlock(StateBlock signingBlock, Sungero.Domain.Shared.ISignature signature, int?versionNumber)
        {
            // Добавить подписавшего.
            var signatory = Sungero.Company.Employees.As(signature.Signatory);

            if (signatory != null)
            {
                signingBlock.AddLabel(string.Format("{0} {1}", signatory.JobTitle, Company.PublicFunctions.Employee.GetShortName(signatory, false)), Functions.Module.CreateHeaderStyle());
            }
            else
            {
                signingBlock.AddLabel(signature.Signatory.Name, Functions.Module.CreateHeaderStyle());
            }

            // Добавить дату подписания.
            var signDate = signature.SigningDate.FromUtcTime().ToUserTime();

            signingBlock.AddLabel(string.Format("{0}: {1}",
                                                OfficialDocuments.Resources.StateViewDate.ToString(),
                                                Functions.Module.ToShortDateShortTime(signDate)),
                                  Functions.Module.CreatePerformerDeadlineStyle());

            // Добавить замещаемого.
            var substitutedUser = GetSubstitutedEmployee(signature);

            if (!string.IsNullOrEmpty(substitutedUser))
            {
                signingBlock.AddLineBreak();
                signingBlock.AddLabel(substitutedUser);
            }

            // Добавить комментарий пользователя.
            var comment = GetSignatureComment(signature);

            if (!string.IsNullOrEmpty(comment))
            {
                signingBlock.AddLineBreak();
                signingBlock.AddLabel(Constants.Module.SeparatorText, Docflow.PublicFunctions.Module.CreateSeparatorStyle());
                signingBlock.AddLineBreak();

                var commentStyle = Functions.Module.CreateNoteStyle();
                signingBlock.AddLabel(comment, commentStyle);
            }

            // Добавить номер версии документа.
            var number      = versionNumber.HasValue ? versionNumber.Value.ToString() : string.Empty;
            var numberLabel = string.Format("{0} {1}", ApprovalReviewAssignments.Resources.StateViewVersion, number);

            Functions.Module.AddInfoToRightContent(signingBlock, numberLabel, Docflow.PublicFunctions.Module.CreateNoteStyle());

            // Добавить информацию о валидности подписи.
            AddValidationInfoToBlock(signingBlock, signature);

            // Установить иконку.
            SetIconToBlock(signingBlock, signature);
        }
Exemplo n.º 3
0
        private static void AddValidationInfoToBlock(StateBlock block, Sungero.Domain.Shared.ISignature signature)
        {
            var redTextStyle   = Functions.Module.CreateStyle(Sungero.Core.Colors.Common.Red);
            var greenTextStyle = Functions.Module.CreateStyle(Sungero.Core.Colors.Common.Green);
            var separator      = ". ";

            var errorValidationText = string.Empty;
            var validationInfo      = GetValidationInfo(signature);

            if (validationInfo.IsInvalidCertificate)
            {
                errorValidationText += ApprovalReviewAssignments.Resources.StateViewCertificateIsNotValid + separator;
            }

            if (validationInfo.IsInvalidData)
            {
                errorValidationText += ApprovalReviewAssignments.Resources.StateViewDocumentIsChanged + separator;
            }

            if (validationInfo.IsInvalidAttributes)
            {
                errorValidationText += ApprovalReviewAssignments.Resources.StateViewSignatureAttributesNotValid + separator;
            }

            // Если нет ошибок - выйти.
            if (string.IsNullOrWhiteSpace(errorValidationText))
            {
                return;
            }

            block.AddLineBreak();
            block.AddLabel(errorValidationText, redTextStyle);

            // Для подписи с невалидными атрибутами добавить информацию, что тело небыло изменено.
            if (validationInfo.IsInvalidAttributes && !validationInfo.IsInvalidData)
            {
                var trueValidationText = ApprovalReviewAssignments.Resources.StateViewDocumentIsValid + separator;
                block.AddLabel(trueValidationText, greenTextStyle);
            }
        }