Exemplo n.º 1
0
        //Lay bài thi cua 1 phong
        internal object ListALLexam(string id)
        {
            List <DanhGia> ketQuas = new List <DanhGia>();
            var            phong   = db.Phong_Thi.Where(x => x.MaPhong.Equals(id.Trim())).ToList().First();

            foreach (var item in phong.DS_SVThi)
            {
                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 = Mark(DeThi);
                        ketQuas.Add(danhGia);
                        KetQuaThi ketQuaThi = new KetQuaThi();
                        ketQuaThi.Ma_DeThi  = DeThi.MaDeThi;
                        ketQuaThi.NgayThi   = DateTime.Now;
                        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();
                        }
                    }
                    else
                    {
                        DanhGia danhGia = new DanhGia();
                        danhGia.ketQuaThi        = DeThi.KetQuaThis.ToList().First();
                        danhGia.ketQuaThi.De_Thi = DeThi;
                        ketQuas.Add(danhGia);
                    }
                }
            }


            return(ketQuas);
        }
        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));
        }
        public JsonResult DanhGia(string id)
        {
            var Ketqua = (List <DanhGia>)Session["KetQua"];

            List <ThongKe> thongKes = new List <ThongKe>();
            var            DanhGia  = new List <Danh_Gia>();

            foreach (var item in Ketqua)
            {
                foreach (var item1 in item.ketQuaThi.De_Thi.Danh_Gia)
                {
                    Danh_Gia danh_Gia = new Danh_Gia();
                    danh_Gia.MaChuong   = item1.MaChuong;
                    danh_Gia.Chuong_Hoc = item1.Chuong_Hoc;
                    danh_Gia.SoCauDung  = 0;
                    danh_Gia.TongCau    = 0;
                    ThongKe thongKe = new ThongKe();
                    thongKe.tb        = 0;
                    thongKe.gioi      = 0;
                    thongKe.kha       = 0;
                    thongKe.Yeu       = 0;
                    thongKe.MaChuong  = item1.MaChuong;
                    thongKe.TenChuong = item1.Chuong_Hoc.TenChuong;
                    thongKes.Add(thongKe);
                    DanhGia.Add(danh_Gia);
                }
                break;
            }
            for (int i = 0; i < Ketqua.Count; i++)
            {
                foreach (var item1 in DanhGia)
                {
                    foreach (var item in Ketqua[i].ketQuaThi.De_Thi.Danh_Gia)
                    {
                        if (item1.MaChuong == item.MaChuong)
                        {
                            item1.SoCauDung += item.SoCauDung;
                            item1.TongCau   += item.TongCau;
                            item1.DanhGia    = "" + Math.Round(((double)(item1.SoCauDung / item1.TongCau) * (double)100), 3);
                        }
                    }
                }
            }
            for (int i = 0; i < Ketqua.Count; i++)
            {
                foreach (var item1 in thongKes)
                {
                    foreach (var item in Ketqua[i].ketQuaThi.De_Thi.Danh_Gia)
                    {
                        if (item1.MaChuong == item.MaChuong)
                        {
                            if (item.DanhGia.Equals("Yếu"))
                            {
                                item1.Yeu++;
                            }
                            if (item.DanhGia.Equals("Trung Bình"))
                            {
                                item1.tb++;
                            }

                            if (item.DanhGia.Equals("Khá"))
                            {
                                item1.kha++;
                            }
                            if (item.DanhGia.Equals("Giỏi"))
                            {
                                item1.gioi++;
                            }
                        }
                    }
                }
            }

            ViewBag.DanhGia = DanhGia;


            var arr = from c in DanhGia
                      select new
            {
                ten = c.Chuong_Hoc.TenChuong,
                gt  = c.DanhGia
            };
            var arr1 = from c in thongKes
                       select new
            {
                c.TenChuong,
                c.tb,
                c.kha,
                c.gioi,
                c.Yeu
            };

            return(Json(new
            {
                mang = arr,
                arr1
            }, JsonRequestBehavior.AllowGet));
        }
