コード例 #1
0
        public void Process(TrainingReportConvertedToLive notification, EventSourceId caseReportId)
        {
            var transaction = _commandContextManager.EstablishForCommand(new Dolittle.Runtime.Commands.CommandRequest(Guid.NewGuid(), Guid.Empty, 0, new Dictionary <string, object>()));

            var report        = _trainingReports.GetById((CaseReportId)caseReportId.Value);
            var aggregateRoot = _caseReportingRepository.Get(caseReportId);

            var reportFromKnownDataCollector = report.DataCollectorId != null && report.DataCollectorId != CaseReportId.NotSet;
            var validReport = report.HealthRiskId != null && report.HealthRiskId != HealthRiskId.NotSet;

            if (reportFromKnownDataCollector && validReport)
            {
                aggregateRoot.Report(
                    report.DataCollectorId.Value, report.HealthRiskId.Value, report.Origin, report.NumberOfMalesUnder5,
                    report.NumberOfMalesAged5AndOlder, report.NumberOfFemalesUnder5, report.NumberOfFemalesAged5AndOlder,
                    report.Location.Longitude, report.Location.Latitude, report.Timestamp, report.Message
                    );
            }
            else if (reportFromKnownDataCollector && !validReport)
            {
                aggregateRoot.ReportInvalidReport(
                    report.DataCollectorId.Value, report.Origin, report.Message, report.Location.Longitude,
                    report.Location.Latitude, report.ParsingErrorMessage, report.Timestamp
                    );
            }
            else if (!reportFromKnownDataCollector && validReport)
            {
                aggregateRoot.ReportFromUnknownDataCollector(
                    report.Origin, report.HealthRiskId.Value, report.NumberOfMalesUnder5, report.NumberOfMalesAged5AndOlder,
                    report.NumberOfFemalesUnder5, report.NumberOfFemalesAged5AndOlder, report.Timestamp, report.Message
                    );
            }
            else if (!reportFromKnownDataCollector && !validReport)
            {
                aggregateRoot.ReportInvalidReportFromUnknownDataCollector(
                    report.Origin, report.Message, report.ParsingErrorMessage, report.Timestamp
                    );
            }
            transaction.Commit();
        }
 public void Process(TrainingReportConvertedToLive @event, EventSourceId caseReportId)
 {
     _caseReports.Delete(_caseReports.GetById(caseReportId.Value));
 }