public void Process(ProjectHealthRiskThresholdUpdate @event) { //TODO: Assumes that project and health risk exists. Should be verified in BusinessValidator _projects.Update(p => p.Id == @event.ProjectId, Builders <Project> .Update.Set( p => p.HealthRisks.FirstOrDefault(risk => risk.HealthRiskId == @event.HealthRiskId) .Threshold, @event.Threshold)); var project = _projects.GetOne(p => p.Id == @event.ProjectId); var healthRisk = project.HealthRisks.FirstOrDefault(risk => risk.HealthRiskId == @event.HealthRiskId); _projectHealthRiskVersions.Append(project.Id, healthRisk, System.DateTimeOffset.UtcNow); }
public void Process(ProjectHealthRiskThresholdUpdate @event) { var project = _projects.GetById(@event.ProjectId); var healthRisk = project.HealthRisks.Single(r => r.HealthRiskId == @event.HealthRiskId); healthRisk.Threshold = @event.Threshold; //TODO need to be tested _projects.Update(project); var projectHealthRiskVersion = new ProjectHealthRiskVersion { ProjectId = project.Id, EffectiveFromTime = DateTimeOffset.UtcNow, HealthRisk = healthRisk }; _projectHealthRiskVersions.Insert(projectHealthRiskVersion); }
public void Process(ProjectHealthRiskThresholdUpdate @event) { var project = _projects.GetById(@event.ProjectId); var healthRisk = project.HealthRisks?.FirstOrDefault(v => v.HealthRiskId == @event.HealthRiskId); if (healthRisk == null) { healthRisk = new ProjectHealthRisk(); project.HealthRisks = (project.HealthRisks ?? new ProjectHealthRisk[0]).Union(new[] { healthRisk }) .ToArray(); } healthRisk.HealthRiskId = @event.HealthRiskId; healthRisk.Threshold = @event.Threshold; _projects.Save(project); _projectHealthRiskVersions.Append(project.Id, healthRisk, System.DateTimeOffset.UtcNow); }