public PromoteStudentsResponse PromoteStudents(PromoteStudentsRequest request) { var response = new PromoteStudentsResponse(); response.setStatus(400, "Error"); var _studies = _context.Studies.Where(s => s.Name == request.Studies).FirstOrDefault(); if (_studies == null) { response.setStatus(404, "ERROR: studies do not exist"); return(response); } ; var _enrollment = _context.Enrollment .Where(a => a.IdStudy == _studies.IdStudy && a.Semester == request.Semester) .OrderByDescending(s => s.StartDate).FirstOrDefault(); if (_enrollment == null) { response.setStatus(404, "ERROR: semester and studies do not exist in database"); return(response); } ; Console.WriteLine("here:" + _enrollment.IdEnrollment); var _enrollment_next = _context.Enrollment.Where(p => p.Semester == _enrollment.Semester + 1).FirstOrDefault(); if (_enrollment_next == null) { _enrollment_next = new Enrollment() { IdEnrollment = _context.Enrollment.Max(p => p.IdEnrollment) + 1, Semester = _enrollment.Semester + 1, IdStudy = _enrollment.IdStudy, StartDate = DateTime.Now.Date }; _context.Add(_enrollment_next); _context.SaveChanges(); } var _students = _context.Student.Where(s => s.IdEnrollment == _enrollment.IdEnrollment); foreach (var s in _students) { s.IdEnrollment = _enrollment_next.IdEnrollment; } _context.SaveChanges(); response.Semester = _enrollment_next.Semester; response.StartDate = _enrollment_next.StartDate.ToString(); response.StudiesName = _studies.Name; response.setStatus(201, "Students are promoted on the next semester"); return(response); }