Esempio n. 1
0
        public async Task <IActionResult> GetSchueler([FromRoute] string benutzername)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var schueler = await _context.Schueler
                           .Include(s => s.Person)
                           .Where(s => s.Person.Benutzername == benutzername)
                           .Include(x => x.FachSchueler).ThenInclude(x => x.Fach)
                           .Include(x => x.KlasseSchueler).ThenInclude(x => x.Klasse).ThenInclude(x => x.Jahrgang)
                           .Include(x => x.Noten)
                           .SingleOrDefaultAsync();

            if (schueler == null)
            {
                return(NotFound());
            }

            var result = new SchuelerSicht {
                Id = schueler.SchuelerID
            };

            foreach (var klasse in schueler.KlasseSchueler.Select(x => x.Klasse))
            {
                var klasseSicht = new KlasseSicht {
                    Jahrgang = klasse.Jahrgang.Name, Klasse = klasse.Name
                };

                var feacher = schueler.FachSchueler.Select(x => x.Fach);
                var noten   = schueler.Noten;

                foreach (var fach in feacher)
                {
                    klasseSicht.Faecher
                    .Add(new FachSicht
                    {
                        Name  = fach.Name,
                        Noten = noten
                                .Where(x => x.FachID == fach.FachID)
                                .Select(x => new NoteSicht {
                            Datum = x.Datum, Note = x.Note, Typ = x.Typ
                        })
                                .ToList()
                    });
                }
                double feacherDurchschnittSumme = 0;
                foreach (var fachSicht in klasseSicht.Faecher)
                {
                    fachSicht.Durchschnitt    = (double)fachSicht.Noten.Sum(x => x.Typ == "Schulaufgabe" ? x.Note * 2 : x.Note) / fachSicht.Noten.Sum(x => x.Typ == "Schulaufgabe" ? 2 : 1);
                    feacherDurchschnittSumme += fachSicht.Durchschnitt;
                }
                klasseSicht.Durchschnitt = feacherDurchschnittSumme / klasseSicht.Faecher.Count;
                result.Klassen.Add(klasseSicht);
            }

            return(Ok(result));
        }
Esempio n. 2
0
        public async Task <IActionResult> GetLehrerSicht([FromRoute] string benutzername)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var lehrer = await _context.Lehrer
                         .Include(x => x.Person)
                         .Where(x => x.Person.Benutzername == benutzername)
                         .Include(x => x.KlasseLehrer).ThenInclude(x => x.Klasse.Jahrgang)
                         .Include(x => x.FachLehrer).ThenInclude(x => x.Fach).ThenInclude(x => x.Jahrgang)
                         .Include(x => x.FachLehrer).ThenInclude(x => x.Fach.FachSchueler).ThenInclude(x => x.Schueler).ThenInclude(x => x.Person)
                         .SingleOrDefaultAsync();

            if (lehrer == null)
            {
                return(NotFound());
            }

            var result = new LehrerSicht {
                Id = lehrer.LehrerID
            };

            foreach (var klasse in lehrer.KlasseLehrer.Select(x => x.Klasse))
            {
                if (!result.Jahrgaenge.TryGetValue(klasse.Jahrgang.Name, out List <KlasseSicht> jahrgangKlassen))
                {
                    result.Jahrgaenge.Add(klasse.Jahrgang.Name, (jahrgangKlassen = new List <KlasseSicht>()));
                }

                var klasseSicht = new KlasseSicht {
                    Klasse = klasse.Name
                };
                foreach (var fach in lehrer.FachLehrer.Select(x => x.Fach))
                {
                    klasseSicht.Faecher.Add(new FachSicht
                    {
                        Id       = fach.FachID,
                        Name     = fach.Name,
                        Schueler = fach.FachSchueler
                                   .Select(x => new SchuelerSicht
                        {
                            Id    = x.SchuelerID,
                            Name  = $"{x.Schueler.Person.Vorname} {x.Schueler.Person.Nachname}",
                            Noten = _context.Notenerhebung
                                    .Where(y => y.SchuelerID == x.SchuelerID && y.FachID == x.FachID)
                                    .Select(n => new NoteSicht {
                                Note = n.Note, Datum = n.Datum, Typ = n.Typ
                            }).ToList()
                        }).ToList()
                    });
                }

                jahrgangKlassen.Add(klasseSicht);
            }

            return(Ok(result));
        }