Exemplo n.º 1
0
        public async Task <IActionResult> Enroll(int?id)
        {
            var course = _context.Course.Where(m => m.Id == id).Include(m => m.Students).First();

            EnrollUnEnrollVM Vmodel = new EnrollUnEnrollVM
            {
                StudentsList     = new MultiSelectList(_context.Student, "Id", "FullName"),
                SelectedStudents = course.Students.Select(sa => sa.StudentId)
            };

            ViewData["Id"]          = id;
            ViewData["CourseTitle"] = _context.Course.Where(c => c.Id == id).Select(c => c.Title).FirstOrDefault();

            return(View(Vmodel));
        }
Exemplo n.º 2
0
        public async Task <IActionResult> Upsert(int id, EnrollUnEnrollVM Vmodel)
        {
            if (id != Vmodel.NewEnrollStudent.CourseId)
            {
                return(NotFound());
            }

            //enroll students
            if (Vmodel.NewEnrollStudent.FinishDate == null)
            {
                IEnumerable <int> ListStudents  = Vmodel.SelectedStudents;
                IEnumerable <int> ExistStudents = _context.Enrollment.Where
                                                      (s => ListStudents.Contains(s.StudentId) && s.CourseId == id).Select(s => s.StudentId);
                IEnumerable <int> NewStudents = ListStudents.Where(s => !ExistStudents.Contains(s));

                foreach (int studentId in NewStudents)
                {
                    _context.Enrollment.Add(new Enrollment
                    {
                        StudentId = studentId,
                        CourseId  = id,
                        Year      = Vmodel.NewEnrollStudent.Year,
                        Semester  = Vmodel.NewEnrollStudent.Semester
                    }
                                            );
                }

                await _context.SaveChangesAsync();
            }
            else
            {
                //otpisi student so vnesuvanje na FinishDate
                var enrollments = _context.Enrollment.Where
                                      (e => e.CourseId == id).Include(e => e.Course).Include(e => e.Student);

                foreach (Enrollment enroll in enrollments)
                {
                    enroll.FinishDate = Vmodel.NewEnrollStudent.FinishDate;
                }

                _context.Enrollment.UpdateRange(enrollments);
                await _context.SaveChangesAsync();
            }

            return(RedirectToAction(nameof(Index)));
        }