コード例 #1
0
        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());
        }
コード例 #2
0
ファイル: EnrollmentsController.cs プロジェクト: s7452/Ex10
        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"));
        }