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); }