private static void SetGroupByValue(QueueDigestPresentationObject result, TransportQueueStatistics mtrtResponse, QueueDigestGroupBy groupBy)
        {
            string groupByValue = string.Empty;

            switch (groupBy)
            {
            case QueueDigestGroupBy.NextHopDomain:
                groupByValue = mtrtResponse.NextHopDomain;
                break;

            case QueueDigestGroupBy.NextHopCategory:
                groupByValue = mtrtResponse.NextHopCategory;
                break;

            case QueueDigestGroupBy.NextHopKey:
                groupByValue = mtrtResponse.NextHopKey;
                break;

            case QueueDigestGroupBy.DeliveryType:
                groupByValue = mtrtResponse.DeliveryType;
                break;

            case QueueDigestGroupBy.Status:
                groupByValue = mtrtResponse.Status;
                break;

            case QueueDigestGroupBy.RiskLevel:
                groupByValue = mtrtResponse.RiskLevel;
                break;

            case QueueDigestGroupBy.LastError:
                groupByValue = mtrtResponse.LastError;
                break;

            case QueueDigestGroupBy.ServerName:
                groupByValue = mtrtResponse.ServerName;
                break;

            case QueueDigestGroupBy.OutboundIPPool:
                groupByValue = mtrtResponse.OutboundIPPool;
                break;

            default:
                throw new ArgumentOutOfRangeException("groupBy");
            }
            result.GroupByValue = groupByValue;
        }
        internal static QueueDigestPresentationObject Create(TransportQueueStatistics mtrtQueueAggregate, QueueDigestGroupBy groupBy)
        {
            QueueDigestPresentationObject queueDigestPresentationObject = new QueueDigestPresentationObject();

            queueDigestPresentationObject.DeferredMessageCount = mtrtQueueAggregate.DeferredMessageCount;
            queueDigestPresentationObject.IncomingRate         = mtrtQueueAggregate.IncomingRate;
            queueDigestPresentationObject.LockedMessageCount   = mtrtQueueAggregate.LockedMessageCount;
            queueDigestPresentationObject.MessageCount         = mtrtQueueAggregate.MessageCount;
            queueDigestPresentationObject.OutgoingRate         = mtrtQueueAggregate.OutgoingRate;
            QueueDigestPresentationObject.SetGroupByValue(queueDigestPresentationObject, mtrtQueueAggregate, groupBy);
            if (mtrtQueueAggregate.QueueLogs != null)
            {
                queueDigestPresentationObject.Details = new List <QueueDigestDetails>();
                foreach (TransportQueueLog details in mtrtQueueAggregate.QueueLogs)
                {
                    queueDigestPresentationObject.Details.Add(new QueueDigestDetails(details));
                }
            }
            queueDigestPresentationObject.Details.Sort(new Comparison <QueueDigestDetails>(QueueDigestPresentationObject.CompareQueueDigestDetails));
            return(queueDigestPresentationObject);
        }