public async Task <IActionResult> PutStudent(string id, Student student) { if (id != student.IndexNumber) { return(BadRequest()); } _context.Entry(student).State = EntityState.Modified; try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!StudentExists(id)) { return(NotFound()); } else { throw; } } return(NoContent()); }
public async Task <ActionResult> PromoteStudentAsync(PromoteStudentRequest request) { var studies = await _context.Studies.FirstOrDefaultAsync(s => s.Name == request.Studies); var lastEnrollment = _context.Enrollments.AsNoTracking().OrderByDescending(e => e.IdEnrollment).First().IdEnrollment; var enrollment = _context.Enrollments.AsNoTracking().FirstOrDefault(e => e.IdStudy == studies.IdStudy && e.Semester == request.Semester); if (enrollment == null) { return(BadRequest()); } var nextEnrollment = await _context.Enrollments.FirstOrDefaultAsync(e => e.IdStudy == studies.IdStudy && e.Semester == enrollment.Semester + 1); if (nextEnrollment == null) { var newEnrolment = new Enrollment { IdEnrollment = lastEnrollment + 1, IdStudy = studies.IdStudy, Semester = enrollment.Semester + 1, StartDate = DateTime.Now }; nextEnrollment = newEnrolment; await _context.Enrollments.AddAsync(nextEnrollment); try { await _context.SaveChangesAsync(); } catch (DbUpdateException) { return(Conflict()); } } var students = await _context.Students.ToListAsync(); foreach (var s in students) { if (s.IdEnrollment == enrollment.IdEnrollment) { s.IdEnrollment = nextEnrollment.IdEnrollment; } _context.Entry(s).State = EntityState.Modified; try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { return(Conflict()); } } return(Ok("Promoted")); }