/// <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; }