public async Task <IActionResult> Create([Bind("Id,CourseId,DisplayName,UrlName")] CourseUnit courseUnit) { if (ModelState.IsValid) { // url address if (String.IsNullOrEmpty(courseUnit.UrlName)) { // leave all courseUnit.UrlName = courseUnit.DisplayName.ConvertToUrlName(); if (courseUnit.UrlName.Length < 4) // error if too small { ModelState.AddModelError("UrlName", "Choose a url name which contains only numbers, digits, hyphen and underbar, or choose a course name with more english chars."); return(View(courseUnit)); } } // put the unit as last in the course courseUnit.InCourseOrder = await _context.Units.Where(u => u.CourseId == courseUnit.CourseId).MaxAsync(u => u.InCourseOrder) + 1; _context.Add(courseUnit); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } ViewData["CourseId"] = new SelectList(_context.Courses, "Id", "DisplayName", courseUnit.CourseId); return(View(courseUnit)); }
private async Task <CoursePage> GetPage(string course, string unit, string page) { if (String.IsNullOrWhiteSpace(course)) { return(null); } Course c = await _context.Courses.Include(c => c.Units) .ThenInclude(u => u.Pages) .FirstOrDefaultAsync(c => c.UrlName == course); if (c == null) { return(null); } c = c.SortUnitsAndPages(); // if no unit url name specified, get first page of first unit if (String.IsNullOrWhiteSpace(unit)) { return(c.Units.ElementAt(0).Pages.ElementAt(0)); } CourseUnit u = c.Units.FirstOrDefault(u => u.UrlName == unit); if (u == null) { return(null); } // if no page url name, return first page if (String.IsNullOrWhiteSpace(page)) { return(u.Pages.ElementAt(0)); } return(u.Pages.FirstOrDefault(p => p.UrlName == page)); }
public async Task <IActionResult> Edit(int id, [Bind("Id,CourseId,DisplayName,InCourseOrder,UrlName")] CourseUnit courseUnit) { if (id != courseUnit.Id) { return(NotFound()); } if (ModelState.IsValid) { try { // url address if (String.IsNullOrEmpty(courseUnit.UrlName)) { // leave all courseUnit.UrlName = courseUnit.DisplayName.ConvertToUrlName(); if (courseUnit.UrlName.Length < 4) // error if too small { ModelState.AddModelError("UrlName", "Choose a url name which contains only numbers, digits, hyphen and underbar, or choose a course name with more english chars."); return(View(courseUnit)); } } _context.Update(courseUnit); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!CourseUnitExists(courseUnit.Id)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } ViewData["CourseId"] = new SelectList(_context.Courses, "Id", "Description", courseUnit.CourseId); return(View(courseUnit)); }