public void Evaluate(ScoringRules rules)
        {
            if (Status != CallForSpeechStatus.New)
            {
                throw new ApplicationException("Cannot accept application that isn't new");
            }

            ScoreResult = rules.Evaluate(this);
            if (!ScoreResult.IsRed())
            {
                Status = CallForSpeechStatus.EvaluatedByMachine;
            }
            else
            {
                Status = CallForSpeechStatus.Rejected;
            }
        }
        public ExecutionStatus TryEvaluate(ScoringRules rules)
        {
            if (Status != CallForSpeechStatus.New)
            {
                return(ExecutionStatus.LogicError("Cannot accept application that isn't new"));
            }

            ScoreResult = rules.Evaluate(this);
            if (!ScoreResult.IsRed())
            {
                Status = CallForSpeechStatus.EvaluatedByMachine;
            }
            else
            {
                Status = CallForSpeechStatus.Rejected;
            }
            return(ExecutionStatus.LogicOk());
        }