public void Delete(int id) { CategoryCourse categoryCourse = db.CategoryCourses.Find(id); db.CategoryCourses.Remove(categoryCourse); }
public void Update(CategoryCourse categoryCourse) { db.Entry(categoryCourse).State = EntityState.Modified; }
public void Add(CategoryCourse categoryCourse) { db.CategoryCourses.Add(categoryCourse); }
/// <summary> /// Updates the category filters in the database by comparing new filters with the existing filters /// </summary> /// <param name="db">Database context</param> /// <param name="currentFilter">Current category filter</param> /// <param name="nodes">New html nodes (basically new filters)</param> /// <param name="doc">Current Html document</param> /// <param name="isTopLevel">Determines if we are in the first run (so at the top level of the "tree")</param> /// <param name="cat">Course catalog</param> /// <param name="allCourses">List of existing courses</param> /// <returns></returns> private async Task <Dictionary <HtmlNode, CategoryFilter> > UpdateCategoriesInDatabase(DatabaseContext db, CategoryFilter currentFilter, IEnumerable <HtmlNode> nodes, HtmlDocument doc, bool isTopLevel, CourseCatalog cat, List <Course> allCourses) { var dict = new Dictionary <HtmlNode, CategoryFilter>(); List <CategoryFilter> topLevelCategories = null; foreach (var node in nodes) { var title = node.InnerText.Trim(); if (isTopLevel) { if (topLevelCategories == null) { topLevelCategories = db.CategoryFilters.IncludeAll().ToList(); } var category = topLevelCategories.FirstOrDefault(n => n.IsTopLevel && n.CourseCatalog.InternalID == cat.InternalID && n.Title == title); if (category == null) { category = new CategoryFilter { Title = title, CourseCatalog = cat, IsTopLevel = isTopLevel }; db.Entry(category).State = EntityState.Added; } dict[node] = category; } else { var filter = currentFilter.Subcategories.FirstOrDefault(c => c.Title == title); if (filter == null) { //we found a new category await _writeLock.WaitAsync(); filter = new CategoryFilter { Title = title, IsTopLevel = isTopLevel, CourseCatalog = cat }; currentFilter?.Subcategories.Add(filter); var entry = db.ChangeTracker.Entries().FirstOrDefault(e => e.Entity == currentFilter); if (entry?.State != EntityState.Added) { entry.State = EntityState.Modified; } db.Entry(filter).State = EntityState.Added; _writeLock.Release(); } dict[node] = filter; } } var courses = await GetCourseList(db, doc, cat, allCourses, allowMultipleIdPasses : true); if (courses.Any() && currentFilter != null) { foreach (var course in courses) { await _writeLock.WaitAsync(); if (!currentFilter.ParsedCourses.Any(c => c.CourseId == course.Id)) { var catCourse = new CategoryCourse { Category = currentFilter, CourseId = course.Id }; db.Entry(catCourse).State = EntityState.Added; currentFilter.ParsedCourses.Add(catCourse); } _writeLock.Release(); } } return(dict); }
public ActionResult StoreAddCourse(string courseName, List <int> listCategory, string introduceVideo, string price, string image, string description, List <string> listBenefit, List <LessonInfomation> listLesson) { var newCourse = new Course(); newCourse.CourseName = courseName; newCourse.Price = Convert.ToDouble(price); newCourse.Description = description; newCourse.IntroduceVideo = introduceVideo; newCourse.Image = image; var id = User.Identity.GetUserId(); ApplicationUser appUser = new ApplicationUser(); appUser = db.Users.Find(id); newCourse.TeacherId = id; newCourse.ApplicationUser = appUser; newCourse.Status = (int)Course.CourseStatus.Non_Active; newCourse.CreatedAt = DateTime.Now; newCourse.ActiveCode = "AC" + DateTime.Now.Ticks.ToString(); List <CategoryCourse> listCategoryCourse = new List <CategoryCourse>(); foreach (var item in listCategory) { var categoryCourse = new CategoryCourse(); categoryCourse.CategoryId = item; categoryCourse.CourseId = newCourse.CourseId; listCategoryCourse.Add(categoryCourse); } List <Benefit> listBenefits = new List <Benefit>(); foreach (var item in listBenefit) { if (!String.IsNullOrEmpty(item)) { var benefit = new Benefit(); benefit.name = item; listBenefits.Add(benefit); } } if (listBenefits.Count > 0) { newCourse.Benefits = listBenefits; } List <ResourceCourse> listResourceCourses = new List <ResourceCourse>(); foreach (var item in listLesson) { if (item.Title != null && item.LinkVideo != null) { var resourceCourse = new ResourceCourse(); resourceCourse.Index = item.Index; resourceCourse.Title = item.Title; resourceCourse.LinkVideo = item.LinkVideo; listResourceCourses.Add(resourceCourse); } } if (listResourceCourses.Count > 0) { newCourse.ResourceCourses = listResourceCourses; } newCourse.CategoryCourses = listCategoryCourse; db.Courses.Add(newCourse); try { db.SaveChanges(); TempData["AddSuccess"] = "Success"; } catch (Exception e) { Console.WriteLine(e); throw; } return(RedirectToAction("AddCourse")); }
public ActionResult StoreUpdateCourse(int courseId, string courseName, List <int> listCategory, string introduceVideo, string price, string image, string description, List <string> listBenefit, List <LessonInfomation> listLesson) { string currentUserId = User.Identity.GetUserId(); var currentCourse = db.Courses.Find(courseId); if (currentCourse == null || currentCourse.DeletedAt != null || currentCourse.Status == (int)Course.CourseStatus.Deleted || currentCourse.ApplicationUser.Id != currentUserId) { return(RedirectToAction("NotFound", "Home")); } currentCourse.CourseName = courseName; currentCourse.Price = Convert.ToDouble(price); currentCourse.Description = description; currentCourse.IntroduceVideo = introduceVideo; currentCourse.Image = image; currentCourse.Status = (int)Course.CourseStatus.Non_Active; currentCourse.UpdatedAt = DateTime.Now; db.CategoryCourses.RemoveRange(currentCourse.CategoryCourses); List <CategoryCourse> listCategoryCourse = new List <CategoryCourse>(); foreach (var item in listCategory) { var categoryCourse = new CategoryCourse(); categoryCourse.CategoryId = item; categoryCourse.CourseId = currentCourse.CourseId; listCategoryCourse.Add(categoryCourse); } db.Benefits.RemoveRange(currentCourse.Benefits); List <Benefit> listBenefits = new List <Benefit>(); foreach (var item in listBenefit) { if (!String.IsNullOrEmpty(item)) { var benefit = new Benefit(); benefit.name = item; listBenefits.Add(benefit); } } if (listBenefits.Count > 0) { currentCourse.Benefits = listBenefits; } db.ResourceCourses.RemoveRange(currentCourse.ResourceCourses); List <ResourceCourse> listResourceCourses = new List <ResourceCourse>(); foreach (var item in listLesson) { if (item.Title != null && item.LinkVideo != null) { var resourceCourse = new ResourceCourse(); resourceCourse.Index = item.Index; resourceCourse.Title = item.Title; resourceCourse.LinkVideo = item.LinkVideo; listResourceCourses.Add(resourceCourse); } } if (listResourceCourses.Count > 0) { currentCourse.ResourceCourses = listResourceCourses; } currentCourse.CategoryCourses = listCategoryCourse; db.Courses.AddOrUpdate(currentCourse); try { db.SaveChanges(); TempData["AddSuccess"] = "Success"; } catch (Exception e) { Console.WriteLine(e); throw; } return(RedirectToAction("AddCourse")); }