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)); }
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)); }