// GET: _MenuBooksCategories
        public string Index()
        {
            Tbl_BooksCategories rootNode = db.Tbl_BooksCategories.Single(m => m.ID == -1 && m.IsChild == false && m.ParentID == -1);
            string BooksCategoriesStr    = GenerateBooksCategoriesMenu(rootNode);

            //ViewBag.BooksCategoriesBlock = BooksCategoriesStr;
            return(BooksCategoriesStr);// "<li><a href=\"features.htm\">کتاب ها</a></li>";
        }
        public ActionResult DeleteConfirmed(int id)
        {
            if (id == -1)
            {
                return(RedirectToAction("Index"));
            }

            Tbl_BooksCategories tbl_BooksCategories = db.Tbl_BooksCategories.Find(id);

            db.Tbl_BooksCategories.Remove(tbl_BooksCategories);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
        public ActionResult Edit([Bind(Include = "ID,Name,IsChild,ParentID")] Tbl_BooksCategories tbl_BooksCategories)
        {
            if (tbl_BooksCategories.ID == -1)
            {
                return(RedirectToAction("Index"));
            }

            if (ModelState.IsValid)
            {
                db.Entry(tbl_BooksCategories).State = EntityState.Modified;
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }
            ViewBag.ParentID = new SelectList(db.Tbl_BooksCategories, "ID", "Name", tbl_BooksCategories.ParentID);
            return(View(tbl_BooksCategories));
        }
        private string GenerateBooksCategoriesMenu(Tbl_BooksCategories rootNode)
        {
            string LiStr = "<li>";

            LiStr += "<a href=\"#\" >" + rootNode.Name + "</a>";
            if (rootNode.Tbl_BooksCategories1.Where(m => m.ParentID == rootNode.ID && m.IsChild == true).Count() > 0)
            {
                LiStr += "<ul>";
                foreach (Tbl_BooksCategories item in rootNode.Tbl_BooksCategories1.Where(m => m.ParentID == rootNode.ID && m.IsChild == true))
                {
                    LiStr += GenerateBooksCategoriesMenu(item);
                }
                LiStr += "</ul>";
            }
            LiStr += "</li>";
            return(LiStr);
        }
        public ActionResult Create([Bind(Include = "ID,Name,IsChild,ParentID")] Tbl_BooksCategories tbl_BooksCategories)
        {
            if (ModelState.IsValid)
            {
                if (!tbl_BooksCategories.IsChild)
                {
                    tbl_BooksCategories.ParentID = -1;
                    tbl_BooksCategories.IsChild  = true;
                }

                db.Tbl_BooksCategories.Add(tbl_BooksCategories);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            ViewBag.ParentID = new SelectList(db.Tbl_BooksCategories, "ID", "Name", tbl_BooksCategories.ParentID);
            return(View(tbl_BooksCategories));
        }
        // GET: Tbl_BooksCategories/Details/5
        public ActionResult Details(int?id)
        {
            if (id == -1)
            {
                return(RedirectToAction("Index"));
            }

            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Tbl_BooksCategories tbl_BooksCategories = db.Tbl_BooksCategories.Find(id);

            if (tbl_BooksCategories == null)
            {
                return(HttpNotFound());
            }
            return(View(tbl_BooksCategories));
        }
        // GET: Tbl_BooksCategories/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == -1)
            {
                return(RedirectToAction("Index"));
            }

            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Tbl_BooksCategories tbl_BooksCategories = db.Tbl_BooksCategories.Find(id);

            if (tbl_BooksCategories == null)
            {
                return(HttpNotFound());
            }
            ViewBag.ParentID = new SelectList(db.Tbl_BooksCategories, "ID", "Name", tbl_BooksCategories.ParentID);
            return(View(tbl_BooksCategories));
        }