Exemplo n.º 4
0
        public void Mark(DanhGia exam, int a)
        {
            TracNghiemOnlineDB db = new TracNghiemOnlineDB();
            // exam.Da_SVLuaChon = db.Da_SVLuaChon.Where(x => x.MaDeThi == exam.MaDeThi).ToList();
            int socauDung   = 0;
            var kho_CauHoi2 = new List <Kho_CauHoi>();
            var kho_CauHoi1 = new List <Kho_CauHoi>();
            var noiDungThis = new List <NoiDungThi>();

            foreach (var item in exam.ketQuaThi1.CauHoiDeThis)
            {
                var khocauhoi = db.Kho_CauHoi.Find(item.Kho_CauHoi.Ma_CauHoi);
                item.Kho_CauHoi = khocauhoi;
                kho_CauHoi2.Add(khocauhoi);
                foreach (var item1 in khocauhoi.Dap_AN)
                {
                    if (exam.ketQuaThi1.Da_SVLuaChon.ToList().Exists(x => x.Ma_DAN == item1.MA_DAN && item1.TrangThai == true))
                    {
                        socauDung++;
                        kho_CauHoi1.Add(khocauhoi);
                    }
                }
            }
            // Lay Ra So Cau sv da lam dung cua moi chuong
            foreach (var item0 in exam.DanhGiaMucDo1)
            {
                noiDungThis.Add(item0);

                item0.noidung.Kho_CauHoi = kho_CauHoi1.Where(x => x.Ma_Chuong == item0.noidung.Ma_Chuong).ToList();
            }
            DanhGia danhGia = new DanhGia();

            //danhGia.DanhGiaMucDo = new List<SoLuongChuong>();
            //danhGia.ketQuaThi = new KetQuaThi();
            exam.ketQuaThi1.Danh_Gia = new List <Modell.Danh_Gia>();
            for (int i = 0; i < exam.DanhGiaMucDo1.Count; i++)
            {
                db = new TracNghiemOnlineDB();
                double a1 = (double)(kho_CauHoi1.Where(X => X.MucDo.Equals("Nhận Biết") && X.Ma_Chuong == exam.DanhGiaMucDo1[i].noidung.Ma_Chuong).ToList().Count) * (double)1;
                double a2 = (double)(kho_CauHoi1.Where(X => X.MucDo.Equals("Thông Hiểu") && X.Ma_Chuong == exam.DanhGiaMucDo1[i].noidung.Ma_Chuong).ToList().Count) * (double)2;
                double a3 = (double)(kho_CauHoi1.Where(X => X.MucDo.Equals("Vận Dụng") && X.Ma_Chuong == exam.DanhGiaMucDo1[i].noidung.Ma_Chuong).ToList().Count) * (double)3;
                double a4 = (double)(kho_CauHoi1.Where(X => X.MucDo.Equals("Vận Dụng Cao") && X.Ma_Chuong == exam.DanhGiaMucDo1[i].noidung.Ma_Chuong).ToList().Count) * (double)4;



                exam.DanhGiaMucDo1[i].nhanbiet   = (kho_CauHoi1.Where(X => X.MucDo.Equals("Nhận Biết") && X.Ma_Chuong == exam.DanhGiaMucDo1[i].noidung.Ma_Chuong).ToList().Count) + "/" + (kho_CauHoi2.Where(X => X.MucDo.Equals("Nhận Biết") && X.Ma_Chuong == exam.DanhGiaMucDo1[i].noidung.Ma_Chuong).ToList().Count);
                exam.DanhGiaMucDo1[i].Thonghieu  = (kho_CauHoi1.Where(X => X.MucDo.Equals("Thông Hiểu") && X.Ma_Chuong == exam.DanhGiaMucDo1[i].noidung.Ma_Chuong).ToList().Count) + "/" + (kho_CauHoi2.Where(X => X.MucDo.Equals("Thông Hiểu") && X.Ma_Chuong == exam.DanhGiaMucDo1[i].noidung.Ma_Chuong).ToList().Count);
                exam.DanhGiaMucDo1[i].vandung    = (kho_CauHoi1.Where(X => X.MucDo.Equals("Vận Dụng") && X.Ma_Chuong == exam.DanhGiaMucDo1[i].noidung.Ma_Chuong).ToList().Count) + "/" + (kho_CauHoi2.Where(X => X.MucDo.Equals("Vận Dụng") && X.Ma_Chuong == exam.DanhGiaMucDo1[i].noidung.Ma_Chuong).ToList().Count);
                exam.DanhGiaMucDo1[i].vandungcao = (kho_CauHoi1.Where(X => X.MucDo.Equals("Vận Dụng Cao") && X.Ma_Chuong == exam.DanhGiaMucDo1[i].noidung.Ma_Chuong).ToList().Count) + "/" + (kho_CauHoi2.Where(X => X.MucDo.Equals("Vận Dụng Cao") && X.Ma_Chuong == exam.DanhGiaMucDo1[i].noidung.Ma_Chuong).ToList().Count);

                double b1 = (double)(kho_CauHoi2.Where(X => X.MucDo.Equals("Nhận Biết") && X.Ma_Chuong == exam.DanhGiaMucDo1[i].noidung.Ma_Chuong).ToList().Count) * (double)1;
                double b2 = (double)(kho_CauHoi2.Where(X => X.MucDo.Equals("Thông Hiểu") && X.Ma_Chuong == exam.DanhGiaMucDo1[i].noidung.Ma_Chuong).ToList().Count) * (double)2;
                double b3 = (double)(kho_CauHoi2.Where(X => X.MucDo.Equals("Vận Dụng") && X.Ma_Chuong == exam.DanhGiaMucDo1[i].noidung.Ma_Chuong).ToList().Count) * (double)3;
                double b4 = (double)(kho_CauHoi2.Where(X => X.MucDo.Equals("Vận Dụng Cao") && X.Ma_Chuong == exam.DanhGiaMucDo1[i].noidung.Ma_Chuong).ToList().Count) * (double)4;



                double DG = 0;
                double A  = a1 + a2 + a3 + a4;
                double b  = b1 + b2 + b3 + b4;
                DG = (double)(A / b) * 10;
                double tile = 0;

                tile = (double)((double)(kho_CauHoi1.Where(x => x.Ma_Chuong == exam.DanhGiaMucDo1[i].noidung.Ma_Chuong).ToList().Count) / (double)(kho_CauHoi2.Where(x => x.Ma_Chuong == exam.DanhGiaMucDo1[i].noidung.Ma_Chuong).ToList().Count) * (double)100);

                Danh_Gia danhGia1 = new Danh_Gia();
                danhGia1.Diem     = DG;
                danhGia1.MaChuong = exam.DanhGiaMucDo1[i].noidung.Ma_Chuong;
                exam.ketQuaThi1.Danh_Gia.Add(danhGia1);
                tile = Math.Round(tile, 3);
                exam.DanhGiaMucDo1[i].danh_Gia           = new DanhGia1();
                exam.DanhGiaMucDo1[i].danh_Gia.NhanXet   = new string[100];
                exam.DanhGiaMucDo1[i].danh_Gia.SoCauDung = (kho_CauHoi1.Where(x => x.Ma_Chuong == exam.DanhGiaMucDo1[i].noidung.Ma_Chuong).ToList().Count);
                exam.DanhGiaMucDo1[i].danh_Gia.TongCau   = kho_CauHoi2.Where(x => x.Ma_Chuong == exam.DanhGiaMucDo1[i].noidung.Ma_Chuong).ToList().Count;

                exam.DanhGiaMucDo1[i].danh_Gia.NhanXet[0] = "Bạn làm đúng (" + (kho_CauHoi1.Where(x => x.Ma_Chuong == exam.DanhGiaMucDo1[i].noidung.Ma_Chuong).ToList().Count) + "/" + kho_CauHoi2.Where(x => x.Ma_Chuong == exam.DanhGiaMucDo1[i].noidung.Ma_Chuong).ToList().Count + " đạt tỉ lệ " + tile + " %) \n";
                if (DG < 5)
                {
                    exam.DanhGiaMucDo1[i].danh_Gia.DanhGia = 1;

                    exam.DanhGiaMucDo1[i].danh_Gia.NhanXet[1] = "-Kiến thức phần này của bạn còn rất hạn chế điểm phần này bài test còn chưa cao.Bạn cần cố gắng cải thiện hơn nữa";
                }
                else if (DG >= 5 && DG < 7)
                {
                    exam.DanhGiaMucDo1[i].danh_Gia.DanhGia    = 2;
                    exam.DanhGiaMucDo1[i].danh_Gia.NhanXet[1] = "Kiến thức của bạn ở phần này chỉ ở mức trung bình. Bạn cần cố gắng hơn để cải thiện thành tích của mình";
                }

                else if (DG >= 7 && DG < 8.5)
                {
                    exam.DanhGiaMucDo1[i].danh_Gia.DanhGia    = 3;
                    exam.DanhGiaMucDo1[i].danh_Gia.NhanXet[1] = "Kiến thức của bạn ở phần này khá tốt. Bạn cố gắng thêm để đặt được số điểm cao hơn nữa";
                }
                else if (DG >= 8.5)
                {
                    exam.DanhGiaMucDo1[i].danh_Gia.DanhGia    = 4;
                    exam.DanhGiaMucDo1[i].danh_Gia.NhanXet[1] = "Kiến thức của bạn ở phần bạn rất làm rất tốt. Bạn cố gắng duy trì phong độ nhé";
                }
            }

            db = new TracNghiemOnlineDB();

            double Hediem = (double)((double)10 / (double)(exam.ketQuaThi1.CauHoiDeThis.Count));

            exam.ketQuaThi1.DiêmSo = Math.Round((double)((double)(socauDung) * (double)(Hediem)), 3);
            if (a == 1)
            {
                De_Thi deThi = new De_Thi();
                deThi.Ma_SV       = exam.ketQuaThi1.Ma_SV;
                deThi.NgayThi     = exam.ketQuaThi1.NgayThi;
                deThi.DiêmSo      = Math.Round((double)((double)(socauDung) * (double)(Hediem)), 3);
                deThi.ThoiGianThi = exam.ketQuaThi1.ThoiGianThi;
                deThi.MaMon       = exam.ketQuaThi1.MaMon;
                db.De_Thi.Add(deThi);
                db.SaveChanges();
                deThi.MaDeThi = db.De_Thi.Where(x => x.Ma_SV.Equals(deThi.Ma_SV)).ToList().Last().MaDeThi;
                int i = 0;
                foreach (var item in exam.ketQuaThi1.Danh_Gia)
                {
                    Danh_Gia danhGia1 = new  Danh_Gia();
                    danhGia1.Diem      = item.Diem;
                    danhGia1.MaDeThi   = deThi.MaDeThi;
                    danhGia1.MaChuong  = item.MaChuong;
                    danhGia1.TongCau   = exam.DanhGiaMucDo1[i].danh_Gia.SoCauDung;
                    danhGia1.SoCauDung = exam.DanhGiaMucDo1[i].danh_Gia.TongCau;
                    db.Danh_Gia.Add(danhGia1);
                    i++;
                    db.SaveChanges();
                }

                foreach (var item in exam.ketQuaThi1.CauHoiDeThis)
                {
                    CauHoiDeThi cau_Hoi = new CauHoiDeThi();
                    cau_Hoi.MaDeThi  = deThi.MaDeThi;
                    cau_Hoi.MaCauHoi = item.MaCauHoi;
                    db.CauHoiDeThis.Add(cau_Hoi);
                    db.SaveChanges();
                }
                foreach (var item in exam.ketQuaThi1.Da_SVLuaChon)
                {
                    Da_SVLuaChon da_Lua = new Da_SVLuaChon();
                    da_Lua.MaDeThi = deThi.MaDeThi;
                    da_Lua.Ma_DAN  = item.Ma_DAN;
                    db.Da_SVLuaChon.Add(da_Lua);
                    db.SaveChanges();
                }
            }
        }
