public async Task HandleAsync(IMessageContext context, ReportAddedToIncident e)
        {
            string version = null;

            foreach (var contextCollection in e.Report.ContextCollections)
            {
                if (!contextCollection.Properties.TryGetValue(AppAssemblyVersion, out version))
                {
                    continue;
                }
            }

            if (version == null)
            {
                return;
            }

            var isNewIncident = e.Incident.ReportCount <= 1;
            var versionEntity = await _repository.FindVersionAsync(e.Incident.ApplicationId, version)
                                ?? new ApplicationVersion(e.Incident.ApplicationId, e.Incident.ApplicationName,
                                                          version);

            if (versionEntity.Version != version)
            {
                versionEntity = new ApplicationVersion(e.Incident.ApplicationId, e.Incident.ApplicationName, version);
            }
            versionEntity.UpdateReportDate();

            if (versionEntity.Id == 0)
            {
                await _repository.CreateAsync(versionEntity);
            }
            else
            {
                await _repository.UpdateAsync(versionEntity);
            }


            _repository.SaveIncidentVersion(e.Incident.Id, versionEntity.Id);

            await IncreaseReportCounter(versionEntity.Id, isNewIncident);
        }
        public async Task HandleAsync(ReportAddedToIncident e)
        {
            var assemblyName = GetVersionAssemblyName(e.Incident.ApplicationId);

            if (assemblyName == null)
            {
                var notice = new AddNotification(CoderrClaims.RoleSysAdmin,
                                                 "There is no version assembly configured for " + e.Incident.ApplicationName +
                                                 ". Go to 'System Settings'/Versions and configure one")
                {
                    HoldbackInterval = TimeSpan.FromDays(3),
                    NotificationType = NotifyNoVersion
                };
                await _commandBus.ExecuteAsync(notice);

                return;
            }

            var collection = Enumerable.FirstOrDefault(e.Report.ContextCollections, x => x.Name == "Assemblies");

            if (collection == null)
            {
                return;
            }

            if (!collection.Properties.TryGetValue(assemblyName, out string version))
            {
                var notice = new AddNotification(CoderrClaims.RoleSysAdmin,
                                                 "Assembly " + assemblyName + " is configured for application " + e.Incident.ApplicationName +
                                                 ". It do however not exist. Configure a new one at 'System Settings'/Versions.")
                {
                    HoldbackInterval = TimeSpan.FromDays(3),
                    NotificationType = NotifyNotRecognizedVersion
                };
                await _commandBus.ExecuteAsync(notice);

                return;
            }

            var isNewIncident = e.Incident.ReportCount <= 1;
            var versionEntity = await _repository.FindVersionAsync(e.Incident.ApplicationId, version)
                                ?? new ApplicationVersion(e.Incident.ApplicationId, e.Incident.ApplicationName,
                                                          version);

            if (versionEntity.Version != version)
            {
                versionEntity = new ApplicationVersion(e.Incident.ApplicationId, e.Incident.ApplicationName, version);
            }
            versionEntity.UpdateReportDate();

            if (versionEntity.Id == 0)
            {
                await _repository.CreateAsync(versionEntity);
            }
            else
            {
                await _repository.UpdateAsync(versionEntity);
            }

            await IncreaseReportCounter(versionEntity.Id, isNewIncident);
        }