/// <inheritdoc/> public void Process(TextMessage message) { var parsingResult = _textMessageParser.Parse(message); var dataCollectorId = _dataCollectors.GetIdByPhoneNumber(message.OriginNumber); var unknown = dataCollectorId == DataCollectorId.NotSet; var caseReportId = Guid.NewGuid(); var caseReporting = _caseReportingRepository.Get(caseReportId); if (!parsingResult.IsValid) { ReportInvalidMessage(message, parsingResult, dataCollectorId, unknown, caseReporting); return; } // Todo: Should we have a validation check if we actually get a health risk id var healthRiskId = _healthRisks.GetIdFromReadableId(parsingResult.Numbers[0]); if (!parsingResult.HasMultipleCases) { var sex = (Sex)parsingResult.Numbers[1]; var age = parsingResult.Numbers[2]; ReportSingle(message, dataCollectorId, caseReporting, healthRiskId, sex, age, unknown); } else { var malesUnder5 = parsingResult.Numbers[1]; var malesOver5 = parsingResult.Numbers[2]; var femalesUnder5 = parsingResult.Numbers[3]; var femalesOver5 = parsingResult.Numbers[4]; ReportMultiple(message, dataCollectorId, unknown, caseReporting, healthRiskId, malesUnder5, malesOver5, femalesUnder5, femalesOver5); } }
/// <inheritdoc/> public void Process(TextMessage message) { var parsingResult = _textMessageParser.Parse(message); var isTextMessageFormatValid = parsingResult.IsValid; var dataCollector = _dataCollectors.GetByPhoneNumber(message.OriginNumber); var unknownDataCollector = dataCollector == null; var caseReportId = Guid.NewGuid(); var caseReporting = _caseReportingRepository.Get(caseReportId); if (!isTextMessageFormatValid && unknownDataCollector) { caseReporting.ReportInvalidReportFromUnknownDataCollector( message.OriginNumber, message.Message, parsingResult.ErrorMessages, message.Sent); return; } if (!isTextMessageFormatValid && !unknownDataCollector) { caseReporting.ReportInvalidReport( dataCollector.Id, message.OriginNumber, message.Message, parsingResult.ErrorMessages, message.Sent); return; } var healthRiskReadableId = parsingResult.HealthRiskReadableId; var healthRiskId = _healthRisks.GetIdFromReadableId(healthRiskReadableId); if (healthRiskId == HealthRiskId.NotSet) { var errorMessages = new List <string> { $"Unable to find health risk, since there are no health risks with a readable id of {healthRiskReadableId}" }; if (unknownDataCollector) { caseReporting.ReportInvalidReportFromUnknownDataCollector( message.OriginNumber, message.Message, errorMessages, message.Sent); return; } caseReporting.ReportInvalidReport( dataCollector.Id, message.OriginNumber, message.Message, errorMessages, message.Sent); return; } if (unknownDataCollector) { caseReporting.ReportFromUnknownDataCollector( message.OriginNumber, healthRiskId, parsingResult.MalesUnder5, parsingResult.MalesAged5AndOlder, parsingResult.FemalesUnder5, parsingResult.FemalesAged5AndOlder, message.Sent, message.Message ); return; } caseReporting.Report( dataCollector.Id, healthRiskId, message.OriginNumber, parsingResult.MalesUnder5, parsingResult.MalesAged5AndOlder, parsingResult.FemalesUnder5, parsingResult.FemalesAged5AndOlder, dataCollector.Location.Longitude, dataCollector.Location.Latitude, message.Sent, message.Message ); }
/// <inheritdoc/> public void Process(TextMessage message) { var parsingResult = _textMessageParser.Parse(message); var dataCollector = _dataCollectors.GetByPhoneNumber(message.OriginNumber); var caseReportId = Guid.NewGuid(); var caseReporting = _caseReportingRepository.Get(caseReportId); if (!parsingResult.IsValid) { ReportInvalidMessage(message, parsingResult.ErrorMessages, dataCollector, caseReporting, message.Sent); return; } var healthRiskReadableId = parsingResult.Numbers[0]; var healthRiskId = _healthRisks.GetIdFromReadableId(healthRiskReadableId); if (healthRiskId == Guid.Empty) { ReportInvalidMessage( message, new List <string> { $"Unable to find health risk, since there are no health risks with a readable id of {healthRiskReadableId}" }, dataCollector, caseReporting, message.Sent); return; } if (!parsingResult.HasMultipleCases) { var malesAges0To4 = 0; var malesAgedOver4 = 0; var femalesAges0To4 = 0; var femalesAgedOver4 = 0; if (parsingResult.Numbers.Length == 3) { var sex = (Sex)parsingResult.Numbers[1]; var ageGroup = parsingResult.Numbers[2]; malesAges0To4 = ageGroup == 1 && sex == Sex.Male ? 1 : 0; malesAgedOver4 = ageGroup == 2 && sex == Sex.Male ? 1 : 0; femalesAges0To4 = ageGroup == 1 && sex == Sex.Female ? 1 : 0; femalesAgedOver4 = ageGroup == 2 && sex == Sex.Female ? 1 : 0; } Report( message, dataCollector, caseReporting, healthRiskId, malesAges0To4, malesAgedOver4, femalesAges0To4, femalesAgedOver4, message.Sent); } else { var malesAges0To4 = parsingResult.Numbers[1]; var malesAgedOver4 = parsingResult.Numbers[2]; var femalesAges0To4 = parsingResult.Numbers[3]; var femalesAgedOver4 = parsingResult.Numbers[4]; Report( message, dataCollector, caseReporting, healthRiskId, malesAges0To4, malesAgedOver4, femalesAges0To4, femalesAgedOver4, message.Sent); } }