Ejemplo n.º 1
0
        public static DisciplineCollection ConfiguredDisciplines(string className, short year)
        {
            using (HonglornDb db = new HonglornDb())
            {
                DisciplineCollection collection = (from c in db.DisciplineCollection
                                                   where c.ClassName == className &&
                                                   c.Year == year
                                                   select c).SingleOrDefault();

                if (collection != null)
                {
                    // Pre-load properties; otherwise they won't be available after the context is disposed.
                    IEnumerable <Expression <Func <DisciplineCollection, Discipline> > > references = new Expression <Func <DisciplineCollection, Discipline> >[]
                    {
                        c => c.MaleSprint,
                        c => c.MaleJump,
                        c => c.MaleThrow,
                        c => c.MaleMiddleDistance,
                        c => c.FemaleSprint,
                        c => c.FemaleJump,
                        c => c.FemaleThrow,
                        c => c.FemaleMiddleDistance
                    };

                    foreach (Expression <Func <DisciplineCollection, Discipline> > reference in references)
                    {
                        db.Entry(collection).Reference(reference).Load();
                    }
                }

                return(collection);
            }
        }
        public void GetDisciplinesTest()
        {
            DisciplineCollection             disciplineCollection = new DisciplineCollection(new DisciplineRepository(new DisciplineTestContext()));
            ReadOnlyCollection <IDiscipline> disciplines          = disciplineCollection.GetDisciplines() as ReadOnlyCollection <IDiscipline>;

            Assert.IsNotNull(disciplines, "There should be a correct list of disciplines");
            Assert.AreEqual(2, disciplines.Count, "There should be 2 disciplines");
            Assert.AreEqual("Formula 1", disciplines[0].Name, "There should be Formula 1 first");
            Assert.AreEqual("Nascar", disciplines[1].Name, "There should be Nascar second");
        }
Ejemplo n.º 3
0
        public static ICollection <Result> GetResults(string course, short year)
        {
            ICollection <Result> results;

            ICollection <Student> students = GetStudents(course, year);
            string className = GetClassName(course);

            using (HonglornDb db = new HonglornDb())
            {
                DisciplineCollection disciplines = (from d in db.DisciplineCollection
                                                    where d.ClassName == className &&
                                                    d.Year == year
                                                    select d).SingleOrDefault();

                if (disciplines == null)
                {
                    throw new DataException($"No disciplines have been configured for class {className} in year {year}. Therefore, no results can be calculated.");
                }

                Discipline[] disciplineArray = new[] { disciplines.MaleSprint, disciplines.MaleJump, disciplines.MaleThrow, disciplines.MaleMiddleDistance, disciplines.FemaleSprint, disciplines.FemaleJump, disciplines.FemaleThrow, disciplines.FemaleMiddleDistance };

                if (disciplineArray.All(d => d is TraditionalDiscipline))
                {
                    TraditionalDisciplineCollection disciplineCollection = new TraditionalDisciplineCollection()
                    {
                        MaleSprint           = disciplines.MaleSprint as TraditionalDiscipline,
                        MaleJump             = disciplines.MaleJump as TraditionalDiscipline,
                        MaleThrow            = disciplines.MaleThrow as TraditionalDiscipline,
                        MaleMiddleDistance   = disciplines.MaleMiddleDistance as TraditionalDiscipline,
                        FemaleSprint         = disciplines.FemaleSprint as TraditionalDiscipline,
                        FemaleJump           = disciplines.FemaleJump as TraditionalDiscipline,
                        FemaleThrow          = disciplines.FemaleThrow as TraditionalDiscipline,
                        FemaleMiddleDistance = disciplines.FemaleMiddleDistance as TraditionalDiscipline
                    };

                    results = CalculateTraditionalResults(students, year, disciplineCollection);
                }
                else if (disciplineArray.All(d => d is CompetitionDiscipline))
                {
                    throw new NotImplementedException();
                }
                else
                {
                    throw new DataException($"For class {className} in year {year}, some configured disciplines are traditional disciplines, while other disciplines are competition disciplines. A result can only be calculated when all disciplines are of the same type.");
                }
            }

            return(results);
        }
Ejemplo n.º 4
0
        public DisciplineStatistics()
        {
            SelectSemesterForm form = new SelectSemesterForm();

            if (form.ShowDialog() != System.Windows.Forms.DialogResult.OK)
            {
                return;
            }

            _disciplines = new DisciplineCollection();
            _students    = new StudentCollection();

            _school_year = form.SchoolYear;
            _semester    = form.Semester;

            _wait = new ManualResetEvent(false);

            _disciplineLoader                       = new BackgroundWorker();
            _disciplineLoader.DoWork               += new DoWorkEventHandler(_disciplineLoader_DoWork);
            _disciplineLoader.RunWorkerCompleted   += new RunWorkerCompletedEventHandler(_disciplineLoader_RunWorkerCompleted);
            _disciplineLoader.ProgressChanged      += new ProgressChangedEventHandler(_disciplineLoader_ProgressChanged);
            _disciplineLoader.WorkerReportsProgress = true;
            _disciplineLoader.RunWorkerAsync();
        }
        public void RemoveDisciplineDatabaseErrorTest()
        {
            DisciplineCollection disciplineCollection = new DisciplineCollection(new DisciplineRepository(new DisciplineTestConnectionErrorContext()));

            disciplineCollection.RemoveDiscipline(new Discipline("Name"));
        }
        public void GetDisciplinesDatabaseErrorTest()
        {
            DisciplineCollection disciplineCollection = new DisciplineCollection(new DisciplineRepository(new DisciplineTestConnectionErrorContext()));

            disciplineCollection.GetDisciplines();
        }
        public void AddDisciplineEmptyDisciplineTest()
        {
            DisciplineCollection disciplineCollection = new DisciplineCollection(new DisciplineRepository(new DisciplineTestAddEmptyDisciplineContext()));

            disciplineCollection.AddDiscipline("Name");
        }