Exemplo n.º 1
0
        public void Delete(int id)
        {
            CategoryCourse categoryCourse = db.CategoryCourses.Find(id);

            db.CategoryCourses.Remove(categoryCourse);
        }
Exemplo n.º 2
0
 public void Update(CategoryCourse categoryCourse)
 {
     db.Entry(categoryCourse).State = EntityState.Modified;
 }
Exemplo n.º 3
0
 public void Add(CategoryCourse categoryCourse)
 {
     db.CategoryCourses.Add(categoryCourse);
 }
Exemplo n.º 4
0
        /// <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);
        }
Exemplo n.º 5
0
        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"));
        }
Exemplo n.º 6
0
        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"));
        }