Ejemplo n.º 1
0
        public Task <List <KeyValue> > GetHoursPerWeekPerSemester(UniDegreeType uniDegreeType)
        {
            var degreeRestriction = "";

            switch (uniDegreeType)
            {
            case UniDegreeType.Bachelor:
                degreeRestriction = "WHERE Semester.Bachelor = 1";
                break;

            case UniDegreeType.Master:
                degreeRestriction = "WHERE Semester.Master = 1";
                break;

            case UniDegreeType.Both:
                degreeRestriction = "";
                break;
            }

            var query = $@"
SELECT SemesterName as Key, SUM(HoursPerWeek) as Value
FROM StudentEvent
LEFT JOIN Semester ON StudentEvent.SemesterID = Semester.Id
{degreeRestriction}
GROUP BY SemesterID			
";

            return(_connection.QueryAsync <KeyValue>(query));
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Gibt an welche Noten wie oft geschrieben worden sind.
        /// </summary>
        /// <returns>The grade info.</returns>
        public Task <List <Grade> > GetMoreDetailedGradeInfo(UniDegreeType uniDegreeType)
        {
            var degreeRestriction = GetRestriction(uniDegreeType);

            var query = $@"
SELECT GradeAsNumber as GradeDescription, COUNT(GradeAsNumber) as Count, Enddate
FROM StudentExam 
WHERE GradeAsNumber IS NOT NULL
{degreeRestriction}
GROUP BY GradeAsNumber
";

            return(_connection.QueryAsync <Grade>(query));
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Liste aller Noten im Bachelor
        /// </summary>
        /// <returns>The grade info.</returns>
        public Task <List <Grade> > GetGrades(UniDegreeType uniDegreeType)
        {
            var degreeRestriction = GetRestriction(uniDegreeType);

            var query = $@"
SELECT GradeAsNumber as GradeDescription, Enddate
FROM StudentExam 
LEFT JOIN Semester ON StudentExam.SemesterID = Semester.Id
WHERE GradeAsNumber IS NOT NULL
{degreeRestriction}
ORDER BY Enddate ASC
";

            return(_connection.QueryAsync <Grade>(query));
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Gibt an welche Notengruppen (also sehr gut umfasst 1.0 und 1.3) wie oft geschrieben worden sind.
        /// </summary>
        /// <returns>The grade info.</returns>
        public Task <List <Grade> > GetGradeInfo(UniDegreeType uniDegreeType)
        {
            var degreeRestriction = GetRestriction(uniDegreeType);

            var query = $@"
SELECT GradeDescription, COUNT(GradeDescription) as Count
FROM StudentExam 
LEFT JOIN Semester ON StudentExam.SemesterID = Semester.Id
WHERE GradeAsNumber IS NOT NULL
{degreeRestriction}
GROUP BY GradeDescription
";

            return(_connection.QueryAsync <Grade>(query));
        }
Ejemplo n.º 5
0
        public Task <List <KeyValue> > GetAvgGradePerSemester(UniDegreeType uniDegreeType)
        {
            var degreeRestriction = GetRestriction(uniDegreeType);

            var query = $@"
SELECT AVG(GradeAsNumber) as Value, Semester.Id, Semester.Name as Key
FROM StudentExam 
LEFT JOIN Semester ON StudentExam.SemesterID = Semester.Id
WHERE GradeAsNumber IS NOT NULL
{degreeRestriction}
AND StudentExam.StatusSystem IS '1'
GROUP BY Semester.Id
ORDER BY Id ASC		
";

            return(_connection.QueryAsync <KeyValue>(query));
        }
Ejemplo n.º 6
0
        private string GetRestriction(UniDegreeType uniDegreeType)
        {
            var degreeRestriction = "";

            switch (uniDegreeType)
            {
            case UniDegreeType.Bachelor:
                degreeRestriction = "AND Semester.Bachelor = 1";
                break;

            case UniDegreeType.Master:
                degreeRestriction = "AND Semester.Master = 1";
                break;

            case UniDegreeType.Both:
                degreeRestriction = "";
                break;
            }
            return(degreeRestriction);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Gibt die ungewichtete Durchschnittsnote an.
        /// Unbestandene und entschuldigte Kurse werden nicht mit einberechnet.
        /// Parameter gibt an ob Bachelor oder Master
        /// </summary>
        /// <returns>The average grade.</returns>
        public async Task <float> GetAverageGrade(UniDegreeType uniDegreeType)
        {
            var degreeRestriction = GetRestriction(uniDegreeType);

            var query = $@"
SELECT AVG(GradeAsNumber)
FROM StudentExam 
LEFT JOIN Semester ON StudentExam.SemesterID = Semester.Id
WHERE GradeAsNumber IS NOT NULL
{degreeRestriction}
AND StudentExam.StatusSystem IS '1'
";

            try
            {
                return(await _connection.ExecuteScalarAsync <float>(query));
            }
            catch (NullReferenceException)
            {
                // Wird geworfen wenn es noch keine Noten gibt
                return(0f);
            }
        }