/// <summary> /// Feltétel kiértékelése. /// </summary> /// <param name="proxy">A hallgatót és kurzusokat összekötő proxy.</param> /// <returns>A kiértékelés eredménye.</returns> public Result Evaluate(StudentCourseProxy proxy) { Course course = proxy.Check(this.Code); if (course == null) { // Ha nem volt ilyen kurzusa return(new Result(this.LongName, false)); } else { if (this.Signature || !course.HasCompleted || (this.Exclusive && !proxy.Lock(this.Code))) { // Ha volt ilyen kurzusa, és // - aláírás kell csak belőle // - nem teljesítette // - kizárás miatt nem használható // Ez az eredmény nem módosítja az átlagot. return(new Result(this.LongName, this.Signature ? course.HasSignature : false)); } else { // Ha a kurzus használható és teljesített, // az eredmény módosítja az átlagot. return(new Result(course, !proxy.Use(this.Code))); } } }
/// <summary> /// A sorbarendezéshez a kreditsúlyozott osztályzatot használjuk. Az aláírás értéke, ahogy a nem /// teljesített tárgyé is, nulla. A kizárásos tárgyak súlyozása negatív. /// </summary> /// <param name="proxy">A hallgatókat kurzusokkal összekötő proxy.</param> /// <returns>Kreditsúlyozott átlag mint rendezőszám. [?]</returns> public double Order(StudentCourseProxy proxy) { if (!this.Signature) { Course course = proxy.Check(this.Code); if (course != null && course.HasCompleted) { return(course.Credit * course.Grade + (this.Exclusive ? -100 : 0)); } } return(0); }