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)); } }
public void Apply(StudyReviewedEvent e) { ApplyChange(new StudyStatusChangedEvent(Id, StudyStatus.ReviewedGuid, StudyStatus.ReviewedName)); }