private async void SetTeacherLocationViewBag(int?TeacherID = null, int?LocationID = null)
        {
            CourseDetailsVM courseMV = new CourseDetailsVM
            {
                Teachers  = await _teacherService.GetListAsync(),
                Locations = await _locationService.GetListAsync()
            };

            //var locationsFromDb = await _locationService.GetListAsync();
            //var locationVM = _mapper.Map<LocationDetailsVM>(locationsFromDb);
            //var teachersFromDb = await _teacherService.GetListAsync();
            //var teacherVM = _mapper.Map<TeacherDetailsVM>(teachersFromDb);
            if (TeacherID == null)
            {
                ViewBag.Teachers = new SelectList(courseMV.Teachers.ToList(), "Id", "TeacherName");
            }
            else
            {
                ViewBag.Teachers = new SelectList(courseMV.Teachers.ToList(), "Id", "TeacherName", TeacherID.Value);
            }

            if (LocationID == null)
            {
                ViewBag.Locations = new SelectList(courseMV.Locations.ToList(), "Id", "Street");
            }
            else
            {
                ViewBag.Locations = new SelectList(courseMV.Locations.ToList(), "Id", "Street");
            }
        }
        public async Task <IActionResult> DeleteConfirmed(CourseDetailsVM courseVM)
        {
            var courseToDelete = _mapper.Map <Course>(courseVM);
            var course         = await _courseService.DeleteAsync(courseToDelete);

            return(RedirectToAction(nameof(Index)));
        }
        public async Task <IActionResult> Create()
        {
            CourseDetailsVM courseMV = new CourseDetailsVM
            {
                Teachers  = await _teacherService.GetListAsync(),
                Locations = await _locationService.GetListAsync()
            };

            return(View(courseMV));
        }
        public async Task <IActionResult> Edit([Bind("Id, Name, DateTime, TeacherId, LocationId")] CourseDetailsVM courseVM)
        {
            if (ModelState.IsValid) //is het valid?
            {
                var courseToUpdate = _mapper.Map <Course>(courseVM);
                var updatedCourse  = await _courseService.UpdateAsync(courseToUpdate);

                var courseVMToReturn = _mapper.Map <CourseDetailsVM>(updatedCourse);
                return(RedirectToAction(nameof(Index)));
            }
            return(View(courseVM));
        }
        public async Task <IActionResult> Create([Bind("Id, Name, DateTime, TeacherId, LocationId")] CourseDetailsVM courseMV)
        {
            if (ModelState.IsValid)
            {
                var courseToAdd = _mapper.Map <Course>(courseMV);
                var course      = await _courseService.CreateAsync(courseToAdd);

                var courseVMToAdd = _mapper.Map <CourseDetailsVM>(course);

                return(RedirectToAction(nameof(Index)));
            }
            return(View(courseMV));
        }
        public async Task <IActionResult> Index(string searchString)

        {
            var courses = await _courseService.GetListAsync();

            if (!string.IsNullOrEmpty(searchString))
            {
                courses = courses.Where(s => s.Name.Contains(searchString)).ToList();
            }

            var courseVM = new CourseDetailsVM
            {
                Courses = courses.OrderBy(a => a.DateTime).ToList()
            };

            return(View(courseVM));
        }