Exemplo n.º 5
0
        public DanhGia Mark(De_Thi exam)
        {
            exam.Da_SVLuaChon = db.Da_SVLuaChon.Where(x => x.MaDeThi == exam.MaDeThi).ToList();
            int socauDung = 0;
            var Bode      = db.Bo_De.Where(x => x.Ma_BoDe == exam.Ma_BoDe).ToList().First();

            List <Kho_CauHoi> kho_CauHois = new List <Kho_CauHoi>();
            List <Chuong_Hoc> chuonghoc1  = new List <Chuong_Hoc>();
            List <Chuong_Hoc> chuong2     = new List <Chuong_Hoc>();

            foreach (var item in exam.CauHoiDeThis)
            {
                kho_CauHois.Add(item.Kho_CauHoi);
            }
            //Lay Ra So Cau HOI cua moi chuong
            foreach (var item in db.Chuong_Hoc.Where(x => x.Ma_Mon == Bode.Ma_Mon).ToList())
            {
                Chuong_Hoc chuong = new Chuong_Hoc();
                chuong.Ma_Chuong  = item.Ma_Chuong;
                chuong.TenChuong  = item.TenChuong;
                chuong.Kho_CauHoi = new List <Kho_CauHoi>();
                chuonghoc1.Add(chuong);
            }

            foreach (var item in db.Chuong_Hoc.Where(x => x.Ma_Mon == Bode.Ma_Mon).ToList())
            {
                Chuong_Hoc chuong = new Chuong_Hoc();
                chuong.Ma_Chuong  = item.Ma_Chuong;
                chuong.Kho_CauHoi = new List <Kho_CauHoi>();
                chuong2.Add(chuong);
            }
            foreach (var item in chuonghoc1)
            {
                foreach (var item1 in kho_CauHois.Where(x => x.Ma_Chuong == item.Ma_Chuong).ToList())
                {
                    item.Kho_CauHoi.Add(item1);
                }
            }

            //Lay Ra So Cau sv da lam  dung cua moi chuong
            var kho_CauHoi1 = new List <Kho_CauHoi>();

            foreach (var item in exam.CauHoiDeThis)
            {
                item.Kho_CauHoi = new CauHoiDao().Question(item.Kho_CauHoi.Ma_CauHoi);
                foreach (var item1 in item.Kho_CauHoi.Dap_AN)
                {
                    if (exam.Da_SVLuaChon.ToList().Exists(x => x.Ma_DAN == item1.MA_DAN && item1.TrangThai == true))
                    {
                        socauDung++;
                        kho_CauHoi1.Add(item.Kho_CauHoi);
                    }
                }
            }
            //  Lay Ra So Cau sv da lam dung cua moi chuong
            foreach (var item0 in chuong2)
            {
                item0.Kho_CauHoi = kho_CauHoi1.Where(x => x.Ma_Chuong == item0.Ma_Chuong).ToList();
            }
            DanhGia danhGia = new DanhGia();

            danhGia.DanhGiaMucDo = new List <SoLuongChuong>();
            danhGia.ketQuaThi    = new KetQuaThi();
            for (int i = 0; i < chuonghoc1.Count; i++)
            {
                if (chuonghoc1[i].Kho_CauHoi.Count > 0)
                {
                    db = new TracNghiemOnlineDB();
                    Danh_Gia      danh_Gia      = new Danh_Gia();
                    SoLuongChuong soLuongChuong = new SoLuongChuong();
                    danh_Gia.MaChuong       = chuonghoc1[i].Ma_Chuong;
                    danh_Gia.MaDeThi        = exam.MaDeThi;
                    danh_Gia.SoCauDung      = chuong2[i].Kho_CauHoi.Count;
                    danh_Gia.TongCau        = chuonghoc1[i].Kho_CauHoi.Count;
                    soLuongChuong.TongSoCau = "" + danh_Gia.SoCauDung + "/" + danh_Gia.TongCau;
                    double a1 = (double)(chuong2[i].Kho_CauHoi.Where(X => X.MucDo.Equals("Nhận Biết")).ToList().Count * 1);
                    double a2 = (double)(chuong2[i].Kho_CauHoi.Where(X => X.MucDo.Equals("Thông Hiểu")).ToList().Count * 2);
                    double a3 = (double)(chuong2[i].Kho_CauHoi.Where(X => X.MucDo.Equals("Vận Dụng")).ToList().Count * 3);
                    double a4 = (double)(chuong2[i].Kho_CauHoi.Where(X => X.MucDo.Equals("Vận Dụng Cao")).ToList().Count * 4);


                    soLuongChuong.Chuong   = chuonghoc1[i];
                    soLuongChuong.nhanBiet = chuong2[i].Kho_CauHoi.Where(X => X.MucDo.Equals("Nhận Biết")).ToList().Count + "/" +
                                             chuonghoc1[i].Kho_CauHoi.Where(X => X.MucDo.Equals("Nhận Biết")).ToList().Count;


                    soLuongChuong.thongHieu = chuong2[i].Kho_CauHoi.Where(X => X.MucDo.Equals("Thông Hiểu")).ToList().Count + "/" +
                                              chuonghoc1[i].Kho_CauHoi.Where(X => X.MucDo.Equals("Thông Hiểu")).ToList().Count;

                    soLuongChuong.vandung = chuong2[i].Kho_CauHoi.Where(X => X.MucDo.Equals("Vận Dụng")).ToList().Count + "/" +
                                            chuonghoc1[i].Kho_CauHoi.Where(X => X.MucDo.Equals("Vận Dụng")).ToList().Count;

                    soLuongChuong.vandungcao = chuong2[i].Kho_CauHoi.Where(X => X.MucDo.Equals("Vận Dụng Cao")).ToList().Count + "/" +
                                               chuonghoc1[i].Kho_CauHoi.Where(X => X.MucDo.Equals("Vận Dụng Cao")).ToList().Count;
                    danhGia.DanhGiaMucDo.Add(soLuongChuong);

                    double b1 = (double)(chuonghoc1[i].Kho_CauHoi.Where(X => X.MucDo.Equals("Nhận Biết")).ToList().Count * 1);
                    double b2 = (double)(chuonghoc1[i].Kho_CauHoi.Where(X => X.MucDo.Equals("Thông Hiểu")).ToList().Count * 2);
                    double b3 = (double)(chuonghoc1[i].Kho_CauHoi.Where(X => X.MucDo.Equals("Vận Dụng")).ToList().Count * 3);
                    double b4 = (double)(chuonghoc1[i].Kho_CauHoi.Where(X => X.MucDo.Equals("Vận Dụng Cao")).ToList().Count * 4);

                    double DG = 0;
                    double A  = a1 + a2 + a3 + a4;
                    double b  = b1 + b2 + b3 + b4;
                    DG = (double)(A / b) * 10;
                    double tile = ((double)danh_Gia.SoCauDung / (double)danh_Gia.TongCau) * 100;
                    tile             = Math.Round((double)tile, 2);
                    danh_Gia.NhanXet = "Bạn làm đúng (" + soLuongChuong.TongSoCau + " đạt tỉ lệ " + tile + " %) \n                                                      ";
                    if (DG < 5)
                    {
                        danh_Gia.DanhGia = "Yếu";

                        danh_Gia.NhanXet += "-Kiến thức phần này của bạn còn rất hạn chế điểm phần này bài test còn chưa cao.Bạn cần cố gắng cải thiện hơn nữa";
                    }
                    if (DG >= 5 && DG < 7)
                    {
                        danh_Gia.DanhGia  = "Trung Bình";
                        danh_Gia.NhanXet += "Kiến thức của bạn ở phần này chỉ ở mức trung bình. Bạn cần cố gắng hơn để cải thiện thành tích của mình";
                    }

                    if (DG >= 7 && DG < 8.5)
                    {
                        danh_Gia.DanhGia  = "Khá";
                        danh_Gia.NhanXet += "Kiến thức của bạn ở phần này khá tốt. Bạn cố gắng thêm để đặt được số điểm cao hơn nữa";
                    }
                    if (DG >= 8.5)
                    {
                        danh_Gia.DanhGia  = "Giỏi";
                        danh_Gia.NhanXet += "Kiến thức của bạn ở phần bạn rất làm rất tốt. Bạn cố gắng duy trì phong độ nhé";
                    }

                    danh_Gia.Chuong_Hoc = db.Chuong_Hoc.Find(danh_Gia.MaChuong);
                    exam.Danh_Gia.Add(danh_Gia);
                }
            }


            double Hediem = (double)((double)10 / (double)(exam.CauHoiDeThis.Count));

            KetQuaThi ketQuaThi = new KetQuaThi();

            ketQuaThi.Ma_DeThi  = exam.MaDeThi;
            ketQuaThi.NgayThi   = DateTime.Now;
            ketQuaThi.SoCauDung = socauDung;
            ketQuaThi.SoCauSai  = exam.CauHoiDeThis.Count - socauDung;
            ketQuaThi.DiemSo    = (double)(socauDung) * (double)(Hediem);
            exam.Bo_De          = Bode;
            //    exam.Bo_De.
            ketQuaThi.De_Thi          = exam;
            ketQuaThi.De_Thi.SinhVien = db.SinhViens.Find(exam.Ma_SV);
            danhGia.ketQuaThi         = ketQuaThi;
            try
            {
                if (ketQuaThi.DiemSo >= 1 && exam.DiemTru != 0)
                {
                    var pt = (ketQuaThi.DiemSo * exam.DiemTru) / (double)100;
                    ketQuaThi.DiemSo = ketQuaThi.DiemSo - pt;
                }
            }
            catch { }
            ketQuaThi.DiemSo = Math.Round((double)ketQuaThi.DiemSo, 2);

            return(danhGia);
        }