//Gia hạn tạm trú
        private void btnGiaHan_Click(object sender, EventArgs e)
        {
            string sosotamtru = txtSoSoTamTru1.Text.ToString();
            string madinhdanh = txtMaDinhDanh1.Text.ToString();


            //Kiểm tra sự tồn tại của mã định danh
            SoTamTruBUS sotamtruBus = new SoTamTruBUS();

            if (!sotamtruBus.Existed_NhanKhau(madinhdanh))
            {
                MessageBox.Show("Nhân khẩu tạm trú " + txt_HoTen.Text.ToString() + " không tồn tại !");
                return;
            }

            //Không cho phép sửa ngày bắt đầu tạm trú
            DateTime TuNgay = nkttBus.TimNgayDangKyTamTru(madinhdanh);

            if (TuNgay != dt_TuNgay.Value.Date)
            {
                MessageBox.Show("Không cho phép sửa ngày bắt đầu tạm trú");
                return;
            }

            DateTime denngay = dt_DenNgay.Value.Date;


            double   songaygiahan = nkttBus.CheckGiaHan(denngay, madinhdanh);
            DateTime today        = DateTime.Today;
            DateTime ngaytoida    = today.AddDays(songaygiahan);

            if (songaygiahan != 0)
            {
                MessageBox.Show("Số ngày có thể gia hạn thêm là:" + songaygiahan + "!" + Environment.NewLine + "Ngày có thể gia hạn đến:" + ngaytoida);
                return;
            }


            DialogResult dialogResult = MessageBox.Show("Bạn có muốn gia hạn cho nhân khẩu " + txt_HoTen.Text.ToString() + " không?", "Thông báo", MessageBoxButtons.YesNo);

            if (dialogResult == DialogResult.Yes)
            {
                if (nkttBus.InsertGiaHan(madinhdanh, denngay))
                {
                    MessageBox.Show("Gia hạn cho nhân khẩu" + txt_HoTen.Text.ToString() + " thành công!");
                    LoadDataGridView();
                    ResetValueInput();
                }
                else
                {
                    MessageBox.Show("Gia hạn cho nhân khẩu " + txt_HoTen.Text.ToString() + " thất bại!");
                }
            }
            else if (dialogResult == DialogResult.No)
            {
            }
        }
        private void btnThemTieuSu_Click(object sender, EventArgs e)
        {
            string   matieusu        = txt_MaTieuSu.Text.ToString();
            string   madinhdanh      = txtMaDinhDanh1.Text.ToString();
            DateTime thoigianbatdau  = dtThoiGianBatDau.Value.Date;
            DateTime thoigianketthuc = dtThoiGianKetThuc.Value.Date;
            string   choo            = txtChoO.Text.ToString();
            string   nghenghiep      = txt_TieuSu_NgheNghiep.Text.ToString();
            string   noilamviec      = txt_NoiLamViec.Text.ToString();

            if (matieusu == "")
            {
                MessageBox.Show("Cần có mã tiểu sử để thực hiện chức năng này");
                return;
            }

            SoTamTruBUS sttBus = new SoTamTruBUS();

            if (!sttBus.Existed_NhanKhau(madinhdanh))
            {
                MessageBox.Show("Cần tạo thông tin tạm trú cho nhân khẩu có mã định danh:" + madinhdanh + " trước khi thêm tiểu sử");
                return;
            }


            //Nhập không đầy đủ
            if (!isInputTrueTieuSu())
            {
                MessageBox.Show("Vui lòng nhập đủ thông tin!");
                return;
            }

            TieuSuDTO tieusu = new TieuSuDTO(matieusu, madinhdanh, thoigianbatdau, thoigianketthuc, choo, nghenghiep, noilamviec);

            TieuSuBUS tieusuBus = new TieuSuBUS();

            if (tieusuBus.Add(tieusu))
            {
                MessageBox.Show("Thêm tiểu sử " + matieusu + " cho nhân khẩu " + txt_HoTen.Text.ToString() + " thành công !");
                LoadDataGridViewTieuSu();
                ResetInputTieuSu();
            }
            else
            {
                MessageBox.Show("Thêm tiểu sử " + matieusu + " cho nhân khẩu " + txt_HoTen.Text.ToString() + " thất bại !");
            }
        }
        private void btnThemTienAn_Click(object sender, EventArgs e)
        {
            string matienan   = txt_MaTienAn.Text.ToString();
            string madinhdanh = txtMaDinhDanh1.Text.ToString();

            if (matienan == "" || madinhdanh == "")
            {
                MessageBox.Show("Cần có mã tiền án tiền sự, mã định danh để thực hiện chức năng này");
                return;
            }

            SoTamTruBUS sttBus = new SoTamTruBUS();

            if (!sttBus.Existed_NhanKhau(madinhdanh))
            {
                MessageBox.Show("Cần tạo thông tin tạm trú cho nhân khẩu có mã định danh:" + madinhdanh + " trước khi thêm tiền án tiền sự");
                return;
            }

            //Nhập không đầy đủ
            if (!isInputTrueTienAn())
            {
                MessageBox.Show("Vui lòng nhập đủ thông tin!");
                return;
            }


            string   banan    = txt_BanAn.Text.ToString();
            string   toidanh  = txtToiDanh.Text.ToString();
            string   hinhphat = txt_HinhPhat.Text.ToString();
            DateTime ngayphat = dtNgayPhat.Value.Date;

            TienAnTienSuDTO tienan = new TienAnTienSuDTO(matienan, madinhdanh, toidanh, hinhphat, banan, ngayphat);

            TienAnTienSuBUS tienanbus = new TienAnTienSuBUS();

            if (tienanbus.Add(tienan))
            {
                MessageBox.Show("Thêm tiền án tiền sự " + matienan + " cho nhân khẩu " + txt_HoTen.Text.ToString() + " thành công!");
                ResetInputTienAn();
                LoadDataGridViewTienAN();
            }
            else
            {
                MessageBox.Show("Thêm tiền án tiền sự " + matienan + " cho nhân khẩu " + txt_HoTen.Text.ToString() + " thất bại!");
            }
        }
        //Xóa một nhân khẩu tạm trú
        private void btnXoa_Click(object sender, EventArgs e)
        {
            string madinhdanh = txtMaDinhDanh1.Text.ToString();
            string hoten      = txt_HoTen.Text.ToString();

            if (madinhdanh == "")
            {
                MessageBox.Show("Cần mã định danh để thực hiện chức năng này");
                return;
            }

            madinhdanh = madinhdanhForInsert;

            SoTamTruBUS sotamtruBus = new SoTamTruBUS();

            if (!sotamtruBus.Existed_NhanKhau(madinhdanh))
            {
                MessageBox.Show("Nhân khẩu tạm trú " + hoten + " không tồn tại !");
                return;
            }

            DialogResult dialogResult = MessageBox.Show("Bạn có muốn hủy tạm trú cho nhân khẩu: " + hoten + " ?", "Thông báo", MessageBoxButtons.YesNo);

            if (dialogResult == DialogResult.Yes)
            {
                if (nkttBus.XoaNKTT(madinhdanh))
                {
                    MessageBox.Show("Hủy tạm trú nhân khẩu : " + hoten + " thành công!");
                    ResetValueInput();
                    LoadDataGridView();
                    GenerateAllID();
                }
                else
                {
                    MessageBox.Show("Hủy tạm trú nhân khẩu : " + hoten + " thất bại!");
                }
            }
            else if (dialogResult == DialogResult.No)
            {
            }
        }
        private void btnTim1_Click(object sender, EventArgs e)
        {
            string madinhdanh = txtMaDinhDanh1.Text.ToString();

            if (madinhdanh == "")
            {
                MessageBox.Show("Cần mã định danh để thực hiện chức năng này");
                return;
            }

            SoTamTruBUS sotamtruBus = new SoTamTruBUS();

            if (!sotamtruBus.Existed_NhanKhau(madinhdanh))
            {
                MessageBox.Show("Nhân khẩu tạm trú có mã định danh: " + madinhdanh + " không tồn tại!");
                return;
            }

            dataGridView1.DataSource = null;
            dataGridView1.Rows.Clear();
            dataGridView1.DataSource = nkttBus.TimKiem(madinhdanh).Tables[0];
        }
        //Sửa thông tin nhân khẩu tạm trú
        private void btnSua_Click(object sender, EventArgs e)
        {
            string manhankhautamtru = txtMaNhanKhauTamTru1.Text.ToString(); //Lấy mã nhân khẩu tạm trú
            string madinhdanh       = txtMaDinhDanh1.Text.ToString();       //Lấy mã định danh
            string hoten            = txt_HoTen.Text.ToString();

            if (manhankhautamtru == "" || madinhdanh == "" || hoten == "")
            {
                MessageBox.Show("Cần có mã định danh và họ tên để thực hiện chức năng này");
                return;
            }

            madinhdanh = madinhdanhForInsert;

            SoTamTruBUS sotamtruBus = new SoTamTruBUS();

            if (!sotamtruBus.Existed_NhanKhau(madinhdanh))
            {
                MessageBox.Show("Nhân khẩu tạm trú " + hoten + " không tồn tại !");
                return;
            }

            DateTime DN_temp = Convert.ToDateTime(sotamtruBus.GetValue_Sub("nhankhautamtru", manhankhautamtru, "manhankhautamtru", "denngay"));
            DateTime TN_temp = Convert.ToDateTime(sotamtruBus.GetValue_Sub("nhankhautamtru", manhankhautamtru, "manhankhautamtru", "tungay"));

            if (DN_temp != dt_DenNgay.Value.Date || TN_temp != dt_TuNgay.Value.Date)
            {
                MessageBox.Show("Bạn không được thay đổi thời gian tạm trú");
                return;
            }


            //Nhập không đầy đủ
            if (!isInputTrueThongTinTamTru())
            {
                MessageBox.Show("Vui lòng nhập đủ thông tin!");
                return;
            }

            DialogResult dialogResult = MessageBox.Show("Bạn có muốn cập nhật thông tin nhân khẩu: " + hoten + " không?", "Thông báo", MessageBoxButtons.YesNo);

            if (dialogResult == DialogResult.Yes)
            {
                string diachihiennay = txtDiaChiHienNay.Text.ToString();
                string sosotamtru    = txtSoSoTamTru1.Text.ToString();
                string nghenghiep    = txt_NgheNghiep.Text.ToString();

                string gioitinh = "";
                if (rdNam.Checked)
                {
                    gioitinh = "nam";
                }
                else
                {
                    gioitinh = "nu";
                }

                string   dantoc     = txt_DanToc.Text.ToString();
                string   hochieu    = txt_HoChieu.Text.ToString();
                DateTime ngaysinh   = dt_NgaySinh.Value.Date;
                string   nguyenquan = txt_NguyenQuan.Text.ToString();
                string   noisinh    = txtNoiSinh.Text.ToString();
                string   quoctich   = txt_QuocTich.Text.ToString();
                string   sdt        = txt_SoDienThoai.Text.ToString();
                string   tongiao    = txt_TonGiao.Text.ToString();

                //Thêm
                string tenkhac          = txt_TenKhac.Text.ToString();
                string trinhdohocvan    = txt_TrinhDoHocVan.Text.ToString();
                string trinhdochuyenmon = txt_TrinhDoChuyenMon.Text.ToString();
                string biettiengdantoc  = txt_BietTiengDanToc.Text.ToString();
                string trinhdongoaingu  = txt_TrinhDoNgoaiNgu.Text.ToString();

                SoTamTruBUS sotamtrubus = new SoTamTruBUS();

                DateTime tungay = dt_TuNgay.Value.Date;

                DateTime denngay = dt_DenNgay.Value.Date;

                string noithuongtru = txtNoiThuongTru.Text.ToString();
                string noitamtru    = txtNoiTamTru.Text.ToString();

                string lydo = txt_LyDo.Text.ToString();
                //THêm


                nkttDto = new NhanKhauTamTruDTO(manhankhautamtru, noitamtru, tungay, denngay, lydo,
                                                sosotamtru, madinhdanh, hoten, tenkhac, ngaysinh, gioitinh, noisinh, nguyenquan,
                                                dantoc, tongiao, quoctich, hochieu, noithuongtru, diachihiennay, sdt, trinhdohocvan,
                                                trinhdochuyenmon, biettiengdantoc, trinhdongoaingu, nghenghiep);
                if (nkttBus.Update(nkttDto, 0))
                {
                    MessageBox.Show("Cập nhật thông tin nhân khẩu " + hoten + " thành công");
                    LoadDataGridView();
                    ResetValueInput();
                    GenerateAllID();
                    dataGridView1.DataSource = nkttBus.GetAllNhanKhauTamTru(sosotamtru).Tables[0];
                }
                else
                {
                    MessageBox.Show("Cập nhật thông tin nhân khẩu " + hoten + " thất bại");
                }
            }
            else if (dialogResult == DialogResult.No)
            {
            }
        }
        //Thêm một nhân khẩu tạm trú
        private void btnThem_Click(object sender, EventArgs e)
        {
            string manhankhautamtru = txtMaNhanKhauTamTru1.Text.ToString();
            string madinhdanh       = txtMaDinhDanh1.Text.ToString();

            if (manhankhautamtru == "" || madinhdanh == "")
            {
                MessageBox.Show("Cần có mã nhân khẩu tạm trú và mã định danh để thực hiện chức năng này");
                return;
            }

            //Nhập không đầy đủ
            if (!isInputTrueThongTinTamTru())
            {
                MessageBox.Show("Vui lòng nhập đủ thông tin!");
                return;
            }
            string hoten = txt_HoTen.Text.ToString();

            if (sotamtru.Existed_NhanKhau(madinhdanh))
            {
                MessageBox.Show("nhân khẩu tạm trú " + hoten + " đã có trong hệ thống !");
                return;
            }

            //Kiểm tra tổng ngày tạm trú không quá 2 năm
            DateTime ngaycap = dt_TuNgay.Value.Date;
            DateTime denngay = dt_DenNgay.Value.Date;

            double ngay = (denngay - ngaycap).TotalDays;
            double sum  = 730;

            if (ngay > 730)
            {
                MessageBox.Show("Thời gian tạm trú tối đa không quá 2 năm");
                return;
            }


            string diachihiennay = txtDiaChiHienNay.Text.ToString();
            string sosotamtru    = txtSoSoTamTru1.Text.ToString();


            string nghenghiep = txt_NgheNghiep.Text.ToString();


            string gioitinh = "";

            if (rdNam.Checked)
            {
                gioitinh = "nam";
            }
            else
            {
                gioitinh = "nu";
            }


            string   dantoc     = txt_DanToc.Text.ToString();
            string   hochieu    = txt_HoChieu.Text.ToString();
            DateTime ngaysinh   = dt_NgaySinh.Value.Date;
            string   nguyenquan = txt_NguyenQuan.Text.ToString();
            string   noisinh    = txtNoiSinh.Text.ToString();
            string   quoctich   = txt_QuocTich.Text.ToString();
            string   sdt        = txt_SoDienThoai.Text.ToString();
            string   tongiao    = txt_TonGiao.Text.ToString();

            //Thêm
            string tenkhac          = txt_TenKhac.Text.ToString();
            string trinhdohocvan    = txt_TrinhDoHocVan.Text.ToString();
            string trinhdochuyenmon = txt_TrinhDoChuyenMon.Text.ToString();
            string biettiengdantoc  = txt_BietTiengDanToc.Text.ToString();
            string trinhdongoaingu  = txt_TrinhDoNgoaiNgu.Text.ToString();



            string noithuongtru = txtNoiThuongTru.Text.ToString();
            string noitamtru    = txtNoiTamTru.Text.ToString();

            string lydo = txt_LyDo.Text.ToString();

            //THêm



            nkttDto = new NhanKhauTamTruDTO(manhankhautamtru, noitamtru, ngaycap, denngay, lydo,
                                            sosotamtru, madinhdanh, hoten, tenkhac, ngaysinh, gioitinh, noisinh, nguyenquan,
                                            dantoc, tongiao, quoctich, hochieu, noithuongtru, diachihiennay, sdt, trinhdohocvan,
                                            trinhdochuyenmon, biettiengdantoc, trinhdongoaingu, nghenghiep);

            if (nkttBus.Add(nkttDto))
            {
                MessageBox.Show("Thêm nhân khẩu tạm trú " + hoten + " thành công");
                nhankhautamtru_list.Add(txt_HoTen.Text.ToString());
                ResetValueInput();
                LoadDataGridView();

                //Tạo mã tự động
                GenerateAllID();
            }
            else
            {
                MessageBox.Show("Thêm nhân khẩu tạm trú " + hoten + "thất bại");
            }
        }