/// <summary>
        /// Конструктор на основе статусов получателей
        /// </summary>
        /// <param name="statuses"></param>
        public UntypedDocumentMultiFlowStatus(UntypedDocumentFlowStatus[] statuses)
        {
            // Вычислить статус доставки
            var deliveredCount = statuses.Count(r => r.DeliveryStatus == DocumentDeliveryStatus.DeliveredToRecipient);
            var multiDeliveryStatus = DocumentMultiDeliveryStatus.SentToRecipients;
            if (deliveredCount == statuses.Length)
            {
                multiDeliveryStatus = DocumentMultiDeliveryStatus.DeliveredToRecipients;
            }
            else if (Array.Exists(statuses, s => s.DeliveryStatus == DocumentDeliveryStatus.NotDeliveredToRecipient))
            {
                multiDeliveryStatus = DocumentMultiDeliveryStatus.NotDeliveredToRecipients;
            }
            else if (Array.Exists(statuses, s => s.DeliveryStatus == DocumentDeliveryStatus.RecievedByService))
            {
                multiDeliveryStatus = DocumentMultiDeliveryStatus.RecievedByService;
            }
            else if (deliveredCount > 0)
            {
                multiDeliveryStatus = DocumentMultiDeliveryStatus.PartlyDeliveredToRecipients;
            }

            // Вычислить статус подписания
            var signedCount = statuses.Count(r => r.SignStatus == DocumentSignStatus.Signed);
            var multiSignStatus = DocumentMultiSignStatus.WaitingForSign;
            if (signedCount == statuses.Length)
            {
                multiSignStatus = DocumentMultiSignStatus.Signed;
            }
            else if (Array.Exists(statuses, s => s.SignStatus == DocumentSignStatus.SignRejected))
            {
                multiSignStatus = DocumentMultiSignStatus.SignRejected;
            }
            else if (Array.Exists(statuses, s => s.SignStatus == DocumentSignStatus.NoSignNeeded))
            {
                multiSignStatus = DocumentMultiSignStatus.NoSignNeeded;
            }
            else if (signedCount > 0)
            {
                multiSignStatus = DocumentMultiSignStatus.PartlySigned;
            }

            this.MultiDeliveryStatus = multiDeliveryStatus;
            this.MultiSignStatus = multiSignStatus;
            this.DeliveredCount = deliveredCount;
            this.SignedCount = signedCount;
            this.RecipientsCount = statuses.Length;
        }
 protected bool Equals(UntypedDocumentFlowStatus other)
 {
     return(DeliveryStatus == other.DeliveryStatus && SignStatus == other.SignStatus && string.Equals(AdditionalStatus, other.AdditionalStatus));
 }
 protected bool Equals(UntypedDocumentFlowStatus other)
 {
     return DeliveryStatus == other.DeliveryStatus && SignStatus == other.SignStatus && string.Equals(AdditionalStatus, other.AdditionalStatus);
 }