コード例 #1
0
 public bool CanSubstituteOnExam(Professor newAdministrator, Subject onSubject)
 {
     return(Exams.FirstOrNone(app => app.ForExam.OnSubject == onSubject)
            .Map(app => app.For(app.ForExam.Substitute(newAdministrator)))
            .Map(Validate)
            .Reduce(false));
 }
コード例 #2
0
        public void SubstituteOnExam(Professor newAdministrator, Subject onSubject)
        {
            if (!this.CanSubstituteOnExam(newAdministrator, onSubject))
            {
                throw new ArgumentException();
            }

            this.Exams
            .Select(app => app.ForExam.OnSubject == onSubject ?
                    app.For(app.ForExam.Substitute(newAdministrator)) :
                    app)
            .ToList();
        }
コード例 #3
0
        // Returns factory function for the exam application
        public Func <IExamApplication> GetExamApplicationFactory(Subject examOn, Professor administratedBy)
        {
            ExamApplicationBuilder builder = new ExamApplicationBuilder();

            builder.OnSubject(examOn);
            builder.AdministratedBy(administratedBy);
            builder.TakenBy(this);

            if (builder.CanBuild())
            {
                return(builder.Build);
            }

            // think of something smarter;
            throw new ArgumentException();
        }