public void Process(CaseReportReceived @event) { var dataCollector = _dataCollectors.GetById(@event.DataCollectorId); var healthRisk = _healthRisks.GetById(@event.HealthRiskId); var caseReport = new CaseReportForListing(@event.CaseReportId) { Status = CaseReportStatus.Success, DataCollectorId = @event.DataCollectorId, DataCollectorDisplayName = dataCollector.DisplayName, DataCollectorRegion = dataCollector.Region, DataCollectorDistrict = dataCollector.District, DataCollectorVillage = dataCollector.Village, HealthRiskId = @event.HealthRiskId, HealthRisk = healthRisk.Name, NumberOfFemalesUnder5 = @event.NumberOfFemalesUnder5, NumberOfFemalesAged5AndOlder = @event.NumberOfFemalesAged5AndOlder, NumberOfMalesUnder5 = @event.NumberOfMalesUnder5, NumberOfMalesAged5AndOlder = @event.NumberOfMalesAged5AndOlder, Location = new Location(@event.Latitude, @event.Longitude), Timestamp = @event.Timestamp, Origin = @event.Origin, Message = @event.Message, ParsingErrorMessage = new List <string>() }; _caseReports.Save(caseReport); }
public void Process(CaseReported @event) { var caseReport = _caseReports.GetById(@event.Id); if (caseReport == null) { caseReport = new CaseReport { Id = @event.Id, DataCollectorId = @event.DataCollectorId, HealthRiskId = @event.HealthRiskId, Location = @event.Location, SubmissionTimestamp = @event.CaseOccured }; } else { caseReport.Id = @event.Id; caseReport.DataCollectorId = @event.DataCollectorId; caseReport.HealthRiskId = @event.HealthRiskId; caseReport.Location = @event.Location; caseReport.SubmissionTimestamp = @event.CaseOccured; } _caseReports.Save(caseReport); var disease = _healthRisks.GetById(caseReport.HealthRiskId) ?? new HealthRisk { Id = @event.HealthRiskId, ThresholdTimePeriodInDays = 7, ThresholdNumberOfCases = 3 }; var latestReports = _caseReports.GetCaseReportsAfterDate( DateTime.UtcNow.Subtract(TimeSpan.FromDays(disease.ThresholdTimePeriodInDays)), caseReport.HealthRiskId); if (latestReports.Count > disease.ThresholdNumberOfCases) { var alert = _alerts.Get(caseReport.HealthRiskId, caseReport.Location); if (alert == null) { alert = new Alert { Id = Guid.NewGuid(), HealthRiskId = caseReport.HealthRiskId, Location = caseReport.Location, }; } alert.CaseReports.Add(caseReport); _alerts.Save(alert); // Todo: Temporary fix - we're not supposed to do this, awaiting the new Policy building block in doLittle to be ready var stream = new UncommittedEventStream(null); stream.Append(new AlertRaised(), EventSourceVersion.Zero.NextCommit()); _uncommittedEventStreamCoordinator.Commit(TransactionCorrelationId.New(), stream); _feedbackService.SendFeedbackToDataCollecorsAndVerifiers(latestReports); } }
public void Process(CaseReportReceived @event) { var dataCollector = _dataCollectors.GetById(@event.DataCollectorId); var healthRisk = _healthRisks.GetById(@event.HealthRiskId); _caseReports.SaveCaseReport( @event.CaseReportId, dataCollector, healthRisk, @event.Message, @event.Origin, @event.NumberOfMalesUnder5, @event.NumberOfMalesAged5AndOlder, @event.NumberOfFemalesUnder5, @event.NumberOfFemalesAged5AndOlder, @event.Timestamp); }
public void Process(HealthRiskCreated @event) { var healthRisk = _healthRisks.GetById(@event.Id) ?? new HealthRisk(@event.Id); healthRisk.ReadableId = @event.ReadableId; healthRisk.Name = @event.Name; _healthRisks.Save(healthRisk); }
public async Task Process(CaseReportReceived @event) { var dataCollector = _dataCollectors.GetById(@event.DataCollectorId); var healthRisk = _healthRisks.GetById(@event.HealthRiskId); var caseReport = new CaseReportForListing(@event.CaseReportId) { Status = CaseReportStatus.Success, DataCollectorId = @event.DataCollectorId, DataCollectorDisplayName = dataCollector.DisplayName, HealthRiskId = @event.HealthRiskId, HealthRisk = healthRisk.Name, NumberOfFemalesAges0To4 = @event.NumberOfFemalesAges0To4, NumberOfFemalesAgedOver4 = @event.NumberOfFemalesAgedOver4, NumberOfMalesAges0To4 = @event.NumberOfMalesAges0To4, NumberOfMalesAgedOver4 = @event.NumberOfMalesAgedOver4, Location = new Location(@event.Latitude, @event.Longitude), Timestamp = @event.Timestamp }; await _caseReports.Save(caseReport); }
public async Task <IEnumerable <CaseReportFromUnknownDataCollectorExpanded> > Get() { var anonymousCaseReports = await _caseReportsFromUnknownDataCollectors.GetAllAsync(); // Comment from review; einari - 23rd of October 2017 // Todo: This is a N+1 query - potentially incredibly slow // an optimization would be to get all healthrisks and then // do inmemory lookups. Also moved this away from being done inside the CaseReportExtended // object - as it should not be having a relationship to repositories return(anonymousCaseReports.Select(caseReport => { var healthRisk = _healthRisks.GetById(caseReport.HealthRiskId); return new CaseReportFromUnknownDataCollectorExpanded(caseReport, healthRisk); })); }
public void Process(HealthRiskCreatedEvent @event) { var healthRisk = _healthRisks.GetById(@event.Id); if (healthRisk == null) { healthRisk = new HealthRisk() { Id = @event.Id, Name = @event.Name, Code = @event.Code }; } else { healthRisk.Id = @event.Id; healthRisk.Name = @event.Name; healthRisk.Code = @event.Code; } _healthRisks.Save(healthRisk); }
public IActionResult GetHealthRisks(Guid projectId, Guid healthRiskId) { var project = _projects.GetById(projectId); if (project != null) { var projectHealthRisk = project.HealthRisks.FirstOrDefault(v => v.HealthRiskId == healthRiskId); if (projectHealthRisk != null) { var healthRisk = _healthRisks.GetById(projectHealthRisk.HealthRiskId); return(Ok( new { HealthRiskId = healthRiskId, healthRisk.Name, projectHealthRisk.Threshold } )); } } return(NotFound()); }
public IActionResult Get(Guid id) { return(Ok(_healthRisks.GetById(id))); }
public bool IsHealthRiskExisting(Guid healthRiskId) { return(_healthRisks.GetById(healthRiskId) != null); }
public HealthRisk Get(Guid id) { return(_healthRisks.GetById(id)); }