public ActionResult DelTrash(int id)
        {
            MTopic mTopic = db.Topic.Find(id);

            if (mTopic == null)
            {
                Thongbao.set_flash("Không tồn tại danh mục cần xóa vĩnh viễn!", "warning");
                return(RedirectToAction("Index"));
            }
            int count_child = db.Topic.Where(m => m.ParentID == id).Count();

            if (count_child != 0)
            {
                Thongbao.set_flash("Không thể xóa, danh mục có chủ đề con!", "warning");
                return(RedirectToAction("Index"));
            }
            mTopic.Status = 0;

            mTopic.Updated_at      = DateTime.Now;
            mTopic.Updated_by      = int.Parse(Session["Admin_ID"].ToString());
            db.Entry(mTopic).State = EntityState.Modified;
            db.SaveChanges();
            Thongbao.set_flash("Ném thành công vào thùng rác!" + " ID = " + id, "success");
            return(RedirectToAction("Index"));
        }
        // Create
        public ActionResult Create()
        {
            MTopic mTopic = new MTopic();

            ViewBag.ListTopic = new SelectList(db.Topic.ToList(), "ID", "Name", 0);
            return(View());
        }
        public ActionResult Edit(MPost mPost)
        {
            MTopic mTopic = new MTopic();

            ViewBag.ListTopic = new SelectList(db.Topic.ToList(), "ID", "Name", 0);
            if (ModelState.IsValid)
            {
                String strSlug = XString.ToAscii(mPost.Title);
                mPost.Slug       = strSlug;
                mPost.Type       = "post";
                mPost.Updated_at = DateTime.Now;
                mPost.Updated_by = 1 /*int.Parse(Session["Admin_ID"].ToString());*/;
                var file = Request.Files["Image"];
                if (file != null && file.ContentLength > 0)
                {
                    String filename = strSlug + file.FileName.Substring(file.FileName.LastIndexOf("."));
                    mPost.Image = filename;
                    String Strpath = Path.Combine(Server.MapPath("~/Content/Path/post/"), filename);
                    file.SaveAs(Strpath);
                }

                db.Entry(mPost).State = EntityState.Modified;
                db.SaveChanges();
                Thongbao.set_flash("Đã cập nhật lại bài viết!", "success");
                return(RedirectToAction("Index"));
            }
            return(View(mPost));
        }
        public ActionResult DeleteConfirmed(int id)
        {
            MTopic mTopic = db.Topic.Find(id);

            db.Topic.Remove(mTopic);
            db.SaveChanges();
            Thongbao.set_flash("Đã xóa hoàn toàn chủ đề!", "success");
            return(RedirectToAction("Trash", "Topic"));
        }
        public JsonResult changeStatus(int id)
        {
            MTopic mTopic = db.Topic.Find(id);

            mTopic.Status = (mTopic.Status == 1) ? 2 : 1;

            mTopic.Updated_at      = DateTime.Now;
            mTopic.Updated_by      = int.Parse(Session["Admin_ID"].ToString());
            db.Entry(mTopic).State = EntityState.Modified;
            db.SaveChanges();
            return(Json(new { Status = mTopic.Status }));
        }
        public ActionResult Edit(int?id)
        {
            ViewBag.listTopic = new SelectList(db.Topic.Where(m => m.Status == 1), "ID", "Name", 0);
            ViewBag.listOrder = new SelectList(db.Topic.Where(m => m.Status == 1), "Orders", "Name", 0);
            MTopic mTopic = db.Topic.Find(id);

            if (mTopic == null)
            {
                Thongbao.set_flash("404!", "warning");
                return(RedirectToAction("Index", "Topic"));
            }
            return(View(mTopic));
        }
        // GET: Admin/Topic/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            MTopic mTopic = db.Topic.Find(id);

            if (mTopic == null)
            {
                return(HttpNotFound());
            }
            return(View(mTopic));
        }
        public ActionResult Edit(MTopic mTopic)
        {
            ViewBag.listTopic = new SelectList(db.Topic.Where(m => m.Status == 1), "ID", "Name", 0);
            ViewBag.listOrder = new SelectList(db.Topic.Where(m => m.Status == 1), "Orders", "Name", 0);
            if (ModelState.IsValid)
            {
                if (mTopic.ParentID == null)
                {
                    mTopic.ParentID = 0;
                }
                String Slug = XString.ToAscii(mTopic.Name);
                int    ID   = mTopic.ID;
                if (db.Category.Where(m => m.Slug == Slug && m.ID != ID).Count() > 0)
                {
                    Thongbao.set_flash("Tên danh mục đã tồn tại, vui lòng thử lại!", "warning");
                    return(RedirectToAction("Edit", "Topic"));
                }
                if (db.Topic.Where(m => m.Slug == Slug && m.ID != ID).Count() > 0)
                {
                    Thongbao.set_flash("Tên danh mục đã tồn tại trong TOPIC, vui lòng thử lại!", "warning");
                    return(RedirectToAction("Edit", "Topic"));
                }
                if (db.Post.Where(m => m.Slug == Slug && m.ID != ID).Count() > 0)
                {
                    Thongbao.set_flash("Tên danh mục đã tồn tại trong POST, vui lòng thử lại!", "warning");
                    return(RedirectToAction("Edit", "Topic"));
                }
                if (db.Product.Where(m => m.Slug == Slug && m.ID != ID).Count() > 0)
                {
                    Thongbao.set_flash("Tên danh mục đã tồn tại trong PRODUCT, vui lòng thử lại!", "warning");
                    return(RedirectToAction("Edit", "Topic"));
                }

                mTopic.Slug = Slug;

                // Lỗi datatime2
                mTopic.Created_at = DateTime.Now;
                mTopic.Created_by = int.Parse(Session["Admin_ID"].ToString());

                mTopic.Updated_at = DateTime.Now;
                mTopic.Updated_by = int.Parse(Session["Admin_ID"].ToString());

                db.Entry(mTopic).State = EntityState.Modified;
                db.SaveChanges();
                Thongbao.set_flash("Câp nhật thành công chủ đề!", "success");
                return(RedirectToAction("Index"));
            }
            ViewBag.list = db.Category.Where(m => m.Status == 1).ToList();
            return(View(mTopic));
        }
        // Edit
        public ActionResult Edit(int?id)
        {
            MTopic mTopic = new MTopic();

            ViewBag.ListTopic = new SelectList(db.Topic.ToList(), "ID", "Name", 0);
            MPost mPost = db.Post.Find(id);

            if (mPost == null)
            {
                Thongbao.set_flash("Không tồn tại bài viết!", "warning");
                return(RedirectToAction("Index", "Post"));
            }
            return(View(mPost));
        }
        public ActionResult Create(MTopic mTopic)
        {
            ViewBag.listTopic = new SelectList(db.Topic.Where(m => m.Status == 1), "ID", "Name", 0);
            ViewBag.listOrder = new SelectList(db.Topic.Where(m => m.Status == 1), "Order", "Name", 0);
            if (ModelState.IsValid)
            {
                if (mTopic.ParentID == null)
                {
                    mTopic.ParentID = 0;
                }
                String Slug = XString.ToAscii(mTopic.Name);
                if (db.Category.Where(m => m.Slug == Slug).Count() > 0)
                {
                    Thongbao.set_flash("Tên danh mục đã tồn tại, vui lòng thử lại!", "warning");
                    return(RedirectToAction("Create", "Topic"));
                }
                if (db.Topic.Where(m => m.Slug == Slug).Count() > 0)
                {
                    Thongbao.set_flash("Tên danh mục đã tồn tại trong TOPIC, vui lòng thử lại!", "warning");
                    return(RedirectToAction("Create", "Topic"));
                }
                if (db.Post.Where(m => m.Slug == Slug).Count() > 0)
                {
                    Thongbao.set_flash("Tên danh mục đã tồn tại trong POST, vui lòng thử lại!", "warning");
                    return(RedirectToAction("Create", "Topic"));
                }
                if (db.Product.Where(m => m.Slug == Slug).Count() > 0)
                {
                    Thongbao.set_flash("Tên danh mục đã tồn tại trong PRODUCT, vui lòng thử lại!", "warning");
                    return(RedirectToAction("Create", "Topic"));
                }


                mTopic.Slug       = Slug;
                mTopic.Created_at = DateTime.Now;
                mTopic.Created_by = int.Parse(Session["Admin_ID"].ToString());
                mTopic.Updated_at = DateTime.Now;
                mTopic.Updated_by = int.Parse(Session["Admin_ID"].ToString());

                db.Topic.Add(mTopic);
                db.SaveChanges();
                Thongbao.set_flash("Danh mục đã được thêm!", "success");
                return(RedirectToAction("Index", "Topic"));
            }
            ViewBag.list = db.Category.Where(m => m.Status == 1).ToList();
            Thongbao.set_flash("Có lỗi xảy ra khi thêm danh mục!", "warning");
            return(View(mTopic));
        }
        public ActionResult Delete(int?id)
        {
            if (id == null)
            {
                Thongbao.set_flash("Không tồn tại !", "warning");
                return(RedirectToAction("Trash", "Topic"));
            }
            MTopic mTopic = db.Topic.Find(id);

            if (mTopic == null)
            {
                Thongbao.set_flash("Không tồn tại!", "warning");
                return(RedirectToAction("Trash", "Topic"));
            }
            return(View(mTopic));
        }
        public ActionResult Status(int?id)
        {
            MTopic mTopic = db.Topic.Find(id);

            if (mTopic == null)
            {
                Thongbao.set_flash("Không tồn tại danh mục!", "warning");
                return(RedirectToAction("Index"));
            }
            mTopic.Status = (mTopic.Status == 1) ? 2 : 1;

            mTopic.Updated_at      = DateTime.Now;
            mTopic.Updated_by      = int.Parse(Session["Admin_ID"].ToString());
            db.Entry(mTopic).State = EntityState.Modified;
            db.SaveChanges();
            Thongbao.set_flash("Thay đổi trạng thái thành công!" + " id = " + id, "success");
            return(RedirectToAction("Index"));
        }
        public ActionResult ReTrash(int?id)
        {
            MTopic cate = db.Topic.Find(id);

            if (cate == null)
            {
                Thongbao.set_flash("Không tồn tại chủ đề!", "danger");
                return(RedirectToAction("Trash", "Topic"));
            }
            cate.Status = 2;

            cate.Updated_at      = DateTime.Now;
            cate.Updated_by      = int.Parse(Session["Admin_ID"].ToString());
            db.Entry(cate).State = EntityState.Modified;
            db.SaveChanges();
            Thongbao.set_flash("Khôi phục thành công!" + " ID = " + id, "success");
            return(RedirectToAction("Trash", "Topic"));
        }
        public ActionResult Index(FormCollection data)
        {
            ViewBag.ListCat   = db.Category.Where(m => m.Status == 1).ToList();
            ViewBag.ListTopic = db.Topic.Where(m => m.Status == 1).ToList();
            ViewBag.ListPage  = db.Post.Where(m => m.Status == 1 && m.Type == "page").ToList();

            if (!String.IsNullOrEmpty(data["AddCat"]))
            {
                if (!String.IsNullOrEmpty(data["itemCat"]))
                {
                    var itemcat = data["itemCat"];
                    var arr     = itemcat.Split(',');
                    int count   = 0;
                    foreach (var i in arr)
                    {
                        int       id        = int.Parse(i);
                        MCategory mCategory = db.Category.Find(id);
                        MMenu     mMenu     = new MMenu();
                        mMenu.Name       = mCategory.Name;
                        mMenu.Link       = mCategory.Slug;
                        mMenu.Type       = "category";
                        mMenu.TableID    = id;
                        mMenu.Orders     = 1;
                        mMenu.Positon    = data["Position"];
                        mMenu.ParentID   = 0;
                        mMenu.Status     = 2;
                        mMenu.Created_at = DateTime.Now;
                        mMenu.Updated_by = 1 /*int.Parse(Session["Admin_ID"].ToString());*/;
                        mMenu.Updated_at = DateTime.Now;
                        mMenu.Updated_by = 1 /*int.Parse(Session["Admin_ID"].ToString());*/;
                        db.Menu.Add(mMenu);
                        db.SaveChanges();
                        count++;
                    }
                    Thongbao.set_flash("Đã thêm " + count + " menu mới!", "success");
                }
                else
                {
                    Thongbao.set_flash("Chưa chọn menu cần thêm!", "warning");
                }
            }
            if (!String.IsNullOrEmpty(data["AddTopic"]))
            {
                if (!String.IsNullOrEmpty(data["itemTopic"]))
                {
                    var itemtopic = data["itemTopic"];
                    var arr       = itemtopic.Split(',');
                    int count     = 0;
                    foreach (var i in arr)
                    {
                        int    id     = int.Parse(i);
                        MTopic mTopic = db.Topic.Find(id);
                        MMenu  mMenu  = new MMenu();
                        mMenu.Name       = mTopic.Name;
                        mMenu.Link       = mTopic.Slug;
                        mMenu.Type       = "topic";
                        mMenu.TableID    = id;
                        mMenu.Orders     = 1;
                        mMenu.Positon    = data["Position"];
                        mMenu.ParentID   = 0;
                        mMenu.Status     = 2;
                        mMenu.Created_at = DateTime.Now;
                        mMenu.Updated_by = 1 /*int.Parse(Session["Admin_ID"].ToString());*/;
                        mMenu.Updated_at = DateTime.Now;
                        mMenu.Updated_by = 1 /*int.Parse(Session["Admin_ID"].ToString());*/;
                        db.Menu.Add(mMenu);
                        db.SaveChanges();
                        count++;
                    }
                    Thongbao.set_flash("Đã thêm " + count + " menu mới!", "success");
                }
                else
                {
                    Thongbao.set_flash("Chưa chọn menu cần thêm!", "warning");
                }
            }
            if (!String.IsNullOrEmpty(data["AddPage"]))
            {
                if (!String.IsNullOrEmpty(data["itemPage"]))
                {
                    var itempage = data["itemPage"];
                    var arr      = itempage.Split(',');
                    int count    = 0;
                    foreach (var i in arr)
                    {
                        int   id    = int.Parse(i);
                        MPost mPost = db.Post.Find(id);
                        MMenu mMenu = new MMenu();
                        mMenu.Name       = mPost.Title;
                        mMenu.Link       = mPost.Slug;
                        mMenu.Type       = "page";
                        mMenu.TableID    = id;
                        mMenu.Orders     = 1;
                        mMenu.Positon    = data["Position"];
                        mMenu.ParentID   = 0;
                        mMenu.Status     = 2;
                        mMenu.Created_at = DateTime.Now;
                        mMenu.Updated_by = 1 /*int.Parse(Session["Admin_ID"].ToString());*/;
                        mMenu.Updated_at = DateTime.Now;
                        mMenu.Updated_by = 1 /*int.Parse(Session["Admin_ID"].ToString());*/;
                        db.Menu.Add(mMenu);
                        db.SaveChanges();
                        count++;
                    }
                    Thongbao.set_flash("Đã thêm " + count + " menu mới!", "success");
                }
                else
                {
                    Thongbao.set_flash("Chưa chọn menu cần thêm!", "warning");
                }
            }
            if (!String.IsNullOrEmpty(data["AddCustom"]))
            {
                if (!String.IsNullOrEmpty(data["name"]) && !String.IsNullOrEmpty(data["link"]))
                {
                    MMenu mMenu = new MMenu();
                    mMenu.Name       = data["name"];
                    mMenu.Link       = data["link"];
                    mMenu.Type       = "custom";
                    mMenu.Orders     = 1;
                    mMenu.Positon    = data["Position"];
                    mMenu.ParentID   = 0;
                    mMenu.Status     = 2;
                    mMenu.Created_at = DateTime.Now;
                    mMenu.Updated_by = 1 /*int.Parse(Session["Admin_ID"].ToString());*/;
                    mMenu.Updated_at = DateTime.Now;
                    mMenu.Updated_by = 1 /*int.Parse(Session["Admin_ID"].ToString());*/;
                    db.Menu.Add(mMenu);
                    db.SaveChanges();
                    Thongbao.set_flash("Đã thêm 1 menu mới!", "success");
                }
                else
                {
                    Thongbao.set_flash("Vui lòng nhập tên menu và link!", "warning");
                }
            }

            return(View(db.Menu.Where(m => m.Status != 0).ToList()));
        }