Esempio n. 1
0
        public virtual void DocumentForReviewGroupAdded(Sungero.Workflow.Interfaces.AttachmentAddedEventArgs e)
        {
            var document = OfficialDocuments.As(e.Attachment);

            // Задать тему.
            using (TenantInfo.Culture.SwitchTo())
                _obj.Subject = Docflow.PublicFunctions.Module.TrimSpecialSymbols(DocumentReviewTasks.Resources.Consideration, document.Name);

            // Задать адресата.
            if (IncomingDocumentBases.Is(document))
            {
                _obj.Addressee = IncomingDocumentBases.As(document).Addressee;
            }
            if (Memos.Is(document))
            {
                _obj.Addressee = Memos.As(document).Addressee;
            }

            // Задать срок рассмотрения.
            var addressee = _obj.Addressee ?? Users.Current;

            _obj.Deadline = Docflow.PublicFunctions.DocumentKind.GetConsiderationDate(document.DocumentKind, addressee) ??
                            Calendar.Now.AddWorkingDays(addressee, Functions.Module.Remote.GetDocumentReviewDefaultDays());
            if (!_obj.State.IsCopied)
            {
                Docflow.PublicFunctions.Module.SynchronizeAddendaAndAttachmentsGroup(_obj.AddendaGroup, _obj.DocumentForReviewGroup.OfficialDocuments.FirstOrDefault());
            }

            Docflow.PublicFunctions.OfficialDocument.DocumentAttachedInMainGroup(document, _obj);

            // Добавить вложения.
            Docflow.PublicFunctions.OfficialDocument.AddRelatedDocumentsToAttachmentGroup(document, _obj.OtherGroup);
        }
        /// <summary>
        /// Проверить адресата.
        /// </summary>
        /// <param name="document">Документ.</param>
        /// <param name="task">Задача на согласование.</param>
        /// <returns>True, если адресат совпадает.</returns>
        private Structures.ConditionBase.ConditionResult CheckAddressee(IOfficialDocument document, IApprovalTask task)
        {
            if (Memos.Is(document))
            {
                var addressee = Memos.As(document).Addressee;
                if (addressee != null)
                {
                    return(Structures.ConditionBase.ConditionResult.Create(_obj.Addressees.Any(c => Equals(c.Addressee, addressee)), string.Empty));
                }
                else
                {
                    return(Structures.ConditionBase.ConditionResult.Create(null, Conditions.Resources.MemoAddresseeIsEmpty));
                }
            }

            return(Structures.ConditionBase.ConditionResult.Create(null, Conditions.Resources.CheckAddresseePossibleOnlyToMemo));
        }