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 btDK_Click(object sender, EventArgs e)
        {
            string idLopHP;
            string idNhomTH;

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

            if (dataGridView1.Rows.Count > 0)
            {
                if (dataGridView3.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ý");
                    return;
                }
                if (dataGridView4.Rows.Count == 0)// khong co nhom thuc hanh
                {
                    idLopHP  = dataGridView1.Rows[dataGridView1.CurrentRow.Index].Cells[0].Value.ToString().Trim();
                    idNhomTH = "";
                }
                else  // co nhom thuc hanh
                {
                    if (dataGridView5.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");
                        return;
                    }
                    idLopHP  = dataGridView1.Rows[dataGridView1.CurrentRow.Index].Cells[0].Value.ToString().Trim();
                    idNhomTH = dataGridView4.Rows[dataGridView4.CurrentRow.Index].Cells[0].Value.ToString().Trim();
                }
                //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");
                    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");
                        LoadDanhSachDaDangKy();
                        LoadDSLopHocPhan();
                        dataGridView1.ClearSelection();
                        lichHocLTViewModelsBindingSource.DataSource    = null;
                        nhomThucHanhViewModelsBindingSource.DataSource = null;
                        lichHocTHViewModelsBindingSource.DataSource    = null;
                    }
                    else
                    {
                        MessageBox.Show("Đăng Ký Thất Bại");
                    }
                }
            }
        }
 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();
         bool k = new DangKyHocPhanBLL().HuyDangKy(eSV.ID_SinhVien, idLopHP);
         if (k == true)
         {
             MessageBox.Show("Hủy đăng ký thành công");
             LoadDanhSachDaDangKy();
             LoadDSLopHocPhan();
             dataGridView1.ClearSelection();
             lichHocLTViewModelsBindingSource.DataSource    = null;
             nhomThucHanhViewModelsBindingSource.DataSource = null;
             lichHocTHViewModelsBindingSource.DataSource    = null;
         }
         else
         {
             MessageBox.Show("Hủy đăng ký không thành công");
         }
     }
 }
        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);
                    }
                }
            }
        }
        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();
            }
        }