private void btHDK_Click(object sender, EventArgs e)
        {
            if (dataGridView2.Rows.Count > 0)
            {
                string idLopHP;
                idLopHP = dataGridView2.Rows[dataGridView2.CurrentRow.Index].Cells[0].Value.ToString().Trim();

                string tt = new LopHocPhanBLL().GetTrangThai(idLopHP);
                if (tt == "Đã Mở Lớp")
                {
                    MessageBox.Show("Lớp học phần đang trong trạng thái " + tt + " không thể hủy", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }
                bool k = new DangKyHocPhanBLL().HuyDangKy(eSV.ID_SinhVien, idLopHP);
                if (k == true)
                {
                    MessageBox.Show("Hủy Đăng Ký Thành Công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    new DiemBLL().DelDiem(eSV.ID_SinhVien, idLopHP);
                    LoadDanhSachDaDangKy();
                    LoadDSLopHocPhan();
                    dgvDanhSachLopHP.ClearSelection();
                    lichHocLTViewModelsBindingSource.DataSource    = null;
                    nhomThucHanhViewModelsBindingSource.DataSource = null;
                    lichHocTHViewModelsBindingSource.DataSource    = null;
                }
                else
                {
                    MessageBox.Show("Hủy đăng ký không thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }
 private void btnXoa_Click(object sender, EventArgs e)
 {
     if (cbTrangThai.SelectedItem.ToString().Trim() == "Lên Kế Hoạch" || cbTrangThai.SelectedItem.ToString().Trim() == "Đã Hủy")
     {
         bool kq = new LopHocPhanBLL().XoaLopHocPhan(txtID.Text.Trim());
         if (kq == true)
         {
             MessageBox.Show("Xóa thành công", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
             LoadDanhSachLopHocPhan(new LopHocPhanBLL().GetAllLopHocPhan());
             this.XemThongTin();
         }
         else
         {
             MessageBox.Show("Xóa không thành công", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
         }
     }
     else
     {
         MessageBox.Show("Lớp học phần trong trạng thái " + cbTrangThai.SelectedItem.ToString() + " không thể xóa", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
     }
 }
        private void btDK_Click(object sender, EventArgs e)
        {
            string idLopHP;
            string idNhomTH;

            if (dgvDanhSachLopHP.Rows.Count == 0) //hoc ky ko co hoc phan dang ky
            {
                return;
            }

            if (dgvDanhSachLopHP.Rows.Count > 0)
            {
                if (dgvLichHocLT.Rows.Count == 0)//Chưa chọn lớp học phần
                {
                    MessageBox.Show("Vui lòng chọn lớp học phần muốn đăng ký", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);

                    return;
                }
                if (dgvDanhSachNhom.Rows.Count == 0)// khong co nhom thuc hanh
                {
                    idLopHP  = dgvDanhSachLopHP.Rows[dgvDanhSachLopHP.CurrentRow.Index].Cells[0].Value.ToString().Trim();
                    idNhomTH = "";
                }
                else // co nhom thuc hanh
                {
                    if (dgvLichTH.Rows.Count == 0) //chưa chọn nhóm thực hành
                    {
                        MessageBox.Show("Vui lòng chọn nhóm thực hành", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return;
                    }
                    idLopHP  = dgvDanhSachLopHP.Rows[dgvDanhSachLopHP.CurrentRow.Index].Cells[0].Value.ToString().Trim();
                    idNhomTH = dgvDanhSachNhom.Rows[dgvDanhSachNhom.CurrentRow.Index].Cells[0].Value.ToString().Trim();
                }
                //kt trạng thái lớp học phần
                string tt = new LopHocPhanBLL().GetTrangThai(idLopHP).Trim();
                if (tt != "Chờ Sinh Viên Đăng Ký")
                {
                    MessageBox.Show("Lớp học phần đang trong trạng thái " + tt + " không thể đăng ký", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }

                //Kiểm tra lịch trùng nếu sai thì thông báo và return
                bool kt = new LichHocBLL().CheckLichTrung(eSV.ID_SinhVien, idLopHP, idNhomTH, cbHocKiSearch.SelectedItem.ToString().Trim(), int.Parse(cbNamHocSearch.SelectedValue.ToString().Trim()));
                if (kt == true)
                {
                    MessageBox.Show("Không thể đăng ký vì bị trùng lịch", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);

                    return;
                }
                else//dang ky hoc phan
                {
                    bool k = new DangKyHocPhanBLL().DangKy(eSV.ID_SinhVien, idLopHP, idNhomTH);
                    if (k == true)
                    {
                        MessageBox.Show("Đăng Ký Thành Công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        new DiemBLL().AddDiem(eSV.ID_SinhVien, idLopHP);
                        LoadDanhSachDaDangKy();
                        LoadDSLopHocPhan();
                        dgvDanhSachLopHP.ClearSelection();
                        lichHocLTViewModelsBindingSource.DataSource    = null;
                        nhomThucHanhViewModelsBindingSource.DataSource = null;
                        lichHocTHViewModelsBindingSource.DataSource    = null;
                    }
                    else
                    {
                        MessageBox.Show("Đăng Ký Thất Bại", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
            }
        }
        public void AddPanelTH(eLichHoc_NhomThucHanh x)
        {
            eLopHocPhan   a = new LopHocPhanBLL().GetLopHocPhanByIDNhomTH(x.ID_NhomThucHanh);
            eNhomThucHanh b = new NhomThucHanhBLL().GetNhomByID(x.ID_NhomThucHanh);
            ePhongHoc     c = new PhongHocBLL().GetPhongHocByID(x.ID_PhongHoc);
            eHocPhan      d = new HocPhanBLL().GetHocPhanByID(a.ID_HocPhan);
            eGiangVien    e = new GiangVienBLL().GetGiangVienByID(a.ID_GiangVien);

            frmPnLich pnLich = new frmPnLich(a.ID_LopHocPhan.Trim(), d.TenMonHoc.Trim(), e.HoVaTen.Trim(), x.TietHoc, c.TenPhongHoc, b.TenNhom.Trim(), b.NgayBatDau.Value.ToShortDateString(), b.NgayKetThuc.Value.ToShortDateString());

            pnLich.TopLevel        = false;
            pnLich.FormBorderStyle = FormBorderStyle.None;
            pnLich.Visible         = true;

            #region
            x.NgayHoc = x.NgayHoc.Trim();
            x.TietHoc = x.TietHoc.Trim();
            if (x.NgayHoc == "Thứ Hai" && (x.TietHoc == "1-3" || x.TietHoc == "1-2" || x.TietHoc == "2-3" || x.TietHoc == "1-5"))
            {
                panel1.Controls.Add(pnLich);
                return;
            }
            if (x.NgayHoc == "Thứ Ba" && (x.TietHoc == "1-3" || x.TietHoc == "1-2" || x.TietHoc == "2-3" || x.TietHoc == "1-5"))
            {
                panel2.Controls.Add(pnLich);
                return;
            }
            if (x.NgayHoc == "Thứ Tư" && (x.TietHoc == "1-3" || x.TietHoc == "1-2" || x.TietHoc == "2-3" || x.TietHoc == "1-5"))
            {
                panel3.Controls.Add(pnLich);
                return;
            }
            if (x.NgayHoc == "Thứ Năm" && (x.TietHoc == "1-3" || x.TietHoc == "1-2" || x.TietHoc == "2-3" || x.TietHoc == "1-5"))
            {
                panel4.Controls.Add(pnLich);
                return;
            }
            if (x.NgayHoc == "Thứ Sáu" && (x.TietHoc == "1-3" || x.TietHoc == "1-2" || x.TietHoc == "2-3" || x.TietHoc == "1-5"))
            {
                panel5.Controls.Add(pnLich);
                return;
            }
            if (x.NgayHoc == "Thứ Bảy" && (x.TietHoc == "1-3" || x.TietHoc == "1-2" || x.TietHoc == "2-3" || x.TietHoc == "1-5"))
            {
                panel6.Controls.Add(pnLich);
                return;
            }
            if (x.NgayHoc == "Chủ Nhật" && (x.TietHoc == "1-3" || x.TietHoc == "1-2" || x.TietHoc == "2-3" || x.TietHoc == "1-5"))
            {
                panel7.Controls.Add(pnLich);
                return;
            }
            //
            if (x.NgayHoc == "Thứ Hai" && (x.TietHoc == "4-6" || x.TietHoc == "4-5" || x.TietHoc == "5-6"))
            {
                panel8.Controls.Add(pnLich);
                return;
            }
            if (x.NgayHoc == "Thứ Ba" && (x.TietHoc == "4-6" || x.TietHoc == "4-5" || x.TietHoc == "5-6"))
            {
                panel9.Controls.Add(pnLich);
                return;
            }
            if (x.NgayHoc == "Thứ Tư" && (x.TietHoc == "4-6" || x.TietHoc == "4-5" || x.TietHoc == "5-6"))
            {
                panel10.Controls.Add(pnLich);
                return;
            }
            if (x.NgayHoc == "Thứ Năm" && (x.TietHoc == "4-6" || x.TietHoc == "4-5" || x.TietHoc == "5-6"))
            {
                panel11.Controls.Add(pnLich);
                return;
            }
            if (x.NgayHoc == "Thứ Sáu" && (x.TietHoc == "4-6" || x.TietHoc == "4-5" || x.TietHoc == "5-6"))
            {
                panel12.Controls.Add(pnLich);
                return;
            }
            if (x.NgayHoc == "Thứ Bảy" && (x.TietHoc == "4-6" || x.TietHoc == "4-5" || x.TietHoc == "5-6"))
            {
                panel13.Controls.Add(pnLich);
                return;
            }
            if (x.NgayHoc == "Chủ Nhật" && (x.TietHoc == "4-6" || x.TietHoc == "4-5" || x.TietHoc == "5-6"))
            {
                panel14.Controls.Add(pnLich);
                return;
            }
            //7-9
            if (x.NgayHoc == "Thứ Hai" && (x.TietHoc == "7-9" || x.TietHoc == "7-8" || x.TietHoc == "8-9" || x.TietHoc == "7-12"))
            {
                panel15.Controls.Add(pnLich);
                return;
            }
            if (x.NgayHoc == "Thứ Ba" && (x.TietHoc == "7-9" || x.TietHoc == "7-8" || x.TietHoc == "8-9" || x.TietHoc == "7-12"))
            {
                panel16.Controls.Add(pnLich);
                return;
            }
            if (x.NgayHoc == "Thứ Tư" && (x.TietHoc == "7-9" || x.TietHoc == "7-8" || x.TietHoc == "8-9" || x.TietHoc == "7-12"))
            {
                panel17.Controls.Add(pnLich);
                return;
            }
            if (x.NgayHoc == "Thứ Năm" && (x.TietHoc == "7-9" || x.TietHoc == "7-8" || x.TietHoc == "8-9" || x.TietHoc == "7-12"))
            {
                panel18.Controls.Add(pnLich);
                return;
            }
            if (x.NgayHoc == "Thứ Sáu" && (x.TietHoc == "7-9" || x.TietHoc == "7-8" || x.TietHoc == "8-9" || x.TietHoc == "7-12"))
            {
                panel19.Controls.Add(pnLich);
                return;
            }
            if (x.NgayHoc == "Thứ Bảy" && (x.TietHoc == "7-9" || x.TietHoc == "7-8" || x.TietHoc == "8-9" || x.TietHoc == "7-12"))
            {
                panel20.Controls.Add(pnLich);
                return;
            }
            if (x.NgayHoc == "Chủ Nhật" && (x.TietHoc == "7-9" || x.TietHoc == "7-8" || x.TietHoc == "8-9" || x.TietHoc == "7-12"))
            {
                panel21.Controls.Add(pnLich);
                return;
            }
            //10-12
            if (x.NgayHoc == "Thứ Hai" && (x.TietHoc == "10-12" || x.TietHoc == "10-11" || x.TietHoc == "11-12"))
            {
                panel22.Controls.Add(pnLich);
                return;
            }
            if (x.NgayHoc == "Thứ Ba" && (x.TietHoc == "10-12" || x.TietHoc == "10-11" || x.TietHoc == "11-12"))
            {
                panel23.Controls.Add(pnLich);
                return;
            }
            if (x.NgayHoc == "Thứ Tư" && (x.TietHoc == "10-12" || x.TietHoc == "10-11" || x.TietHoc == "11-12"))
            {
                panel24.Controls.Add(pnLich);
                return;
            }
            if (x.NgayHoc == "Thứ Năm" && (x.TietHoc == "10-12" || x.TietHoc == "10-11" || x.TietHoc == "11-12"))
            {
                panel25.Controls.Add(pnLich);
                return;
            }
            if (x.NgayHoc == "Thứ Sáu" && (x.TietHoc == "10-12" || x.TietHoc == "10-11" || x.TietHoc == "11-12"))
            {
                panel26.Controls.Add(pnLich);
                return;
            }
            if (x.NgayHoc == "Thứ Bảy" && (x.TietHoc == "10-12" || x.TietHoc == "10-11" || x.TietHoc == "11-12"))
            {
                panel27.Controls.Add(pnLich);
                return;
            }
            if (x.NgayHoc == "Chủ Nhật" && (x.TietHoc == "10-12" || x.TietHoc == "10-11" || x.TietHoc == "11-12"))
            {
                panel28.Controls.Add(pnLich);
                return;
            }
            //13-15
            if (x.NgayHoc == "Thứ Hai" && (x.TietHoc == "13-15" || x.TietHoc == "13-14" || x.TietHoc == "14-15"))
            {
                panel29.Controls.Add(pnLich);
                return;
            }
            if (x.NgayHoc == "Thứ Ba" && (x.TietHoc == "13-15" || x.TietHoc == "13-14" || x.TietHoc == "14-15"))
            {
                panel30.Controls.Add(pnLich);
                return;
            }
            if (x.NgayHoc == "Thứ Tư" && (x.TietHoc == "13-15" || x.TietHoc == "13-14" || x.TietHoc == "14-15"))
            {
                panel31.Controls.Add(pnLich);
                return;
            }
            if (x.NgayHoc == "Thứ Năm" && (x.TietHoc == "13-15" || x.TietHoc == "13-14" || x.TietHoc == "14-15"))
            {
                panel32.Controls.Add(pnLich);
                return;
            }
            if (x.NgayHoc == "Thứ Sáu" && (x.TietHoc == "13-15" || x.TietHoc == "13-14" || x.TietHoc == "14-15"))
            {
                panel33.Controls.Add(pnLich);
                return;
            }
            if (x.NgayHoc == "Thứ Bảy" && (x.TietHoc == "13-15" || x.TietHoc == "13-14" || x.TietHoc == "14-15"))
            {
                panel34.Controls.Add(pnLich);
                return;
            }
            if (x.NgayHoc == "Chủ Nhật" && (x.TietHoc == "13-15" || x.TietHoc == "13-14" || x.TietHoc == "14-15"))
            {
                panel35.Controls.Add(pnLich);
                return;
            }
            #endregion
        }
        public void LoadDiem()
        {
            string      id   = tbIDLopHP.Text.Trim();
            eLopHocPhan elhp = new LopHocPhanBLL().GetLopHocPhanbyID(id);

            if (elhp != null)
            {
                LopHocPhanViewModels lopHP = new LopHocPhanViewModels
                {
                    ID_LopHocPhan  = elhp.ID_LopHocPhan.Trim(),
                    HocKy          = elhp.HocKy,
                    ID_GiangVien   = elhp.ID_GiangVien.Trim(),
                    TenGiangVien   = new GiangVienBLL().GetGiangVienByID(elhp.ID_GiangVien.Trim()).HoVaTen.Trim(),
                    ID_HocPhan     = elhp.ID_HocPhan,
                    ID_NhanVienPDT = elhp.ID_NhanVienPDT,
                    ID_NienKhoa    = elhp.ID_NienKhoa,
                    NgayBatDau     = elhp.NgayBatDau,
                    NgayKetThuc    = elhp.NgayKetThuc,
                    NienKhoa       = new NienKhoaBLL().GetNienKhoaByID(elhp.ID_NienKhoa.Value).NienKhoa1,
                    SoLuong        = elhp.SoLuong,
                    SoTiet         = elhp.SoTiet,
                    TenMonHoc      = new HocPhanBLL().GetHocPhanByID(elhp.ID_HocPhan.Trim()).TenMonHoc.Trim(),
                    TrangThai      = elhp.TrangThai
                };
                lbMonHoc.Text    = "Tên Môn Học: " + lopHP.TenMonHoc.Trim();
                lbSoTC.Text      = "Số Tín Chỉ: " + new HocPhanBLL().GetHocPhanByID(lopHP.ID_HocPhan).SoTC.ToString();
                lbHocKy.Text     = "Học kỳ: " + "Kỳ " + lopHP.HocKy + " (" + lopHP.NienKhoa + ")";
                lbGiangVien.Text = "Giảng Viên: " + lopHP.TenGiangVien;


                List <DiemLopHocPhanViewModels> lst = new DiemBLL().GetDiemLopHocPhan(id).Select(t => new DiemLopHocPhanViewModels
                {
                    ID_SinhVien   = t.ID_SinhVien,
                    HoVaTen       = new SinhVienBLL().GetSinhVienByID(t.ID_SinhVien).HoVaTen,
                    TenLopNienChe = new LopNienCheBLL().GetLopNienCheByID(new SinhVienBLL().GetSinhVienByID(t.ID_SinhVien).ID_LopNienChe.Trim()).TenLop.Trim(),
                    TenNhom       = new NhomThucHanhBLL().GetNhomSV(t.ID_LopHocPhan, t.ID_SinhVien),
                    TK1           = t.TK1.ToString(),
                    TK2           = t.TK2.ToString(),
                    TK3           = t.TK3.ToString(),
                    CK            = t.CK.ToString(),
                    GK            = t.GK.ToString(),
                }).OrderByDescending(s => s.HoVaTen).ToList();
                foreach (DiemLopHocPhanViewModels x in lst)
                {
                    if (x.TK1 != "" && x.TK2 != "" && x.TK3 != "" && x.GK != "" && x.CK != "")
                    {
                        x.TongKet = (((float.Parse(x.TK1.Trim()) + float.Parse(x.TK2.Trim()) + float.Parse(x.TK3.Trim())) / 3 * 2 + float.Parse(x.GK.Trim()) * 3 + float.Parse(x.CK.Trim()) * 5) * 0.1).ToString();
                        if (float.Parse(x.TongKet.Trim()) <= 3)
                        {
                            x.XepLoai = "E";
                        }
                        else if (float.Parse(x.TongKet.Trim()) < 5)
                        {
                            x.XepLoai = "D";
                        }
                        else if (float.Parse(x.TongKet.Trim()) < 6.5)
                        {
                            x.XepLoai = "C";
                        }
                        else if (float.Parse(x.TongKet.Trim()) < 8)
                        {
                            x.XepLoai = "B";
                        }
                        else if (float.Parse(x.TongKet.Trim()) <= 10)
                        {
                            x.XepLoai = "A";
                        }
                        else
                        {
                            x.XepLoai = "";
                        }
                    }
                    else
                    {
                        x.XepLoai = "";
                        x.TongKet = "";
                    }
                }
                if (lst != null)
                {
                    diemLopHocPhanViewModelsBindingSource.DataSource = lst.OrderBy(x => x.ID_SinhVien);
                    btnPrint.Visible = true;
                }
            }
            else
            {
                MessageBox.Show("Mã lớp học phần không đúng");
                diemLopHocPhanViewModelsBindingSource.DataSource = null;
                btnPrint.Visible = false;

                lbMonHoc.Text    = "Tên Môn Học: ";
                lbSoTC.Text      = "Số Tín Chỉ: ";
                lbHocKy.Text     = "Học kỳ: ";
                lbGiangVien.Text = "Giảng Viên: ";
            }
        }
        private void btnLuu_Click(object sender, EventArgs e)
        {
            eLopHocPhan lopHP = new eLopHocPhan();

            lopHP.ID_LopHocPhan  = txtID.Text.Trim();
            lopHP.ID_HocPhan     = cbMonHoc.SelectedValue.ToString().Trim();
            lopHP.HocKy          = int.Parse(cbHocKy.SelectedItem.ToString().Trim());
            lopHP.ID_NienKhoa    = int.Parse(cbNamHoc.SelectedValue.ToString().Trim());
            lopHP.ID_NhanVienPDT = ((eNhanVienPDT)frmMain.Tk).ID_NhanVienPDT.Trim();
            lopHP.ID_GiangVien   = cbGiangVien.SelectedValue.ToString().Trim();
            lopHP.TrangThai      = cbTrangThai.SelectedItem.ToString();
            lopHP.NgayBatDau     = timeBD.Value;
            lopHP.NgayKetThuc    = timeKT.Value;
            lopHP.SoTiet         = int.Parse(numSoTiet.Value.ToString().Trim());
            if (lopHP.NgayBatDau > lopHP.NgayKetThuc)
            {
                MessageBox.Show("Ngày bắt đầu và ngày kết thúc không hợp lệ", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            if (dgvLichLT.Rows.Count == 0)
            {
                MessageBox.Show("Vui lòng thêm lịch học lý thuyết", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }



            if (GroupboxThongTin.Text == "Thêm Lớp Học Phần")
            {
                new LopHocPhanBLL().AddLopHocPhan(lopHP); //them lớp học phần
                foreach (eNhomThucHanh m in lstTH)        //thêm nhóm thực hành
                {
                    new NhomThucHanhBLL().AddNewNhomThucHanh(m);

                    foreach (eLichHoc_NhomThucHanh n in m.LichHoc_NhomThucHanh) // thêm lịch của nhóm th
                    {
                        new LichHocBLL().AddLichTH(n);
                    }
                }
                foreach (eLichHoc_LopHocPhan n in lstLichLT) //thêm lịch lý thuyết
                {
                    int k = new LichHocBLL().AddLichLT(n);
                }
                MessageBox.Show("Thêm Thành Công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                LoadDanhSachLopHocPhan(new LopHocPhanBLL().GetAllLopHocPhan());
                this.XemThongTin();
                ShowDataGrid();
            }
            else //------------------------------chỉnh sửa lớp học phần----------------------------------------------
            {
                if (GroupboxThongTin.Text == "Chỉnh Sửa Lớp Học Phần")
                {
                    string trangThai = LHP.GetTrangThai(txtID.Text.Trim()).Trim();
                    if (trangThai == "Đã Hủy")
                    {
                        bool kq = new LopHocPhanBLL().HuyLopHP(txtID.Text.Trim());
                    }
                    switch (trangThai)
                    {
                    case "":
                    {
                        MessageBox.Show("Vui lòng chọn trạng thái", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return;
                    }

                    case "Chờ Sinh Viên Đăng Ký":
                    {
                        int soLuongDK = new DangKyHocPhanBLL().SoLuong(txtID.Text.Trim());
                        if (soLuongDK > 0)         // đã có sinh viên đăng ký chỉ có thể chuyển sang trạng thái đã mở lớp
                        {
                            if (cbTrangThai.SelectedItem.ToString() == "Đã Mở Lớp")
                            {
                                if (soLuongDK < 30)
                                {
                                    MessageBox.Show("Lớp học phần không đủ số lượng đăng ký, không thể mở lớp", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                    cbTrangThai.SelectedItem = "Chờ Sinh Viên Đăng Ký";
                                    return;
                                }
                            }
                            else if (cbTrangThai.SelectedItem.ToString() != "Chờ Sinh Viên Đăng Ký")
                            {
                                MessageBox.Show("Lớp học phần đã có sinh viên đăng ký, không thể chuyển sang trạng thái " + cbTrangThai.SelectedItem.ToString(), "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                cbTrangThai.SelectedItem = "Chờ Sinh Viên Đăng Ký";
                                return;
                            }
                        }
                        else         //chưa có sinh viên đăng ký, có thể chuyển trạng thái (không thể chuyển sang đã mở lớp)
                        {
                            if (cbTrangThai.SelectedItem.ToString() == "Đã Mở Lớp")
                            {
                                MessageBox.Show("Lớp học phần không đủ số lượng đăng ký, không thể mở lớp", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                cbTrangThai.SelectedItem = "Chờ Sinh Viên Đăng Ký";
                                return;
                            }
                        }
                        break;
                    }

                    case "Đã Mở Lớp":    //đã mở lớp không thể hủy, không thể chuyển trạng thái
                    {
                        if (cbTrangThai.SelectedItem.ToString() != "Đã Mở Lớp")
                        {
                            MessageBox.Show("Lớp học phần đã mở không thể chỉnh sửa trạng thái", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            cbTrangThai.SelectedItem = "Đã Mở Lớp";
                            return;
                        }
                        break;
                    }

                    case "Đã Hủy":
                    {
                        if (cbTrangThai.SelectedItem.ToString() != "Đã Hủy" && cbTrangThai.SelectedItem.ToString() != "Lên Kế Hoạch")
                        {
                            MessageBox.Show("Lớp học phần đã hủy không thể chỉnh sửa sang trạng thái " + cbTrangThai.SelectedItem.ToString(), "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            cbTrangThai.SelectedItem = "Đã Hủy";
                            return;
                        }
                        break;
                    }

                    case "Lên Kế Hoạch":
                    {
                        if (cbTrangThai.SelectedItem.ToString() == "Đã Mở Lớp")
                        {
                            MessageBox.Show("Lớp học phần đang lên kế hoạch không thể chuyển sang trạng thái " + cbTrangThai.SelectedItem.ToString(), "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            cbTrangThai.SelectedItem = "Lên Kế Hoạch";
                            return;
                        }
                        break;
                    }
                    }
                }



                new LopHocPhanBLL().EditLopHocPhan(lopHP);

                foreach (eNhomThucHanh m in lstTH)             //thêm nhóm thực hành
                {
                    new NhomThucHanhBLL().EditNhomThucHanh(m); //chưa có thì thêm mới, có rồi thì chỉnh sửa

                    if (m.LichHoc_NhomThucHanh != null)
                    {
                        foreach (eLichHoc_NhomThucHanh n in m.LichHoc_NhomThucHanh) // thêm lịch của nhóm th
                        {
                            new LichHocBLL().EditLichTH(n);
                        }
                    }
                }
                if (lstLichLT != null)
                {
                    foreach (eLichHoc_LopHocPhan n in lstLichLT) //thêm lịch lý thuyết
                    {
                        new LichHocBLL().EditLichLT(n);
                    }
                }
                //xóa
                foreach (int a in lstDelLichLT)
                {
                    if (a != -1)
                    {
                        new LichHocBLL().DelLichLT(a);
                    }
                }
                foreach (int a in lstDelLichTH)
                {
                    if (a != -1)
                    {
                        new LichHocBLL().DelLichTH(a);
                    }
                }
                foreach (string a in lstDelNhomTH)
                {
                    new NhomThucHanhBLL().DelNhomTH(a);
                }
                lstDelNhomTH.Clear();
                lstDelLichTH.Clear();
                lstDelLichLT.Clear();


                MessageBox.Show("Chỉnh sửa Thành Công");
                this.XemThongTin();
                LoadDanhSachLopHocPhan(new LopHocPhanBLL().GetAllLopHocPhan());
                ShowDataGrid();
            }
        }
        public void LoadTreeView()
        {
            List <eNienKhoa> lstNienKhoa = new NienKhoaBLL().GetAllNienKhoa();
            int i = 0;

            foreach (eNienKhoa x in lstNienKhoa)
            {
                List <LopHocPhanViewModels> lstLopHP = new List <LopHocPhanViewModels>();
                TreeNode node = new TreeNode(x.NienKhoa1);
                node.Tag = x.ID_NienKhoa;
                treeLopHocPhan.Nodes.Add(node);
                TreeNode node1 = new TreeNode("Học Kỳ 1");
                node1.Tag = 1;
                treeLopHocPhan.Nodes[i].Nodes.Add(node1);
                lstLopHP = new LopHocPhanBLL().GetAllLopHocPhanGiangVien(eGV.ID_GiangVien, 1, x.NienKhoa1).Select(g => new LopHocPhanViewModels
                {
                    ID_GiangVien   = g.ID_GiangVien,
                    HocKy          = g.HocKy.Value,
                    ID_HocPhan     = g.ID_HocPhan,
                    ID_LopHocPhan  = g.ID_LopHocPhan,
                    ID_NhanVienPDT = g.ID_NhanVienPDT,
                    ID_NienKhoa    = g.ID_NienKhoa,
                    NgayBatDau     = g.NgayBatDau,
                    NgayKetThuc    = g.NgayKetThuc,
                    NienKhoa       = new NienKhoaBLL().GetNienKhoaByID(g.ID_NienKhoa.Value).NienKhoa1.Trim(),
                    SoLuong        = g.SoLuong,
                    SoTiet         = g.SoTiet,
                    TenGiangVien   = new GiangVienBLL().GetGiangVienByID(g.ID_GiangVien).HoVaTen,
                    TenMonHoc      = new HocPhanBLL().GetHocPhanByID(g.ID_HocPhan).TenMonHoc.Trim(),
                    TrangThai      = g.TrangThai
                }).ToList();
                if (lstLopHP.Count > 0)
                {
                    foreach (LopHocPhanViewModels u in lstLopHP)
                    {
                        TreeNode nodeLHP = new TreeNode(u.ID_LopHocPhan + "   " + u.TenMonHoc);
                        nodeLHP.Tag = u.ID_LopHocPhan.Trim();
                        treeLopHocPhan.Nodes[i].Nodes[0].Nodes.Add(nodeLHP);
                    }
                }
                TreeNode node2 = new TreeNode("Học Kỳ 2");
                node1.Tag = 2;
                treeLopHocPhan.Nodes[i].Nodes.Add(node2);
                lstLopHP = new LopHocPhanBLL().GetAllLopHocPhanGiangVien(eGV.ID_GiangVien, 2, x.NienKhoa1).Select(g => new LopHocPhanViewModels
                {
                    ID_GiangVien   = g.ID_GiangVien,
                    HocKy          = g.HocKy.Value,
                    ID_HocPhan     = g.ID_HocPhan,
                    ID_LopHocPhan  = g.ID_LopHocPhan,
                    ID_NhanVienPDT = g.ID_NhanVienPDT,
                    ID_NienKhoa    = g.ID_NienKhoa,
                    NgayBatDau     = g.NgayBatDau,
                    NgayKetThuc    = g.NgayKetThuc,
                    NienKhoa       = new NienKhoaBLL().GetNienKhoaByID(g.ID_NienKhoa.Value).NienKhoa1.Trim(),
                    SoLuong        = g.SoLuong,
                    SoTiet         = g.SoTiet,
                    TenGiangVien   = new GiangVienBLL().GetGiangVienByID(g.ID_GiangVien).HoVaTen,
                    TenMonHoc      = new HocPhanBLL().GetHocPhanByID(g.ID_HocPhan).TenMonHoc.Trim(),
                    TrangThai      = g.TrangThai
                }).ToList();
                if (lstLopHP.Count > 0)
                {
                    foreach (LopHocPhanViewModels u in lstLopHP)
                    {
                        TreeNode nodeLHP = new TreeNode(u.ID_LopHocPhan + "   " + u.TenMonHoc);
                        nodeLHP.Tag = u.ID_LopHocPhan.Trim();
                        treeLopHocPhan.Nodes[i].Nodes[1].Nodes.Add(nodeLHP);
                    }
                }

                TreeNode node3 = new TreeNode("Học Kỳ 3");
                node1.Tag = 3;
                treeLopHocPhan.Nodes[i].Nodes.Add(node3);
                lstLopHP = new LopHocPhanBLL().GetAllLopHocPhanGiangVien(eGV.ID_GiangVien, 3, x.NienKhoa1).Select(g => new LopHocPhanViewModels
                {
                    ID_GiangVien   = g.ID_GiangVien,
                    HocKy          = g.HocKy.Value,
                    ID_HocPhan     = g.ID_HocPhan,
                    ID_LopHocPhan  = g.ID_LopHocPhan,
                    ID_NhanVienPDT = g.ID_NhanVienPDT,
                    ID_NienKhoa    = g.ID_NienKhoa,
                    NgayBatDau     = g.NgayBatDau,
                    NgayKetThuc    = g.NgayKetThuc,
                    NienKhoa       = new NienKhoaBLL().GetNienKhoaByID(g.ID_NienKhoa.Value).NienKhoa1.Trim(),
                    SoLuong        = g.SoLuong,
                    SoTiet         = g.SoTiet,
                    TenGiangVien   = new GiangVienBLL().GetGiangVienByID(g.ID_GiangVien).HoVaTen,
                    TenMonHoc      = new HocPhanBLL().GetHocPhanByID(g.ID_HocPhan).TenMonHoc.Trim(),
                    TrangThai      = g.TrangThai
                }).ToList();
                if (lstLopHP.Count > 0)
                {
                    foreach (LopHocPhanViewModels u in lstLopHP)
                    {
                        TreeNode nodeLHP = new TreeNode(u.ID_LopHocPhan + "   " + u.TenMonHoc);
                        nodeLHP.Tag = u.ID_LopHocPhan.Trim();
                        treeLopHocPhan.Nodes[i].Nodes[2].Nodes.Add(nodeLHP);
                    }
                }
                i++;
            }
        }