public QueueJobSummaryResult CheckQueueJobSummary()
        {
            var returnValue = new QueueJobSummaryResult();

            var baseType = typeof(JobData);
            var typeList = AppDomain.CurrentDomain.GetAssemblies().ToList()
                           .SelectMany(s => s.GetTypes())
                           .Where(p => baseType.IsAssignableFrom(p) &&
                                  p.IsClass).ToList();
            DateTime oneHourAgo = DateTime.UtcNow.AddMinutes(-60);

            foreach (var type in typeList)
            {
                bool any = _documentSession.Advanced.LuceneQuery <object>()
                           .WhereEquals("@metadata.Raven-Entity-Name", _documentSession.Advanced.DocumentStore.Conventions.GetTypeTagName(type))
                           .Any();
                if (any)
                {
                    var item = new QueueJobSummaryResultItem
                    {
                        QueueDataType = type
                    };
                    item.ErrorCount = _documentSession.Advanced.LuceneQuery <object>()
                                      .WhereEquals("@metadata.Raven-Entity-Name", _documentSession.Advanced.DocumentStore.Conventions.GetTypeTagName(type))
                                      .AndAlso().WhereEquals("Status", EnumJobStatus.Error)
                                      .WaitForNonStaleResultsAsOfNow(TimeSpan.FromSeconds(120))
                                      .QueryResult.TotalResults;
                    item.InProcessCount = _documentSession.Advanced.LuceneQuery <object>()
                                          .WhereEquals("@metadata.Raven-Entity-Name", _documentSession.Advanced.DocumentStore.Conventions.GetTypeTagName(type))
                                          .AndAlso().WhereEquals("Status", EnumJobStatus.InProcess)
                                          .WaitForNonStaleResultsAsOfNow(TimeSpan.FromSeconds(120))
                                          .QueryResult.TotalResults;
                    item.SuspectInProcessCount = _documentSession.Advanced.LuceneQuery <object>()
                                                 .WhereEquals("@metadata.Raven-Entity-Name", _documentSession.Advanced.DocumentStore.Conventions.GetTypeTagName(type))
                                                 .AndAlso().WhereEquals("Status", EnumJobStatus.InProcess)
                                                 .AndAlso().WhereGreaterThan("QueuedDateTimeUtc", oneHourAgo)
                                                 .WaitForNonStaleResultsAsOfNow(TimeSpan.FromSeconds(120))
                                                 .QueryResult.TotalResults;
                    returnValue.Items.Add(item);
                }
            }
            return(returnValue);
        }
        public QueueJobSummaryResult CheckQueueJobSummary()
        {
            var returnValue = new QueueJobSummaryResult();

            var baseType = typeof(JobData);
            var typeList = AppDomain.CurrentDomain.GetAssemblies().ToList()
                .SelectMany(s => s.GetTypes())
                .Where(p => baseType.IsAssignableFrom(p)
                        && p.IsClass).ToList();
            DateTime oneHourAgo = DateTime.UtcNow.AddMinutes(-60);
            foreach (var type in typeList)
            {
                bool any = _documentSession.Advanced.LuceneQuery<object>()
                            .WhereEquals("@metadata.Raven-Entity-Name", _documentSession.Advanced.DocumentStore.Conventions.GetTypeTagName(type))
                            .Any();
                if (any)
                {
                    var item = new QueueJobSummaryResultItem
                    {
                        QueueDataType = type
                    };
                    item.ErrorCount = _documentSession.Advanced.LuceneQuery<object>()
                                .WhereEquals("@metadata.Raven-Entity-Name", _documentSession.Advanced.DocumentStore.Conventions.GetTypeTagName(type))
                                .AndAlso().WhereEquals("Status", EnumJobStatus.Error)
                                .WaitForNonStaleResultsAsOfNow(TimeSpan.FromSeconds(120))
                                .QueryResult.TotalResults;
                    item.InProcessCount = _documentSession.Advanced.LuceneQuery<object>()
                                .WhereEquals("@metadata.Raven-Entity-Name", _documentSession.Advanced.DocumentStore.Conventions.GetTypeTagName(type))
                                .AndAlso().WhereEquals("Status", EnumJobStatus.InProcess)
                                .WaitForNonStaleResultsAsOfNow(TimeSpan.FromSeconds(120))
                                .QueryResult.TotalResults;
                    item.SuspectInProcessCount = _documentSession.Advanced.LuceneQuery<object>()
                                .WhereEquals("@metadata.Raven-Entity-Name", _documentSession.Advanced.DocumentStore.Conventions.GetTypeTagName(type))
                                .AndAlso().WhereEquals("Status", EnumJobStatus.InProcess)
                                .AndAlso().WhereGreaterThan("QueuedDateTimeUtc", oneHourAgo)
                                .WaitForNonStaleResultsAsOfNow(TimeSpan.FromSeconds(120))
                                .QueryResult.TotalResults;
                    returnValue.Items.Add(item);
                }
            }
            return returnValue;
        }