public async Task <IActionResult> UpdateAsync([FromRoute] int id, Testung item) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var testung = _context.Testungen .AsNoTracking() .Include(c => c.Chapters) .ThenInclude(q => q.Questions) .Where(m => m.Id == id) .ToList(); if (testung == null) { return(NoContent()); } _mapper.Map(item, testung.FirstOrDefault()); _bl.calculateScore(testung.FirstOrDefault()); _context.Testungen.Update(testung.FirstOrDefault()); _context.SaveChanges(); QueryResponse <Testung> response = new QueryResponse <Testung>(); response.Items = testung; response.TotalRecords = testung.Count; return(Ok(testung)); }
public void calculateScore(Testung _testung) { _testung.Chapters.ForEach(chapter => { var scoreForChapter = 0; var index = 0; chapter.Questions.ForEach(question => { if (question.Type == "radio" && question.Value != "") { int qScore = -1; Int32.TryParse(question.Value, out qScore); if (qScore >= 0) { scoreForChapter += qScore; index++; } } }); chapter.Score = (scoreForChapter > 0) ? scoreForChapter / index: -1; }); }