public void Handle(GetMonitoringCommand command) { try { var requests = _monitoring.Items<DataProvider>(DataProvider.SelectStatement()).ToArray(); if (!requests.Any()) return; var payloads = _monitoring.Items<DataProviderEventLog>(DataProviderEventLog.SelectStatement()).ToArray(); if (!payloads.Any()) return; var errors = _billing.Items<DataProviderError>( DataProviderError.SelectStatement(), new {@RequestIds = requests.Select(s => s.RequestId).ToArray()}).ToArray(); if (!errors.Any()) errors = new DataProviderError[] {}; MonitoringResponse = requests.Select( s => new DataProviderDto(s.RequestId, payloads .Where(f => f.Id == s.RequestId) .Select(c => new SerializedPayload(c.Payload, c.CommitSequence)).ToList(), s.Date, false, s.ElapsedTime, s.PackageVersion, s.PackageName, s.DataProviderCount).DeserializePayload() .SetState(GetErrorCount(errors.FirstOrDefault(f => f.RequestId == s.RequestId)))) .ToList(); } catch (Exception ex) { Log.ErrorFormat("An error occured in the Monitoirng Handler because of {0}", ex, ex.Message); MonitoringResponse = Enumerable.Empty<DataProviderDto>().ToList(); } }
private static int GetErrorCount(DataProviderError error) { return error == null ? 0 : error.ErrorCount; }