public void Handle(StudyReviewedEvent e)
        {
            var study = _studyRepository.GetById(e.StudyId);

            // TODO: Separate validation rules into its own object so that they can be managed separately
            var validationExceptions = _validationRules.SelectMany(vr => vr.Validate(study));

            if (!validationExceptions.Any())
            {
                _eventPublisher.Publish(new StudyAutoValidatedEvent(study.Id));
            }
            else
            {
                // TODO: Abstract relationship between possible validation exceptions
                //       and the exception events they raise.
                var validationException = validationExceptions.FirstOrDefault();
                _eventPublisher.Publish(new BadStudyAccessionEvent(study.Id, study.AccessionNumber, validationException.Message));
            }
        }
Exemple #2
0
 public void Apply(StudyReviewedEvent e)
 {
     ApplyChange(new StudyStatusChangedEvent(Id, StudyStatus.ReviewedGuid, StudyStatus.ReviewedName));
 }