예제 #1
0
        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);
        }