public ExecutionStatus TryPreliminaryAccept(Judge decisionBy) { if (Status == CallForSpeechStatus.PreliminaryAcceptedByJudge) { return(ExecutionStatus. LogicError("You already PreliminaryAcceptedByJudge this CallForSpeech")); } if (Status != CallForSpeechStatus.EvaluatedByMachine) { return(ExecutionStatus.LogicError("Cannot accept application that WASNT'T in EvaluatedByMachine")); } if (ScoreResult == null) { return(ExecutionStatus.LogicError("Cannot accept application before scoring")); } if (!decisionBy.CanAccept(this.Category.Id)) { return(ExecutionStatus. LogicError("Judge is from diffrent category. Can't Accept")); } Status = CallForSpeechStatus.PreliminaryAcceptedByJudge; PreliminaryDecision = new Decision(AppTime.Now(), decisionBy); return(ExecutionStatus.LogicOk()); }
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()); }
public ExecutionStatus TryReject(Judge decisionBy) { if (Status == CallForSpeechStatus.Rejected || Status == CallForSpeechStatus.AcceptedByJudge) { return(ExecutionStatus. LogicError("Cannot reject application that is already accepted or rejected")); } if (!decisionBy.CanAccept(this.Category.Id)) { return(ExecutionStatus. LogicError("Judge is from diffrent category. Can't Accept")); } Status = CallForSpeechStatus.Rejected; FinalDecision = new Decision(AppTime.Now(), decisionBy); return(ExecutionStatus.LogicOk()); }
public ExecutionStatus TryAccept(Judge decisionBy) { if (Status == CallForSpeechStatus.AcceptedByJudge) { return(ExecutionStatus. LogicError("You already Accepted this CallForSpeech")); } if (Status == CallForSpeechStatus.Rejected) { return(ExecutionStatus. LogicError("Cannot accept application that is already rejected")); } if (Status != CallForSpeechStatus.PreliminaryAcceptedByJudge) { return(ExecutionStatus. LogicError("Cannot accept application that wasn't PreliminaryAccepted FIRST")); } if (ScoreResult == null) { return(ExecutionStatus. LogicError("Cannot accept application before scoring")); } if (!decisionBy.CanAccept(this.Category.Id)) { return(ExecutionStatus. LogicError("Judge is from diffrent category. Can't Accept")); } Status = CallForSpeechStatus.AcceptedByJudge; FinalDecision = new Decision(AppTime.Now(), decisionBy); return(ExecutionStatus.LogicOk()); }