public ActionResult Create()
        {
            List <SelectListItem>             ddlHierarchicalCategory  = new List <SelectListItem>();
            List <VMHierarchicalCategoryList> hierarchicalCategoryList = new List <VMHierarchicalCategoryList>();

            var allCategories = _categoryService.GetList().Where(c => c.IsActive).ToList();

            foreach (var item in allCategories.Where(c => c.ParentCategoryId == 0).ToList())
            {
                VMHierarchicalCategoryList parentCategory = new VMHierarchicalCategoryList()
                {
                    CategoryId  = item.CategoryId,
                    Name        = item.Name,
                    Description = item.Description
                };

                ddlHierarchicalCategory.Add(new SelectListItem()
                {
                    Text  = "• " + item.Name,
                    Value = item.CategoryId.ToString()
                });

                FillChildCategory(parentCategory, item.CategoryId, allCategories, ddlHierarchicalCategory);
                hierarchicalCategoryList.Add(parentCategory);
            }

            ViewData["HierarchicalCategoryList"] = ddlHierarchicalCategory;
            return(View());
        }
        public ActionResult Edit(int id)
        {
            Session["SelectedPostId"] = id; // Bilgiler post edildiğinde post metodunda yakalayabilmek adına oluşturuldu.
            var post = _postService.Get(p => p.PostId == id);

            if (post == null)
            {
                TempData["ServiceResult"] = "There was an error while viewing the post.";
                TempData["AlertType"]     = "danger";
                return(RedirectToAction("List"));
            }

            List <SelectListItem>             ddlHierarchicalCategory  = new List <SelectListItem>();
            List <VMHierarchicalCategoryList> hierarchicalCategoryList = new List <VMHierarchicalCategoryList>();

            List <Category> allCategories = _categoryService.GetList().Where(c => c.IsActive).ToList();

            foreach (var item in allCategories.Where(c => c.ParentCategoryId == 0).ToList())
            {
                VMHierarchicalCategoryList parentCategory = new VMHierarchicalCategoryList()
                {
                    CategoryId  = item.CategoryId,
                    Name        = item.Name,
                    Description = item.Description
                };

                ddlHierarchicalCategory.Add(new SelectListItem()
                {
                    Text  = "• " + item.Name,
                    Value = item.CategoryId.ToString()
                });

                FillChildCategory(parentCategory, item.CategoryId, allCategories, ddlHierarchicalCategory);
                hierarchicalCategoryList.Add(parentCategory);
            }

            ViewData["HierarchicalCategoryList"] = ddlHierarchicalCategory;
            return(View(post));
        }
        public void FillChildCategory(VMHierarchicalCategoryList hierarchicalCategoryList, int parentCategoryId, List <Category> allCategories, List <SelectListItem> ddlHierarchicalCategory)
        {
            foreach (var item in allCategories.Where(c => c.ParentCategoryId == parentCategoryId).ToList())
            {
                VMHierarchicalCategoryList childCategory = new VMHierarchicalCategoryList()
                {
                    CategoryId  = item.CategoryId,
                    Name        = item.Name,
                    Description = item.Description
                };

                hierarchicalCategoryList.ChildCategories.Add(childCategory);

                ddlHierarchicalCategory.Add(new SelectListItem()
                {
                    Text  = "".PadLeft(item.RootLevel, '-') + "> " + item.Name,
                    Value = item.CategoryId.ToString()
                });

                FillChildCategory(childCategory, childCategory.CategoryId, allCategories, ddlHierarchicalCategory);
            }
        }