// GET: Courses/Edit/5
        public async Task <IActionResult> Edit(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            var course = _context.Course.Where(c => c.ID == id).Include(c => c.Enrollments).First();

            if (course == null)
            {
                return(NotFound());
            }

            EnrollmentsViewModel viewmodel = new EnrollmentsViewModel
            {
                course           = course,
                studentList      = new MultiSelectList(_context.Student.OrderBy(s => s.lastName), "ID", "fullName"),
                selectedStudents = course.Enrollments.Select(ss => ss.studentID)
            };


            ViewData["firstTeacherID"]  = new SelectList(_context.Teacher, "ID", "fullName", course.firstTeacherID);
            ViewData["secondTeacherID"] = new SelectList(_context.Teacher, "ID", "fullName", course.secondTeacherID);
            return(View(viewmodel));
        }
示例#2
0
        public async Task <IActionResult> AdminCreate([Bind("Year,Semester,CourseId,StudentIds")] EnrollmentsViewModel viewmodel)
        {
            if (ModelState.IsValid)
            {
                foreach (int id in viewmodel.StudentIds)
                {
                    Enrollment e = await _context.Enrollment
                                   .FirstOrDefaultAsync(e => e.StudentId == id && e.CourseId == viewmodel.CourseId &&
                                                        e.Year == viewmodel.Year && e.Semester == viewmodel.Semester);

                    if (e == null)
                    {
                        e = new Enrollment
                        {
                            StudentId = id,
                            CourseId  = viewmodel.CourseId,
                            Year      = viewmodel.Year,
                            Semester  = viewmodel.Semester
                        };

                        _context.Add(e);
                    }
                }

                await _context.SaveChangesAsync();

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

            ViewData["CourseIds"]  = new SelectList(_context.Course, "Id", "Title", viewmodel.CourseId);
            ViewData["StudentIds"] = new SelectList(_context.Student, "Id", "FullName", viewmodel.StudentIds);

            return(View(viewmodel));
        }
示例#3
0
        private void PopulateSelectLists(EnrollmentsViewModel model)
        {
            model.EnrollmentStatuses = _db.EnrollmentStatuses
                                       .OrderBy(es => es.Name)
                                       .Select(es => new SelectListItem
            {
                Text  = es.Name,
                Value = es.EnrollmentStatusId.ToString()
            })
                                       .ToList();

            model.Students = _db.Students
                             .OrderBy(s => s.LastName)
                             .ThenBy(s => s.FirstName)
                             .Select(s => new SelectListItem
            {
                Text  = $"{s.LastName}, {s.FirstName}",
                Value = s.StudentId.ToString()
            })
                             .ToList();

            model.Programs = _db.Programs
                             .Include(e => e.ProgramType)
                             .Include(e => e.Semester)
                             .Include(p => p.PointOfContactProfessional)
                             .Include(p => p.PointOfContactProfessional.Company)
                             .OrderBy(p => p.AvailabilityDate)
                             .Select(p => new SelectListItem
            {
                Text  = $"{p.PointOfContactProfessional.Company.Name} - {p.ProgramType.Name} ({p.StartDate} - {p.EndDate})",
                Value = p.ProgramId.ToString()
            })
                             .ToList();
        }
示例#4
0
        public async Task <IActionResult> Save(EnrollmentsViewModel model)
        {
            if (!ModelState.IsValid)
            {
                PopulateSelectLists(model);
                return(View("Edit", model));
            }

            if (model.EnrollmentId == default(int))
            {
                var enrollment = new Enrollments();
                model.ApplyTo(enrollment);
                _db.Enrollments.Add(enrollment);
            }
            else
            {
                var enrollment = await _db.Enrollments.FindAsync(model.EnrollmentId);

                model.ApplyTo(enrollment);
            }

            await _db.SaveChangesAsync();

            return(RedirectToAction("List"));
        }
示例#5
0
        public async Task <IActionResult> Edit(int?enrollmentId)
        {
            var enrollment = enrollmentId.HasValue
                            ? await _db.Enrollments.FindAsync(enrollmentId)
                            : new Enrollments();

            var viewModel = new EnrollmentsViewModel(enrollment);

            PopulateSelectLists(viewModel);
            return(View(viewModel));
        }
        public async Task <IActionResult> PutCourse(int id, EnrollmentsViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            if (id != model.course.ID)
            {
                return(BadRequest());
            }

            //Ne se sekjavam sto sum pravel...

            _context.Entry(model.course).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();

                IEnumerable <long>      listStudents = model.selectedStudents;
                IQueryable <Enrollment> toBeRemoved  = _context.Enrollment.Where(s => !listStudents.Contains(s.studentID) && s.courseID == id);
                _context.Enrollment.RemoveRange(toBeRemoved);

                IEnumerable <long> existStudents = _context.Enrollment.Where(s => listStudents.Contains(s.studentID) && s.courseID == id).Select(s => s.studentID);
                IEnumerable <long> newStudents   = listStudents.Where(s => !existStudents.Contains(s));
                foreach (int studentId in newStudents)
                {
                    _context.Enrollment.Add(new Enrollment {
                        studentID = studentId, courseID = id
                    });
                }

                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!CourseExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
        public async Task <IActionResult> Edit(int id, EnrollmentsViewModel viewmodel)
        {
            if (id != viewmodel.course.ID)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(viewmodel.course);
                    await _context.SaveChangesAsync();

                    IEnumerable <long>      listStudents = viewmodel.selectedStudents;
                    IQueryable <Enrollment> toBeRemoved  = _context.Enrollment.Where(s => !listStudents.Contains(s.studentID) && s.courseID == id);
                    _context.Enrollment.RemoveRange(toBeRemoved);

                    IEnumerable <long> existStudents = _context.Enrollment.Where(s => listStudents.Contains(s.studentID) && s.courseID == id).Select(s => s.studentID);
                    IEnumerable <long> newStudents   = listStudents.Where(s => !existStudents.Contains(s));
                    foreach (int studentId in newStudents)
                    {
                        _context.Enrollment.Add(new Enrollment {
                            studentID = studentId, courseID = id
                        });
                    }

                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!CourseExists(viewmodel.course.ID))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            ViewData["firstTeacherID"]  = new SelectList(_context.Teacher, "ID", "fullName", viewmodel.course.firstTeacherID);
            ViewData["secondTeacherID"] = new SelectList(_context.Teacher, "ID", "fullName", viewmodel.course.secondTeacherID);
            return(View(viewmodel));
        }