public ActionResult VaoThi(string id)
        {
            var phong = new QuanLyThiDAO().ExamitionRoom(id);

            if (phong.TrangThai.Equals("Chưa Thi"))
            {
                ViewBag.MaPhong = id;
                return(View("PhongCho"));
            }

            var session = (TaiKhoan)Session[ComMon.ComMonStants.UserLogin];
            var DeThi   = new QuanLyThiDAO().SeachForTheExam(phong, session.TaiKhoan1);

            if (DeThi == null)
            {
                var list = new BoDeDao().ChapterStudy(long.Parse(phong.MaBoDe.ToString()));
                DeThi = new BoDeDao().MixExemQuestion(list, session.TaiKhoan1);
            }
            new BoDeDao().UpdateDsThi(phong, DeThi, session.TaiKhoan1, "Đã vào phòng");
            Session[ComMon.ComMonStants.ExamQuesTion] = DeThi;
            DateTime dateTime = DateTime.Parse(phong.ThoiGianDong.ToString());
            CT_Dethi cT_Dethi = new CT_Dethi();

            cT_Dethi.MADETHI = DeThi.MaDeThi;
            cT_Dethi.LYDO    = "Sinh viên đã vào phòng";
            TracNghiemOnlineDB db = new TracNghiemOnlineDB();

            db.CT_Dethi.Add(cT_Dethi);
            db.SaveChanges();
            ViewBag.GioThi = dateTime.AddMinutes(5).ToString("yyyy/MM/dd HH:mm:ss");

            ViewBag.DeThi = DeThi;
            return(View(phong));
        }
        public ActionResult ThemSinhVien(string id)
        {
            var Lisv = new QuanLyThiDAO().LissAllSinhVien(id);

            ViewBag.MaPhong = id;
            return(View(Lisv));
        }
        public ActionResult Diemthi(long id)
        {
            TracNghiemOnlineDB db = new TracNghiemOnlineDB();
            var de   = db.De_Thi.Find(id);
            var exam = new QuanLyThiDAO().SearDethi(id);
            var mark = new QuanLyThiDAO().Mark(exam);

            Session[ComMon.ComMonStants.ExamQuesTion] = null;
            de.TrangThai = true;
            de.DiêmSo    = mark.ketQuaThi.DiemSo;
            db.SaveChanges();
            var SV = db.DS_SVThi.SingleOrDefault(x => x.MaDeThi == de.MaDeThi);

            try
            {
                if (SV != null)
                {
                    DateTime dateTime = (DateTime)Session["Gio"];
                    if (!SV.TrangThai.Equals("Đã Nộp"))
                    {
                        SV.TrangThai = "Đã Nộp";
                        CT_Dethi cT_Dethi = new CT_Dethi();
                        cT_Dethi.MADETHI = id;
                        cT_Dethi.LYDO    = "Sinh viên đã nộp bài" + dateTime.ToString();
                        db.CT_Dethi.Add(cT_Dethi);

                        db.SaveChanges();
                    }
                }
            }
            catch { }

            return(View(mark));
        }
        public JsonResult KiemTra(string MaPhong)
        {
            var phong = new QuanLyThiDAO().ExamitionRoom(MaPhong);

            try
            {
                if (phong.TrangThai.Contains("Chưa Thi"))
                {
                    return(Json(new
                    {
                        status = false
                    }, JsonRequestBehavior.AllowGet));
                }
                return(Json(new
                {
                    status = true
                }, JsonRequestBehavior.AllowGet));
            }
            catch {
                return(Json(new
                {
                    status = true
                }, JsonRequestBehavior.AllowGet));
            }
        }
        public JsonResult LoadLopHP()
        {
            var  session = (TaiKhoan)Session[ComMon.ComMonStants.UserLogin];
            var  LopHoc1 = new TracNghiemOnlineDB().LopHocPhans.Where(x => x.TrangThai == 1).ToList();
            bool quyen   = true;

            if (session.ChưcVu.Equals("Cán Bộ"))
            {
                LopHoc1 = new QuanLyThiDAO().ListClassRom(session.TaiKhoan1);
                quyen   = false;
            }

            var LopHoc = (from c in LopHoc1.Where(x => x.TrangThai == 1)
                          select(new
            {
                c.MaLop,
                c.TenLop,
                c.MaMon,
                c.MonHoc.TenMon,
                c.MaKi,
                c.KiThi.TenKi,
                c.GiaoVien.TenGV,
                c.MaGV
            })
                          ).ToList();

            return(Json(new
            {
                quyen,
                lop = LopHoc
            }, JsonRequestBehavior.AllowGet));
        }
        public JsonResult XoaSVPhongThi(string Maphong, string Masv)
        {
            try
            {
                var phong = new QuanLyThiDAO().ExamitionRoom(Maphong);
                if (phong.TrangThai.Equals("Chưa Thi"))
                {
                    var db = new TracNghiemOnlineDB();
                    var sv = db.DS_SVThi.SingleOrDefault(x => x.Ma_SV.Equals(Masv) && x.MaPhong.Equals(Maphong));
                    db.DS_SVThi.Remove(sv);
                    db.SaveChanges();

                    return(Json(new
                    {
                        status = true
                    }));
                }
            }
            catch (Exception e)
            {
                return(Json(new
                {
                    status = "Không Thể Xóa SV Này"
                }));
            }

            return(Json(new
            {
                status = "Phòng Đang Thi Không Thể Xóa"
            }));
        }
        public ActionResult DSSVPhongThi(string id)
        {
            bool quyen   = true;
            var  session = (TaiKhoan)Session[ComMon.ComMonStants.UserLogin];

            if (session.ChưcVu.Equals("Cán Bộ"))
            {
                quyen = false;
            }

            Phong_Thi phong_Thi  = new QuanLyThiDAO().ExamitionRoom(id);
            var       lopHocPhan = phong_Thi.LopHocPhan;

            foreach (var item in phong_Thi.LopHocPhan.DS_LopHP.ToList())
            {
                if (phong_Thi.DS_SVThi.ToList().Exists(x => x.Ma_SV.Equals(item.MA_SV)))
                {
                    lopHocPhan.DS_LopHP.Remove(item);
                }
            }
            ViewBag.Quyen   = quyen;
            ViewBag.phong   = lopHocPhan;
            ViewBag.MaPhong = (string)phong_Thi.MaPhong;
            return(View("DSSinhVen"));
        }
        public JsonResult KiemTraPhongThi()
        {
            var classRoom = (Phong_Thi)Session[ComMon.ComMonStants.ExamRoom];
            var KiemTra   = new QuanLyThiDAO().ExamitionRoom(classRoom.MaPhong);

            foreach (var item in classRoom.DS_SVThi)
            {
                if (KiemTra.DS_SVThi.ToList().Exists(x => x.Ma_SV == item.Ma_SV && x.TrangThai != item.TrangThai))
                {
                    classRoom = KiemTra;
                    Session[ComMon.ComMonStants.ExamRoom] = classRoom;

                    var DSSV = (from c in classRoom.DS_SVThi
                                select new
                    {
                        MaSV = c.Ma_SV,
                        Ten = c.SinhVien.Ten,
                        TenLop = c.SinhVien.Lop.TenLop,
                        TrangThai = c.TrangThai,
                        MaDe = c.MaDeThi,
                        TinhTrang = new TracNghiemOnlineDB().De_Thi.Find(c.MaDeThi).TrangThai,
                    }).ToList();
                    return(Json(new
                    {
                        Status = true,
                        data = DSSV,
                    }, JsonRequestBehavior.AllowGet));
                }
            }

            return(Json(new
            {
                Status = false,
            }, JsonRequestBehavior.AllowGet));
        }
        public ActionResult PhongThi()
        {
            DateTime dateTime = (DateTime)Session["Gio"];
            var      session  = (TaiKhoan)Session[ComMon.ComMonStants.UserLogin];
            var      PhongThi = new QuanLyThiDAO().ListAllClassRom(session.TaiKhoan1, dateTime);

            return(View(PhongThi));
        }
        public ActionResult DanhGiaKetQuahocTap()
        {
            var      tk       = (TaiKhoan)Session[ComMon.ComMonStants.UserLogin];
            DateTime dateTime = (DateTime)Session["Gio"];
            var      phonghoc = new QuanLyThiDAO().DanhGiaKetQua(tk.TaiKhoan1, dateTime);

            return(View(phonghoc));
        }
        public JsonResult VaoThi(string id)
        {
            var classRom          = new QuanLyThiDAO().ExamitionRoom(id);
            TracNghiemOnlineDB db = new TracNghiemOnlineDB();

            Session[ComMon.ComMonStants.ExamRoom] = classRom;
            var  session = (TaiKhoan)Session[ComMon.ComMonStants.UserLogin];
            bool quyen   = true;
            var  bode    = new BoDeDao().ListALLChapterStudy(long.Parse(classRom.LopHocPhan.MaMon.ToString()), session.TaiKhoan1);

            if (session.ChưcVu.Equals("Cán Bộ"))
            {
                bode = new TracNghiemOnlineDB().Bo_De.Where(x => x.Ma_Mon == classRom.LopHocPhan.MaMon && x.Ma_NguoiTao.Equals(session.TaiKhoan1) && x.Xoa == true && x.LoaiDe == false).ToList();
                foreach (var item in db.Shares.Where(x => x.MaGV.Equals(session.TaiKhoan1) && x.Loai == 0))
                {
                    try
                    {
                        var bode2 = db.Bo_De.Where(x => x.Ma_BoDe == item.MA && x.Xoa == true).ToList();
                        if (bode2.Count > 0)
                        {
                            bode.Add(bode2[0]);
                        }
                    }
                    catch { }
                }
            }
            long   made      = 0;
            string trangthai = classRom.TrangThai;

            try
            {
                made = long.Parse(classRom.MaBoDe.ToString());
            }
            catch
            {
                made = 0;
            }

            var bode1 = (from n in bode
                         select new
            {
                Ten = n.NoiDung,
                MaDe = n.Ma_BoDe,
                SoCau = n.SoCau,
                ThoiGian = n.ThoiGianThi,
                TenMon = n.MonHoc.TenMon,

                NguoiTao = new TracNghiemOnlineDB().GiaoViens.Find(n.Ma_NguoiTao).TenGV
            }).ToList();

            return(Json(new
            {
                Bode = bode1,
                trangthai,
                made,
            }, JsonRequestBehavior.AllowGet));;
        }
        public ActionResult ToChucThi(string id)
        {
            var classRom = new QuanLyThiDAO().ExamitionRoom(id);

            classRom.Bo_De = new BoDeDao().ChapterStudy(long.Parse(classRom.MaBoDe.ToString()));
            Session[ComMon.ComMonStants.ExamRoom] = classRom;
            DateTime dateTime = DateTime.Parse(classRom.ThoiGianDong.ToString()).AddMinutes(5);

            ViewBag.GioThi = dateTime.ToString("yyyy/MM/dd HH:mm:ss");
            return(View(classRom));
        }
        public ActionResult LopHocPhan()
        {
            var  session = (TaiKhoan)Session[ComMon.ComMonStants.UserLogin];
            var  LopHoc  = new TracNghiemOnlineDB().LopHocPhans.Where(x => x.TrangThai == 1).ToList();
            bool quyen   = true;

            if (session.ChưcVu.Equals("Cán Bộ"))
            {
                LopHoc = new QuanLyThiDAO().ListClassRom(session.TaiKhoan1);
                quyen  = false;
            }
            ViewBag.Quyen = (bool)quyen;
            return(View(LopHoc));
        }
        public ActionResult DiemSo(long?id)
        {
            TracNghiemOnlineDB db = new TracNghiemOnlineDB();
            var de = db.De_Thi.Find(id);

            de.TrangThai = false;

            db.SaveChanges();

            var exam = new QuanLyThiDAO().SearDethi(id);
            var mark = new QuanLyThiDAO().Mark(exam);

            Session[ComMon.ComMonStants.ExamQuesTion] = null;
            return(View(mark));
        }
        public ActionResult DSSinhVen(string id)
        {
            Session["Maphong"] = id;
            bool quyen   = true;
            var  session = (TaiKhoan)Session[ComMon.ComMonStants.UserLogin];

            if (session.ChưcVu.Equals("Cán Bộ"))
            {
                quyen = false;
            }


            var phong = new QuanLyThiDAO().ClassRom(id);

            ViewBag.phong   = phong;
            ViewBag.MaPhong = (string)"";
            ViewBag.Quyen   = quyen;

            return(View());
        }
        public JsonResult LoadPhongThi()
        {
            var classRoom = (Phong_Thi)Session[ComMon.ComMonStants.ExamRoom];
            var KiemTra   = new QuanLyThiDAO().ExamitionRoom(classRoom.MaPhong);

            var DSSV = (from c in classRoom.DS_SVThi
                        select new
            {
                MaSV = c.Ma_SV,
                Ten = c.SinhVien.Ten,
                TenLop = c.SinhVien.Lop.TenLop,
                TrangThai = c.TrangThai,
                MaDe = c.MaDeThi,
                TinhTrang = new TracNghiemOnlineDB().De_Thi.Find(c.MaDeThi).TrangThai,
            }).ToList();

            return(Json(new
            {
                Status = true,
                data = DSSV,
            }, JsonRequestBehavior.AllowGet));
        }
        public JsonResult UpateTrangThai(bool s, long dethi, string lydo)
        {
            TracNghiemOnlineDB db = new TracNghiemOnlineDB();
            var de = db.De_Thi.Find(dethi);

            if (s == true)
            {
                de.TrangThai = false;
                CT_Dethi cT = new CT_Dethi();
                cT.MADETHI = dethi;
                cT.LYDO    = "Gíao viên đã cấm thi sinh viên lý do " + lydo;
                db.CT_Dethi.Add(cT);
            }
            else
            {
                de.TrangThai = true;
            }
            db.SaveChanges();
            var classRoom = (Phong_Thi)Session[ComMon.ComMonStants.ExamRoom];
            var KiemTra   = new QuanLyThiDAO().ExamitionRoom(classRoom.MaPhong);
            var DSSV      = (from c in classRoom.DS_SVThi
                             select new
            {
                MaSV = c.Ma_SV,
                Ten = c.SinhVien.Ten,
                TenLop = c.SinhVien.Lop.TenLop,
                TrangThai = c.TrangThai,
                MaDe = c.MaDeThi,
                TinhTrang = new TracNghiemOnlineDB().De_Thi.Find(c.MaDeThi).TrangThai,
            }).ToList();

            return(Json(new
            {
                Status = true,
                data = DSSV,
            }, JsonRequestBehavior.AllowGet));
        }
        public JsonResult PhongThi(string MaPhong)
        {
            DateTime dateTime = (DateTime)Session["Gio"];
            var      Phong    = new QuanLyThiDAO().ExamitionRoom(MaPhong);

            try {
                if (Phong.ThoiGianDong <= dateTime)
                {
                    Phong.TrangThai = "Đã Đóng";
                    new QuanLyThiDAO().UpDatePhongThi(Phong);
                }
            }
            catch (Exception e)
            {
            }
            if (Phong == null)
            {
                return(Json(new
                {
                    status = "Mã Bạn Nhập Không Đúng Vui Lòng Kiểm Tra Lai"
                }, JsonRequestBehavior.AllowGet));
            }
            else
            {
                if (Phong.TrangThai.Contains("Đã Đóng"))
                {
                    return(Json(new
                    {
                        status = "Phòng Thi Đã Kết Thúc Lúc" + Phong.ThoiGianDong.ToString()
                    }, JsonRequestBehavior.AllowGet));
                }

                else
                {
                    var session = (TaiKhoan)Session[ComMon.ComMonStants.UserLogin];
                    var Check   = new QuanLyThiDAO().Check(MaPhong, session.TaiKhoan1);
                    if (Check != null)
                    {
                        try
                        {
                            if (Check.TrangThai.Equals("Đã Nộp"))
                            {
                                return(Json(new
                                {
                                    status = "Bạn Đã Nộp Bài "
                                }, JsonRequestBehavior.AllowGet));
                            }
                            else
                            {
                                try
                                {
                                    if (new TracNghiemOnlineDB().De_Thi.Find(Check.MaDeThi).TrangThai == false)
                                    {
                                        return(Json(new
                                        {
                                            status = "Bạn Đã Bị Cấm Thi"
                                        }, JsonRequestBehavior.AllowGet));
                                    }
                                }
                                catch { }

                                return(Json(new
                                {
                                    status = true
                                }, JsonRequestBehavior.AllowGet));
                            }
                        }
                        catch
                        {
                            return(Json(new
                            {
                                status = true
                            }, JsonRequestBehavior.AllowGet));
                        }
                    }
                    else
                    {
                        return(Json(new
                        {
                            status = "Phòng Này Bạn Không Thể Thi"
                        }, JsonRequestBehavior.AllowGet));
                    }
                }
            }
        }
        public ActionResult DSDETHI()
        {
            List <DanhGia>     ketQuas = new List <DanhGia>();
            TracNghiemOnlineDB db      = new TracNghiemOnlineDB();
            var session = (TaiKhoan)Session[ComMon.ComMonStants.UserLogin];

            var dssv = db.DS_SVThi.Where(x => x.Ma_SV.Equals(session.TaiKhoan1));

            List <Phong_Thi> phong_This = new List <Phong_Thi>();

            foreach (var item in dssv)
            {
                try
                {
                    var phong = new TracNghiemOnlineDB().Phong_Thi.Where(x => x.MaPhong.Equals(item.MaPhong) && x.TrangThai.Equals("Đã Đóng"));
                    if (phong != null)
                    {
                        var DeThi = db.De_Thi.Where(x => x.MaDeThi == item.MaDeThi).ToList().First();
                        if (DeThi != null)
                        {
                            if (DeThi.KetQuaThis.Count == 0)
                            {
                                TracNghiemOnlineDB tb1     = new TracNghiemOnlineDB();
                                DanhGia            danhGia = new DanhGia();
                                danhGia = new QuanLyThiDAO().Mark(DeThi);

                                KetQuaThi ketQuaThi = new KetQuaThi();
                                ketQuaThi.Ma_DeThi = DeThi.MaDeThi;

                                ketQuaThi.NgayThi   = phong.ToList()[0].ThoiGianDong;
                                ketQuaThi.SoCauDung = danhGia.ketQuaThi.SoCauDung;
                                ketQuaThi.SoCauSai  = danhGia.ketQuaThi.SoCauSai;
                                ketQuaThi.DiemSo    = danhGia.ketQuaThi.DiemSo;
                                tb1.KetQuaThis.Add(ketQuaThi);
                                tb1.SaveChanges();

                                foreach (var item1 in danhGia.ketQuaThi.De_Thi.Danh_Gia)
                                {
                                    Danh_Gia danh_Gia = new Danh_Gia();

                                    danh_Gia.MaChuong  = item1.MaChuong;
                                    danh_Gia.MaDeThi   = item1.MaDeThi;
                                    danh_Gia.SoCauDung = item1.SoCauDung;
                                    danh_Gia.TongCau   = item1.TongCau;
                                    //  danh_Gia.NhanXet = item1.NhanXet;
                                    danh_Gia.DanhGia = item1.DanhGia;
                                    tb1.Danh_Gia.Add(danh_Gia);

                                    tb1.SaveChanges();
                                }

                                ketQuas.Add(danhGia);
                            }
                            else
                            {
                                DanhGia danhGia = new DanhGia();
                                danhGia.ketQuaThi         = DeThi.KetQuaThis.ToList().First();
                                danhGia.ketQuaThi.NgayThi = phong.ToList()[0].ThoiGianDong;
                                danhGia.ketQuaThi.De_Thi  = DeThi;
                                ketQuas.Add(danhGia);
                            }
                            phong_This.Add(phong.ToList()[0]);
                        }
                    }
                }
                catch { }
            }



            ViewBag.phong = phong_This;

            return(View(ketQuas));
        }