private void BtnXuatDSHS_Click(object sender, EventArgs e)
        {
            try
            {
                saveFileDialog.Filter = "Excel files (*.xls)|*.xls";
                DialogResult result = saveFileDialog.ShowDialog();

                if (result == DialogResult.OK)
                {
                    if (File.Exists(saveFileDialog.FileName))
                    {
                        File.Delete(saveFileDialog.FileName);
                    }

                    var DSHocSinh = DataUlti.DSHocSinh();

                    using (DataTable dt = new DataTable())
                    {
                        dt.Columns.Add("MaHocSinh", typeof(string));
                        dt.Columns.Add("TenHocSinh", typeof(string));
                        dt.Columns.Add("Khoi", typeof(int));
                        dt.Columns.Add("Lop", typeof(string));
                        dt.Columns.Add("NgaySinh", typeof(string));
                        dt.Columns.Add("QueQuan", typeof(int));
                        dt.Columns.Add("GioiTinh", typeof(int));
                        foreach (var hs in DSHocSinh)
                        {
                            dt.Rows.Add(hs.MaHocSinh, hs.TenHocSinh, hs.Khoi, hs.Lop, hs.NgaySinh, hs.QueQuan, hs.GioiTinh);
                        }

                        if (!DataUlti.WriteExcelFile(saveFileDialog.FileName, dt, 0))
                        {
                            MessageBox.Show("Không thể xuất ra file excel");
                            return;
                        }
                        else
                        {
                            MessageBox.Show("Xuất file thành công");
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                return;
            }
        }
        private void BtnUpdateFromImport_Click(object sender, EventArgs e)
        {
            var notExistList = new List <DataGridViewCellCollection>();
            var existList    = new List <DataGridViewCellCollection>();

            if (dgvImportUserList.RowCount > 0)
            {
                var firstCellValue = dgvImportUserList.Rows[0].Cells[0].Value.ToString();
                if (firstCellValue.Contains("GV"))
                {
                    // Get list of giaovien
                    var gvList = DataUlti.DSGiaoVien();

                    try
                    {
                        //Lấy ra danh sách các giáo viên chưa có trong database
                        IEnumerable <string> list = gvList.Select(gv => gv.MaGiaoVien);
                        for (int i = 0; i < dgvImportUserList.RowCount; i++)
                        {
                            var MaGV = dgvImportUserList.Rows[i].Cells["MaGiaoVien"].Value;
                            if (!list.Contains(MaGV))
                            {
                                notExistList.Add(dgvImportUserList.Rows[i].Cells);
                            }
                            else
                            {
                                existList.Add(dgvImportUserList.Rows[i].Cells);
                            }
                        }

                        // add vào database
                        // tạo đối tương GiaoVien
                        if (notExistList.Count > 0)
                        {
                            int flag = 0;
                            foreach (var item in notExistList)
                            {
                                var gv = new GiaoVien()
                                {
                                    MaGiaoVien  = item["MaGiaoVien"].Value.ToString(),
                                    TenGiaoVien = item["TenGiaoVien"].Value.ToString(),
                                    NgaySinh    = DateTime.Parse(item["NgaySinh"].Value.ToString()),
                                    QueQuan     = int.Parse(item["QueQuan"].Value.ToString()),
                                    //GioiTinh = bool.Parse(item["GioiTinh"].Value.ToString()),
                                    GioiTinh = (item["GioiTinh"].Value.ToString() == "0") ? false : true,
                                    DayMon   = item["DayMon"].Value.ToString()
                                };

                                var ctk = new ChuTaiKhoan()
                                {
                                    ID = item["MaGiaoVien"].Value.ToString()
                                };

                                if (!DataUlti.ThemChuTaiKhoan(ctk) && !DataUlti.ThemGiaoVien(gv))
                                {
                                    flag = 1;
                                    break;
                                }
                            }

                            if (flag == 0)
                            {
                                dgvImportUserList.Columns.Clear();
                                MessageBox.Show("Đã thêm vào CSDL");
                                btnUpdateFromImport.Visible = false;
                                LoadDgvUpdateUser();
                            }
                            else
                            {
                                MessageBox.Show("Có lỗi xãy ra");
                            }
                        }
                        else
                        {
                            if (existList.Count > 0)
                            {
                                string str = "";
                                if (existList.Count < 5)
                                {
                                    foreach (var item in existList)
                                    {
                                        str += item["MaGiaoVien"].Value.ToString() + "\n";
                                    }
                                    MessageBox.Show(string.Format("Các giáo viên bị trùng:\n{0}", str));
                                }
                                else
                                {
                                    MessageBox.Show(string.Format("Số lượng giáo viên đã tồn tại quá nhiều: {0}", existList.Count));
                                }
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message);
                        existList.Clear();
                        notExistList.Clear();
                        return;
                    }
                }
                else
                {
                    var hsList = DataUlti.DSHocSinh();

                    try
                    {
                        //Lấy ra danh sách các học sinh chưa có trong database
                        IEnumerable <string> list = hsList.Select(hs => hs.MaHocSinh);
                        for (int i = 0; i < dgvImportUserList.RowCount; i++)
                        {
                            var MaHS = dgvImportUserList.Rows[i].Cells["MaHocSinh"].Value;
                            if (!list.Contains(MaHS))
                            {
                                notExistList.Add(dgvImportUserList.Rows[i].Cells);
                            }
                            else
                            {
                                existList.Add(dgvImportUserList.Rows[i].Cells);
                            }
                        }

                        // add vào database
                        // tạo đối tương HocSinh
                        if (notExistList.Count > 0)
                        {
                            int flag = 0;
                            foreach (var item in notExistList)
                            {
                                var hs = new HocSinh()
                                {
                                    MaHocSinh  = item["MaHocSinh"].Value.ToString(),
                                    TenHocSinh = item["TenHocSinh"].Value.ToString(),
                                    Khoi       = int.Parse(item["Khoi"].Value.ToString()),
                                    Lop        = item["Lop"].Value.ToString(),
                                    NgaySinh   = DateTime.Parse(item["NgaySinh"].Value.ToString()),
                                    QueQuan    = int.Parse(item["QueQuan"].Value.ToString()),
                                    //GioiTinh = bool.Parse(item["GioiTinh"].Value.ToString())
                                    GioiTinh = (item["GioiTinh"].Value.ToString() == "0") ? false : true
                                };

                                var ctk = new ChuTaiKhoan()
                                {
                                    ID = item["MaHocSinh"].Value.ToString()
                                };

                                if (!DataUlti.ThemChuTaiKhoan(ctk) && !DataUlti.ThemHocSinh(hs))
                                {
                                    flag = 1;
                                    break;
                                }
                            }

                            if (flag == 0)
                            {
                                dgvImportUserList.Columns.Clear();
                                MessageBox.Show("Đã thêm vào CSDL");
                                btnUpdateFromImport.Visible = false;
                                LoadDgvUpdateUser();
                            }
                            else
                            {
                                MessageBox.Show("Có lỗi xãy ra");
                            }
                        }
                        else
                        {
                            if (existList.Count > 0)
                            {
                                string str = "";
                                if (existList.Count < 5)
                                {
                                    foreach (var item in existList)
                                    {
                                        str += item["MaHocSinh"].Value.ToString() + "\n";
                                    }
                                    MessageBox.Show(string.Format("Các học sinh bị trùng:\n{0}", str));
                                }
                                else
                                {
                                    MessageBox.Show(string.Format("Số lượng học sinh đã tồn tại quá nhiều: {0}", existList.Count));
                                }
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message);
                        existList.Clear();
                        notExistList.Clear();
                        return;
                    }
                }
            }
            existList.Clear();
            notExistList.Clear();
        }