//Tạo mã tiền án tiền sự
        public string GenerateMaTienAnTienSu()
        {
            sotamtru = new SoTamTruBUS();
            string last_ID = TrinhTaoMa.getLastID_MaTienAnTienSu();

            return(TrinhTaoMa.TangMa9kytu(last_ID));
        }
 public TimKiemGUI()
 {
     InitializeComponent();
     nk  = new NhanKhauBUS();
     shk = new SoHoKhauBUS();
     stt = new SoTamTruBUS();
 }
        private void SoTamTruGUI_Load(object sender, EventArgs e)
        {
            sotamtruBus = new SoTamTruBUS();
            //Xóa các sỗ tạm trú quá hạn mà không gia hạn tạm trú
            if (sotamtruBus.DeleteExperiedSoTamTru())
            {
            }
            else
            {
                MessageBox.Show("Lỗi không hủy được sổ tạm trú quá hạn");
            }


            //Bình thường
            if (sosotamtru == "")
            {
                LoadDataGridView();
                //Khởi tạo mã số sổ tạm trú
                txt_SoSoTamTru.Text = GenerateSoSoTamTru();
                ImportToComboboxMaChuHo();
            }
            //Tìm kiếm
            if (sosotamtru != "")
            {
                txt_SoSoTamTru.Text = sosotamtru;
                btnTim_Click(sender, e);
                DataGridViewCellEventArgs ee = new DataGridViewCellEventArgs(0, 0);
                dataGridView1_CellClick(sender, ee);
            }
        }
        //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 btnSuaTieuSu_Click(object sender, EventArgs e)
        {
            string matieusu = txt_MaTieuSu.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_TieuSu(matieusu))
            {
                MessageBox.Show("Tiểu sử có mã " + matieusu + "chưa có trong hệ thống");
                return;
            }

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

            DialogResult dialogResult = MessageBox.Show("Bạn có muốn sửa tiểu sử " + matieusu + " của nhân khẩu " + txt_HoTen.Text.ToString() + " không?", "Thông báo", MessageBoxButtons.YesNo);

            if (dialogResult == DialogResult.Yes)
            {
                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();


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

                TieuSuBUS tieusuBus = new TieuSuBUS();

                if (tieusuBus.Update(tieusu, 0))
                {
                    MessageBox.Show("Sửa tiểu sử " + matieusu + " cho nhân khẩu " + txt_HoTen.Text.ToString() + " thành công !");
                    LoadDataGridViewTieuSu();
                    ResetInputTieuSu();
                }
                else
                {
                    MessageBox.Show("Sửa tiểu sử " + matieusu + " cho nhân khẩu " + txt_HoTen.Text.ToString() + " thất bại !");
                }
            }
            else if (dialogResult == DialogResult.No)
            {
            }
        }
        private void btnSuaTienAn_Click(object sender, EventArgs e)
        {
            string matienan = txt_MaTienAn.Text.ToString();

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

            SoTamTruBUS sttBus = new SoTamTruBUS();

            if (!sttBus.Existed_TienAn(matienan))
            {
                MessageBox.Show("Mã tiền án " + matienan + "không tồn tại trong hệ thống!");
                return;
            }

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

            DialogResult dialogResult = MessageBox.Show("Bạn có muốn sửa tiền án tiền sự " + matienan + " của nhân khẩu " + txt_HoTen.Text.ToString() + " không?", "Thông báo", MessageBoxButtons.YesNo);

            if (dialogResult == DialogResult.Yes)
            {
                string   madinhdanh = txtMaDinhDanh1.Text.ToString();
                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.Update(tienan, 0))
                {
                    MessageBox.Show("Sửa 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("Sửa tiền án tiền sự " + matienan + " 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];
        }
        private void btnXoaTienAn_Click(object sender, EventArgs e)
        {
            string matienan = txt_MaTienAn.Text.ToString();

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


            SoTamTruBUS sttBus = new SoTamTruBUS();

            if (!sttBus.Existed_TienAn(matienan))
            {
                MessageBox.Show("Mã tiền án " + matienan + "không tồn tại trong hệ thống!");
                return;
            }

            DialogResult dialogResult = MessageBox.Show("Bạn có muốn xóa tiền án tiền sự " + matienan + " của nhân khẩu " + txt_HoTen.Text.ToString() + " không?", "Thông báo", MessageBoxButtons.YesNo);

            if (dialogResult == DialogResult.Yes)
            {
                if (nkttBus.DeleteTienAnTienSu(matienan))
                {
                    MessageBox.Show("Xóa tiền án tiền sự " + matienan + " cho nhân khẩu " + txt_HoTen.Text.ToString() + " thành công!");
                    LoadDataGridViewTienAN();
                    ResetInputTienAn();
                }
                else
                {
                    MessageBox.Show("Xóa tiền án tiền sự " + matienan + " cho nhân khẩu " + txt_HoTen.Text.ToString() + " thất bại!");
                }
            }
            else if (dialogResult == DialogResult.No)
            {
            }
        }
        private void btnXoaTieuSu_Click(object sender, EventArgs e)
        {
            string matieusu = txt_MaTieuSu.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_TieuSu(matieusu))
            {
                MessageBox.Show("Tiểu sử có mã " + matieusu + "chưa có trong hệ thống");
                return;
            }

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

            if (dialogResult == DialogResult.Yes)
            {
                if (nkttBus.DeleteTieuSu(matieusu))
                {
                    MessageBox.Show("Xóa tiểu sử " + matieusu + " cho nhân khẩu " + txt_HoTen.Text.ToString() + " thành công!");
                    LoadDataGridViewTieuSu();
                    ResetInputTieuSu();
                }
                else
                {
                    MessageBox.Show("Xóa tiểu sử " + matieusu + " cho nhân khẩu " + txt_HoTen.Text.ToString() + " thất bại!");
                }
            }
            else if (dialogResult == DialogResult.No)
            {
            }
        }
        private void btnTimKiem_Click(object sender, EventArgs e)
        {
            string value = tbTimKiem.Text.ToString();

            if (value == "")
            {
                MessageBox.Show("Vui lòng nhập một giá trị!");
                return;
            }

            //if (rdHoKhau.Checked)
            //{
            //    if(/*3 tầng tìm kiếm hộ khẩu, sổ tạm trú*/ false)

            //    {
            //        MessageBox.Show(this, "Không thể tìm thấy hộ khẩu(sổ tạm trú)!", "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);
            //        return;
            //    }
            //if(/*là hộ khẩu*/ true)
            //using (SoHoKhauGUI a = new SoHoKhauGUI(tbTimKiem.Text))
            //{
            // DataSet ds = shk.TimKiem("sosohokhau='" + tbTimKiem.Text + "'");
            //DataRow dt = ds.Tables["sohokhau"].Rows[0];
            //a.ShowDialog(this);
            //shkDTO = new SoHoKhauDTO(dt["sosohokhau"].ToString(), dt["machuho"].ToString(), dt["diachi"].ToString()
            //    , (DateTime)dt["ngaycap"], dt["sodangky"].ToString());

            //            shkDTO = a.shkDTO;
            //    }
            //}
            //else
            //{
            //    if (/*3 tầng tìm kiếm nhân khẩu thường trú, tạm trú*/ false)

            //    {
            //        MessageBox.Show(this, "Không thể tìm thấy nhân khẩu!", "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);
            //        return;
            //    }
            //if (/*là nhân khẩu thường trú*/ true)
            //    using (NhanKhauThuongTruGUI a = new NhanKhauThuongTruGUI(tbTimKiem.Text,-1))
            //    {
            //DataSet ds = shk.TimKiem("sosohokhau='" + tbTimKiem.Text + "'");
            //DataRow dt = ds.Tables["sohokhau"].Rows[0];
            //a.ShowDialog(this);
            //shkDTO = new SoHoKhauDTO(dt["sosohokhau"].ToString(), dt["machuho"].ToString(), dt["diachi"].ToString()
            //    , (DateTime)dt["ngaycap"], dt["sodangky"].ToString());
            //            nkthDTO = a.nkttDTO;
            //        }
            //}
            DataSet dt = new DataSet();

            // tìm trong sổ hộ khẩu
            if (rdHoKhau.Checked)
            {
                shk = new SoHoKhauBUS();
                dt  = shk.TimKiem("sosohokhau='" + value + "'");
                if (dt.Tables[0].Rows.Count > 0)
                {
                    SoHoKhauGUI fr_SoHoKhau = new SoHoKhauGUI(value);
                    fr_SoHoKhau.ShowDialog();
                }
                else
                {
                    MessageBox.Show("Không tìm thấy sổ hộ khẩu: " + value);
                }
                return;
            }

            //Tìm trong sổ tạm trú
            if (rdTamTru.Checked)
            {
                stt = new SoTamTruBUS();
                dt  = stt.TimKiem(value);
                if (dt.Tables[0].Rows.Count > 0)
                {
                    SoTamTruGUI fr_SoTamTru = new SoTamTruGUI(value);
                    fr_SoTamTru.ShowDialog();
                }
                else
                {
                    MessageBox.Show("Không tìm thấy sổ tạm trú: " + value);
                }
                return;
            }


            //Tìm nhân khẩu tạm trú hoặc thường thú
            if (rdNhanKhau.Checked)
            {
                //Tìm trong bảng nhân khẩu thường trú
                nkthuongtru = new NhanKhauThuongTruBUS();
                dt          = nkthuongtru.TimKiem("madinhdanh='" + value + "'");
                if (dt.Tables[0].Rows.Count > 0)
                {
                    NhanKhauThuongTruGUI fr_NhanKhauThuongTru = new NhanKhauThuongTruGUI(value, 0);
                    fr_NhanKhauThuongTru.ShowDialog();
                    return;
                }


                //Tìm trong bảng nhân khẩu tạm trú
                nktamtru = new NhanKhauTamTruBUS();
                dt       = nktamtru.TimKiem(value);
                if (dt.Tables[0].Rows.Count > 0)
                {
                    NhanKhauTamTruGUI fr_NhanKhauTamTru = new NhanKhauTamTruGUI(value, "1");
                    fr_NhanKhauTamTru.ShowDialog();
                    return;
                }

                MessageBox.Show("Không tìm thấy nhân khẩu có mã định danh:" + value);

                return;
            }
        }
        //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)
            {
            }
        }
        //Gia hạn tạm trú
        private void btnGiaHan_Click(object sender, EventArgs e)
        {
            if (!isInputTrueSoTamTru())
            {
                MessageBox.Show("Vui lòng nhập đủ thông tin!");
                return;
            }

            string sosotamtru = txt_SoSoTamTru.Text.ToString();

            string machuhotamtru = sotamtruBus.convertTentoMaNhanKhauTamTru(cbb_MaChuHo.Text.ToString(), sosotamtru);

            //Kiểm tra sự tồn tại của mã số sổ tạm trú
            if (!sotamtruBus.ExistedSoTamTru(sosotamtru))
            {
                MessageBox.Show("Sổ tạm trú " + sosotamtru + " chưa tồn tại ! vui lòng kiểm tra lại!");
                return;
            }

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

            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;


            //Kiểm tra thời hạn tạm trú
            SoTamTruBUS Sotamtru = new SoTamTruBUS();

            double   songaygiahan = Sotamtru.CheckGiaHan(denngay, sosotamtru);
            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 sổ tạm trú " + sosotamtru + " không?", "Thông báo", MessageBoxButtons.YesNo);

            if (dialogResult == DialogResult.Yes)
            {
                if (sotamtruBus.InsertGiaHan(sosotamtru, denngay))
                {
                    MessageBox.Show("Sửa thông tin sổ tạm trú " + sosotamtru + " thành công!");
                    LoadDataGridView();
                    ResetValueInput();
                    dataGridView1.DataSource = sotamtruBus.TimKiem(sosotamtru).Tables[0];
                }
                else
                {
                    MessageBox.Show("Sửa thông tin sổ tạm trú " + sosotamtru + " thất bại!");
                }
            }
            else if (dialogResult == DialogResult.No)
            {
            }
        }
        //Sửa một sổ tạm trú
        private void btnSua_Click(object sender, EventArgs e)
        {
            if (!isInputTrueSoTamTru())
            {
                MessageBox.Show("Vui lòng nhập đủ thông tin!");
                return;
            }

            string sosotamtru = txt_SoSoTamTru.Text.ToString();

            string machuhotamtru = sotamtruBus.convertTentoMaNhanKhauTamTru(cbb_MaChuHo.Text.ToString(), sosotamtru);

            //Kiểm tra sự tồn tại của mã số sổ tạm trú
            if (!sotamtruBus.ExistedSoTamTru(sosotamtru))
            {
                MessageBox.Show("Sổ tạm trú " + sosotamtru + " chưa tồn tại ! vui lòng kiểm tra lại!");
                return;
            }

            //Kiểm tra sự tồn tại của mã nhân khẩu tạm trú để làm chủ hộ
            if (!sotamtruBus.Existed_NhanKhauTamTru(machuhotamtru))
            {
                MessageBox.Show("Chưa đăng ký tạm trú cho nhân khẩu có mã " + machuhotamtru + " !");
                return;
            }
            //Kiểm tra chủ hộ này có nằm trong một sổ tạm trú khác hay không?
            if (sotamtruBus.Duplicated_NhanKhauTamTru(machuhotamtru, sosotamtru))
            {
                MessageBox.Show("Nhân khẩu tạm trú " + machuhotamtru + " đang ở trong sổ tạm trú khác!");
                return;
            }

            //Không cho sửa ngày đăng ký và ngày kết thúc sổ tạm trú

            SoTamTruBUS Sotamtru = new SoTamTruBUS();

            DateTime TuNgay  = sotamtruBus.TimNgayDangKyTamTru(sosotamtru);
            DateTime DenNgay = sotamtruBus.ThoiHanSoTamTru(sosotamtru);

            if (TuNgay != dt_TuNgay.Value.Date || DenNgay != dt_DenNgay.Value.Date)
            {
                MessageBox.Show("Không được phép sửa ngày đăng ký và ngày hết hạn sổ tạm trú");
                return;
            }


            machuhotamtru = Sotamtru.convertTentoMaNhanKhauTamTru(cbb_MaChuHo.Text.ToString(), sosotamtru);

            DialogResult dialogResult = MessageBox.Show("Bạn có muốn cập nhật thông tin sổ tạm trú " + sosotamtru + " không?", "Thông báo", MessageBoxButtons.YesNo);

            if (dialogResult == DialogResult.Yes)
            {
                int r = dataGridView1.CurrentCell.RowIndex;

                string   choohiennay = txt_NoiTamTru.Text.ToString();
                DateTime tungay      = TuNgay;
                DateTime denngay     = DenNgay;


                SoTamTruDTO sotamtru = new SoTamTruDTO(sosotamtru, machuhotamtru, choohiennay, tungay, denngay);

                if (sotamtruBus.Update(sotamtru, r))
                {
                    MessageBox.Show("Sửa thông tin sổ tạm trú " + sosotamtru + " thành công!");
                    LoadDataGridView();
                    ResetValueInput();
                    dataGridView1.DataSource = sotamtruBus.TimKiem(sotamtru.SoSoTamTru).Tables[0];
                }
                else
                {
                    MessageBox.Show("Sửa thông tin sổ tạm trú " + sosotamtru + " thất bại!");
                }
            }
            else if (dialogResult == DialogResult.No)
            {
            }
        }
        //Thêm một sổ tạm trú mới
        private void btnThem_Click(object sender, EventArgs e)
        {
            if (!isInputTrueSoTamTru())
            {
                MessageBox.Show("Vui lòng nhập đủ thông tin!");
                return;
            }


            string sosotamtru = txt_SoSoTamTru.Text.ToString();

            SoTamTruBUS sotamtru = new SoTamTruBUS();

            string machuhotamtru = sotamtru.convertTentoMaNhanKhauTamTru(cbb_MaChuHo.Text.ToString(), sosotamtru);

            //Kiểm tra sự tồn tại của mã số sổ tạm trú
            if (sotamtruBus.ExistedSoTamTru(sosotamtru))
            {
                MessageBox.Show("Sổ tạm trú " + sosotamtru + " đã có ! vui lòng kiểm tra lại!");
                return;
            }

            //Kiểm tra sự tồn tại của mã nhân khẩu tạm trú để làm chủ hộ
            if (!sotamtruBus.Existed_NhanKhauTamTru(machuhotamtru))
            {
                MessageBox.Show("Chưa đăng ký tạm trú cho nhân khẩu có mã " + machuhotamtru + " !");
                return;
            }
            //Kiểm tra chủ hộ này có nằm trong một sổ tạm trú khác hay không?
            if (sotamtruBus.Duplicated_NhanKhauTamTru(machuhotamtru, sosotamtru))
            {
                MessageBox.Show("Nhân khẩu tạm trú " + machuhotamtru + " đang ở trong sổ tạm trú khác!");
                return;
            }
            DateTime tungay  = dt_TuNgay.Value.Date;
            DateTime denngay = dt_DenNgay.Value.Date;

            //Kiểm tra thời gian bắt đầu phải lớn hơn thời gian kết thúc
            if (tungay > denngay)
            {
                MessageBox.Show("Thời gian bắt đầu không được nhỏ hơn thời gian kết thúc!");
                return;
            }

            //KIểm tra thời gian đăng ký có hợp lệ không?
            if (!sotamtruBus.CheckThoiGianDangKyTamTru(tungay, denngay))
            {
                MessageBox.Show("Thời gian tạm trú không được quá 2 năm!");
                return;
            }

            string choohiennay = txt_NoiTamTru.Text.ToString();



            sotamtruDto = new SoTamTruDTO(sosotamtru, machuhotamtru, choohiennay, tungay, denngay);

            if (sotamtruBus.Add(sotamtruDto))
            {
                MessageBox.Show("Đăng ký tạm trú có sổ tạm trú " + sosotamtru + " thành công!");
                LoadDataGridView();
                ResetValueInput();
            }
            else
            {
                MessageBox.Show("Đăng ký tạm trú sổ tạm trú " + sosotamtru + " thất bại!");
            }
        }