public void EvaluateApproach(Approach approach) { this.deviationObserver.RemoveDeviation(DeviationMessageConstants.APPR_ESA_REQUIRED_KEY); bool hasEsa = this.approachService.HasEsa(approach.Id); if (approach.Criteria.Value == CriteriaType.NATO && !hasEsa) { Deviation deviation = this.deviationFactory.CreateDeviation( DeviationMessageConstants.APPR_ESA_REQUIRED_FOR_NATO, DeviationMessageConstants.APPR_ESA_REQUIRED_FOR_NATO_SEVERITY); deviationObserver.PublishDeviation(DeviationMessageConstants.APPR_ESA_REQUIRED_KEY, deviation); } }
// Requires the double delegate method to process a domain service (per Vaughn Vernon). public void Evaluate( IDeviationObserver deviationObserver, IDeviationFactory deviationFactory) { if (this.Criteria.Value == CriteriaType.NATO) { bool result = this.Esa == null; if (result) { Deviation deviation = deviationFactory.CreateDeviation( DeviationMessageConstants.APPR_ESA_REQUIRED_FOR_NATO, DeviationMessageConstants.APPR_ESA_REQUIRED_FOR_NATO_SEVERITY); deviationObserver.PublishDeviation(DeviationMessageConstants.APPR_ESA_REQUIRED_KEY, deviation); } } }