private static void FillProcessingEntryError(ProcessingEntryError to, ErrorOverview from)
 { 
     to.Message = from.Exception != null ? from.Exception.Message : "Unknown";
     to.Timestamp = from.ErroredAt;
 }
        private void OnFixtureUpdate(IFixtureOverviewDelta fixture)
        {
            if (fixture == null)
                return;

            FixtureDetails details = new FixtureDetails {Id = fixture.Id};

            // ListenerOverview is not suitable to use here....
            // we have to get the FixtureOverview to have all data
            var overview = Supervisor.GetFixtureOverview(fixture.Id);
            FillFixtureOverview(details, overview);

            if (fixture.ListenerOverview != null)
            {
                details.IsDeleted = fixture.ListenerOverview.IsDeleted.GetValueOrDefault();
                details.IsOver = fixture.ListenerOverview.IsOver.GetValueOrDefault();
            }

            if(fixture.FeedUpdate != null)
            {
                FixtureProcessingEntry entry = new FixtureProcessingEntry();
                FillProcessingEntry(entry, fixture.FeedUpdate);
                details.AddProcessingEntry(entry);
            }

            Supervisor.Service.StreamingService.OnFixtureUpdate(details);

            if(fixture.LastError != null && fixture.LastError.IsErrored)
            {
                ProcessingEntryError error = new ProcessingEntryError
                {
                    FixtureId = fixture.Id,
                    FixtureDescription = overview.Name,
                    Sequence = fixture.LastError.Sequence
                };

                FillProcessingEntryError(error, fixture.LastError);
                Supervisor.Service.StreamingService.OnError(error);
            }
            
        }