/// <summary>
        ///     QUAN TRỌNG!
        ///     ĐÂY LÀ PHẦN CHẤP NHẬN BIẾN ĐỘNG, TẤT CẢ DỮ LIỆU CỦA MỘT BIẾN ĐỘNG TRONG CÁC BẢNG DỰ BỊ SẼ ĐƯỢC ĐƯA LÊN BẢNG CHÍNH THỨC!
        /// </summary>
        /// <param name="HoSoChinhThuc"></param>
        /// <param name="MaHoSo"></param>
        /// <param name="Machu"></param>
        /// <returns></returns>
        /// 
        public bool ChapNhanBienDong(string MaDangKyBienDong, string NgayNhanHoSo, string NguoiNhanHoSo, string SoTiepNhan, string Quyen)
        {
            try
            {
                DateTime _ngayNhanHoSo;
                if (NgayNhanHoSo != "")
                    _ngayNhanHoSo = Convert.ToDateTime(NgayNhanHoSo);
                else
                    _ngayNhanHoSo = DateTime.Now;

                long _maBD = long.Parse(MaDangKyBienDong);
                // lấy ra hồ sơ đăng ký biến động dự bị trên.
                tblDonXinDangKyBienDongDuBi DonDuBi = db.tblDonXinDangKyBienDongDuBis.SingleOrDefault(n => n.ID == _maBD);
                if (DonDuBi == null)
                {
                    // thong bao loi...
                    return false;
                }
                // kiểm tra thông tin tiếp nhận hồ sơ xem có chưa.
                if (NguoiNhanHoSo == "" || SoTiepNhan == "")
                {
                    // thong bao loi...
                    return false;
                }
                // kiểm tra loại đăng ký biến động.
                string LoaiBD = DonDuBi.LoaiBienDong;
                if (LoaiBD == null)
                {
                    // thong bao loi...
                    return false;
                }
                // TẠO HỒ SƠ BIẾN ĐỘNG CHÍNH THỨC.
                tblDonXinDangKyBienDong DonChinhThuc = new tblDonXinDangKyBienDong();
                DonChinhThuc.KinhGuiCoQuanChucNang=DonDuBi.TieuDeDon;
                DonChinhThuc.NguoiVietDon=DonDuBi.NguoiVietDon;
                DonChinhThuc.NgayVietDon=DonDuBi.NgayVietDon;
                DonChinhThuc.SoVaoSoCapGCN=DonDuBi.SoVaoSoCapGCN;
                DonChinhThuc.SoPhatHanhGCN=DonDuBi.SoPhatHanhGCN;
                DonChinhThuc.NgayCapGCN=DonDuBi.NgayCapGCN;
                DonChinhThuc.BienDongVe=DonDuBi.BienDongVe;
                DonChinhThuc.NoiDungGhiTrenGCNTruocKhiBienDong=DonDuBi.NoiDungGhiTrenGCNTruocKhiBienDong;
                DonChinhThuc.NoiDungSauKhiBienDong=DonDuBi.NoiDungSauKhiBienDong;
                DonChinhThuc.LyDoBienDong=DonDuBi.LyDoBienDong;
                DonChinhThuc.TinhHinhThucHienNghiaVuTaiChinh=DonDuBi.TinhHinhThucHienNghiaVuTaiChinh;
                DonChinhThuc.GiayToKemTheo=DonDuBi.GiayToKemTheo;
                DonChinhThuc.LoaiBienDong=DonDuBi.LoaiBienDong;
                DonChinhThuc.LoaiDoiTuongApDung = DonDuBi.LoaiDoiTuongApDung;

                DonChinhThuc.NgayNhanHoSo = _ngayNhanHoSo;
                DonChinhThuc.NguoiNhanHoSo = NguoiNhanHoSo;
                DonChinhThuc.SoTiepNhan = SoTiepNhan;
                DonChinhThuc.Quyen = Quyen;

                db.tblDonXinDangKyBienDongs.Add(DonChinhThuc);
                db.SaveChanges();
                string s = DonChinhThuc.MaDangKyBienDong.ToString();
                // nếu là đăng ký biến động loại 1
                if (LoaiBD == "1")
                {
                    // đã có hết ở hồ sơ kê khai dự bị nên tạm thời chưa phải làm gì.
                }
                // nếu là đăng ký cấp lại, cấp đổi
                else if (LoaiBD == "2")
                {
                    List<tblThuaDatThayDoiTrongBienDongDuBi> dstdtd = (from n in db.tblThuaDatThayDoiTrongBienDongDuBis
                                                                              where n.MaDangKyBienDong == _maBD
                                                                              select n).ToList();
                    if (dstdtd != null)
                    {
                        if (dstdtd.Count() > 0)
                        {
                            for (int i = 0; i < dstdtd.Count(); i++)
                            {
                                tblThuaDatThayDoiTrongBienDongDuBi tddb= (tblThuaDatThayDoiTrongBienDongDuBi)dstdtd[i];
                                tblThuaDatThayDoiTrongBienDong td = new tblThuaDatThayDoiTrongBienDong();
                                td.MaDangKyBienDong= DonChinhThuc.MaDangKyBienDong;
                                td.ToBanDo=tddb.ToBanDo;
                                td.SoThua=tddb.SoThua;
                                td.DienTich=tddb.DienTich;
                                td.NoiDungThayDoiKhac=tddb.NoiDungThayDoiKhac;
                                td.ToBanDoMoi=tddb.ToBanDoMoi;
                                td.SoThuaMoi=tddb.SoThuaMoi;
                                td.DienTichMoi=tddb.DienTichMoi;
                                td.NoiDungThayDoiKhacMoi = tddb.NoiDungThayDoiKhacMoi;

                                db.tblThuaDatThayDoiTrongBienDongs.Add(td);
                                db.SaveChanges();

                            }
                        }
                    }

                    List<tblThongTinTaiSanGanLienVoiDatTrongBienDongDuBi> dsts = (from n in db.tblThongTinTaiSanGanLienVoiDatTrongBienDongDuBis
                                                                                         where n.MaDangKyBienDong == _maBD
                                                                                         select n).ToList();
                    if (dsts != null)
                    {
                        if (dsts.Count() > 0)
                        {
                            for (int i = 0; i < dsts.Count(); i++)
                            {
                                tblThongTinTaiSanGanLienVoiDatTrongBienDongDuBi tsdb = (tblThongTinTaiSanGanLienVoiDatTrongBienDongDuBi)dsts[i];
                                tblThongTinTaiSanGanLienVoiDatTrongBienDong ts = new tblThongTinTaiSanGanLienVoiDatTrongBienDong();
                                ts.MaDangKyBienDong = DonChinhThuc.MaDangKyBienDong;
                                ts.LoaiTaiSan=tsdb.LoaiTaiSan;
                                ts.DienTichXayDung=tsdb.DienTichXayDung;
                                ts.NoiDungThayDoi=tsdb.NoiDungThayDoi;
                                ts.LoaiTaiSanMoi = tsdb.LoaiTaiSanMoi;
                                ts.DienTichXayDungMoi = tsdb.DienTichXayDungMoi;
                                ts.NoiDungThayDoiMoi = tsdb.NoiDungThayDoiMoi;

                                db.tblThongTinTaiSanGanLienVoiDatTrongBienDongs.Add(ts);
                                db.SaveChanges();
                            }
                        }
                    }
                }
                // nếu là đăng ký tách, hợp thửa.
                else if (LoaiBD == "3")
                {
                    tblThuaDatDeNghiTachThuaTrongBienDongTheoDon tdtt = db.tblThuaDatDeNghiTachThuaTrongBienDongTheoDons.SingleOrDefault(n => n.MaDangKyBienDong == _maBD);
                    if (tdtt != null)
                    {
                        tblThuaDatDeNghiTachThuaTrongBienDong td = new tblThuaDatDeNghiTachThuaTrongBienDong();
                        td.MaDangKyBienDong= DonChinhThuc.MaDangKyBienDong;
                        td.MaThuaDat = tdtt.MaThuaDat;
                        td.ToBanDo = tdtt.ToBanDo;
                        td.SoThua = tdtt.SoThua;
                        td.DiaChi = tdtt.DiaChi;
                        td.SoPhatHanhGCN = tdtt.SoPhatHanhGCN;
                        td.SoVaoSoCapGCN = tdtt.SoVaoSoCapGCN;
                        td.NgayCapGCN = tdtt.NgayCapGCN;
                        td.SoThuaConDeNghiTach = tdtt.SoThuaConDeNghiTach;
                        td.DienTichCon1 = tdtt.DienTichCon1;
                        td.DienTichCon2 = tdtt.DienTichCon2;

                        db.tblThuaDatDeNghiTachThuaTrongBienDongs.Add(td);
                        db.SaveChanges();
                    }

                    List<tblThuaDatDeNghiHopThuaTrongBienDongTheoDon> dstdht = (from n in db.tblThuaDatDeNghiHopThuaTrongBienDongTheoDons
                                                                                       where n.MaDangKyBienDong == _maBD
                                                                                       select n).ToList();
                    if (dstdht != null)
                    {
                        if (dstdht.Count() > 0)
                        {
                            for (int i = 0; i < dstdht.Count(); i++)
                            {
                                tblThuaDatDeNghiHopThuaTrongBienDongTheoDon htdb = dstdht[i];
                                tblThuaDatDeNghiHopThuaTrongBienDong ht = new tblThuaDatDeNghiHopThuaTrongBienDong();

                                ht.MaDangKyBienDong = DonChinhThuc.MaDangKyBienDong;
                                ht.MaThuaDat=htdb.MaThuaDat;
                                ht.ToBanDo=htdb.ToBanDo;
                                ht.SoThua=htdb.SoThua;
                                ht.DiaChi=htdb.DiaChi;
                                ht.SoPhatHanhGCN=htdb.SoPhatHanhGCN;
                                ht.SoVaoSoCapGCN=htdb.SoVaoSoCapGCN;
                                ht.NgayCapGCN = htdb.NgayCapGCN;

                                db.tblThuaDatDeNghiHopThuaTrongBienDongs.Add(ht);
                                db.SaveChanges();
                            }

                        }
                    }
                }
                // lưu Chủ nữa.
                List<tblChuDangKyBienDongDuBi> dschudb = (from chs in db.tblChuDangKyBienDongDuBis
                                                         where chs.MaDangKyBienDong == _maBD
                                                         select chs).ToList();

                if(dschudb != null)
                {
                    if (dschudb.Count() > 0)
                    {
                        for(int i=0;i<dschudb.Count(); i++)
                        {
                            tblChuDangKyBienDong chs = new tblChuDangKyBienDong();
                            chs.MaDangKyBienDong = DonChinhThuc.MaDangKyBienDong;
                            //chs.MaChu =// cập nhật ở dưới.

                            // tblChu
                            long _maChu =(long)dschudb[i].MaChu;
                            var ch = db.tblChuDuBis.SingleOrDefault(n => n.MaChu == _maChu);
                            if(ch != null)
                            {
                                tblChu chuMoi = new tblChu();
                                 // chuMoi.MaChu = ch.MaChu;
                                  chuMoi.DanhXung = ch.DanhXung;
                                  chuMoi.HoTen = ch.HoTen;
                                  chuMoi.NamSinh = ch.NamSinh;
                                  chuMoi.DiaChi = ch.DiaChi;
                                  chuMoi.DinhDanh = ch.DinhDanh;
                                  chuMoi.SoDinhDanh = ch.SoDinhDanh;
                                  chuMoi.NoiCap = ch.NoiCap;
                                  chuMoi.NgayCap = ch.NgayCap;
                                  chuMoi.QuocTich = ch.QuocTich;
                                  db.tblChus.Add(chuMoi);
                                  db.SaveChanges();

                                // quan trọng: bởi vì đến đây mã chủ mới được tạo ra và ta mới có thể gán được.
                                  chs.MaChu = chuMoi.MaChu;

                            }
                            //VẬY TRONG TRƯỜNG HỢP TA KHÔNG TẠO RA CHỦ MỚI MÀ LẤY NÓ TRONG DATABASE CHỦ CÓ SẴN THÌ SẼ CẦN SỬA THÊM...
                            //TA SẼ THỬ NGHIỆM DƯỚI ĐÂY, TUY NHIÊN CHƯA CHẮC CHẮN ĐÚNG!?
                            else
                            {
                                var TimChuDaCoSan = db.tblChus.FirstOrDefault(n => n.MaChu == _maChu);
                                if (TimChuDaCoSan != null)
                                {
                                    chs.MaChu = TimChuDaCoSan.MaChu; //hoặc có thể viết là = _maChu;
                                }
                            }

                            db.tblChuDangKyBienDongs.Add(chs);
                            db.SaveChanges();

                        }
                    }
                }

                XoaDuLieuBienDongDuBi(MaDangKyBienDong);
                return true;

            }
            catch (Exception ex)
            {
                string s = ex.Message;
                return false;
            }
        }
        public bool ThemChu(string MaHoSo ,string DanhXung, string HoTen, string NamSinh, string DiaChi, string DinhDanh, string SoDinhDanh, string NoiCap, string NgayCap, string QuocTich)
        {
            try
            {

                tblChu chumoi = new tblChu();

                chumoi.DanhXung = DanhXung;
                chumoi.HoTen = HoTen;
                chumoi.NamSinh = NamSinh;
                chumoi.DiaChi = DiaChi;
                chumoi.DinhDanh = DinhDanh;
                chumoi.SoDinhDanh = SoDinhDanh;
                chumoi.NoiCap = NoiCap;
                chumoi.NgayCap = Convert.ToDateTime(NgayCap);
                chumoi.QuocTich = QuocTich;

                db.tblChus.Add(chumoi);
                db.SaveChanges();

                tblChuHoSo chuhoso = new tblChuHoSo();
                chuhoso.MaChu = chumoi.MaChu;
                chuhoso.MaHoSo = Convert.ToInt32(MaHoSo);
                db.tblChuHoSoes.Add(chuhoso);
                db.SaveChanges();

                return true;
            }
            catch (Exception ex)
            {

                return false;
            }
        }
        public bool ThemChu(bool HoSoChinhThuc, string MaHoSo, string DanhXung, string HoTen, string NamSinh, string DiaChi, string DinhDanh, string SoDinhDanh, string NoiCap, string NgayCap, string QuocTich)
        {
            try
            {
                if (HoSoChinhThuc)
                {
                    tblChu chumoi = new tblChu();

                    chumoi.DanhXung = DanhXung;
                    chumoi.HoTen = HoTen;
                    chumoi.NamSinh = NamSinh;
                    chumoi.DiaChi = DiaChi;
                    chumoi.DinhDanh = DinhDanh;
                    chumoi.SoDinhDanh = SoDinhDanh;
                    chumoi.NoiCap = NoiCap;
                    chumoi.NgayCap = Convert.ToDateTime(NgayCap);
                    chumoi.QuocTich = QuocTich;

                    db.tblChus.Add(chumoi);
                    db.SaveChanges();

                    tblChuDangKyBienDong chuhoso = new tblChuDangKyBienDong();
                    chuhoso.MaChu = chumoi.MaChu;
                    chuhoso.MaDangKyBienDong = Convert.ToInt32(MaHoSo);
                    db.tblChuDangKyBienDongs.Add(chuhoso);
                    db.SaveChanges();
                }
                else
                {
                    tblChuDuBi chumoi = new tblChuDuBi();
                    chumoi.DanhXung = DanhXung;
                    chumoi.HoTen = HoTen;
                    chumoi.NamSinh = NamSinh;
                    chumoi.DiaChi = DiaChi;
                    chumoi.DinhDanh = DinhDanh;
                    chumoi.SoDinhDanh = SoDinhDanh;
                    chumoi.NoiCap = NoiCap;
                    if(NgayCap!="")
                    chumoi.NgayCap = Convert.ToDateTime(NgayCap);
                    chumoi.QuocTich = QuocTich;
                    db.tblChuDuBis.Add(chumoi);
                    db.SaveChanges();

                    tblChuDangKyBienDongDuBi chuhoso = new tblChuDangKyBienDongDuBi();
                    chuhoso.MaChu = chumoi.MaChu;
                    chuhoso.MaDangKyBienDong = Convert.ToInt32(MaHoSo);
                    db.tblChuDangKyBienDongDuBis.Add(chuhoso);
                    db.SaveChanges();

                }

                return true;
            }
            catch (Exception ex)
            {

                return false;
            }
        }
        public bool ChapNhanHoSo(string MaHoSoKeKhai)
        {
            try
            {
                long _maHS = long.Parse(MaHoSoKeKhai);
                tblHoSoKeKhaiDuBi HS = db.tblHoSoKeKhaiDuBis.Single(h => h.MaHoSoKeKhai == _maHS);

                //-- tao ho so moi
                tblHoSo HoSoMoi = new tblHoSo();
                db.tblHoSoes.Add(HoSoMoi);

                //-- them vao bang ho so

                tblHoSoKeKhai HSKK = new tblHoSoKeKhai();
                HSKK.KinhGuiCoQuanChucNang = HS.KinhGuiCoQuanChucNang;
                HSKK.NgayNhanHoSo = HS.NgayNhanHoSo;
                HSKK.NguoiNhanHoSo = HS.NguoiNhanHoSo;
                HSKK.SoTiepNhan = HS.SoTiepNhan;
                HSKK.Quyen = HS.Quyen;
                HSKK.NguoiVietDon = HS.NguoiVietDon;
                HSKK.DonViHanhChinh = HS.DonViHanhChinh;
                HSKK.GiayToKemTheo = HS.GiayToKemTheo;
                HSKK.NghiaVuTaiChinh = HS.NghiaVuTaiChinh;
                HSKK.DeNghiKhac = HS.DeNghiKhac;
                HSKK.SoDienThoaiLienHe = HS.SoDienThoaiLienHe;
                HSKK.DiaChiMail = HS.DiaChiMail;
                HSKK.MaLoaiDeNghi = HS.MaLoaiDeNghi;

                HSKK.MaHoSo =_maHS;
                db.tblHoSoKeKhais.Add(HSKK);

                //-- insert vao bang hosokekhaiduocchapnhan

                tblHoSoKeKhaiDuocChapNhan HSKKDCN = new tblHoSoKeKhaiDuocChapNhan();
                HSKKDCN.MaHoSoKeKhai = HSKK.MaHoSoKeKhai;
                HSKKDCN.MaHoSoKeKhaiDuBi = HS.MaHoSoKeKhai;
                HSKKDCN.NgayThucHien = DateTime.Today;

                db.tblHoSoKeKhaiDuocChapNhans.Add(HSKKDCN);

                //-- insert vao bang hoso

                HoSoMoi.LoaiDoiTuong = HS.MaLoaiDoiTuong;
                HoSoMoi.DonViHanhChinh = HS.DonViHanhChinh;
                HoSoMoi.TrangThaiHoSoCapGCN = "1";
                //HoSoMoi.TongSoThua se cap nhat o phan thua dat...

                //-- insert vao bang thuadat
                List<tblThuaDatDuBi> dsThuaDat = (from td in db.tblThuaDatDuBis
                                                  where td.MaHoSoKeKhai == HS.MaHoSoKeKhai
                                                  select td).ToList<tblThuaDatDuBi>();

                if (dsThuaDat.Count > 0)
                {
                    HoSoMoi.TongSoThua = dsThuaDat.Count;
                    for (int i = 0; i < dsThuaDat.Count; i++)
                    {
                        tblThuaDat ThuaDaMoi = new tblThuaDat();

                        ThuaDaMoi.MaHoSo = dsThuaDat[i].MaHoSoKeKhai;
                        ThuaDaMoi.ToBanDo = dsThuaDat[i].ToBanDo;
                        ThuaDaMoi.SoThua = dsThuaDat[i].SoThua;
                        ThuaDaMoi.DiaChi = dsThuaDat[i].DiaChi;
                        ThuaDaMoi.DienTich = dsThuaDat[i].DienTich;
                        ThuaDaMoi.SuDungChung = dsThuaDat[i].SuDungChung;
                        ThuaDaMoi.SuDungRieng = dsThuaDat[i].SuDungRieng;
                        ThuaDaMoi.MucDichSuDung = dsThuaDat[i].MucDichSuDung;
                        ThuaDaMoi.ThoiHanSuDung = dsThuaDat[i].ThoiHanSuDung;
                        ThuaDaMoi.NgayBatDauSuDung = dsThuaDat[i].NgayBatDauSuDung;
                        ThuaDaMoi.LoaiNguonGocSuDung = dsThuaDat[i].LoaiNguonGocSuDung;
                        ThuaDaMoi.CoHanCheSuDung = dsThuaDat[i].CoHanCheSuDung.ToString();
                        ThuaDaMoi.NoiDungHanCheSuDung = dsThuaDat[i].NoiDungHanCheSuDung;

                        db.tblThuaDats.Add(ThuaDaMoi);

                    }
                }
                //-- insert vao bang nhao
                List<tblThongTinNhaODuBi> dsNhaO = (from n in db.tblThongTinNhaODuBis
                                                    where n.MaHoSoKeKhai == _maHS
                                                    select n).ToList<tblThongTinNhaODuBi>();
                if (dsNhaO.Count > 0)
                {
                    for (int i = 0; i < dsNhaO.Count; i++)
                    {
                        tblThongTinNhaO NhaMoi = new tblThongTinNhaO();
                        NhaMoi.MaHoSo = dsNhaO[i].MaHoSoKeKhai;
                        NhaMoi.LoaiNhaO = dsNhaO[i].LoaiNhaO;
                        NhaMoi.DienTichXayDung = dsNhaO[i].DienTichXayDung;
                        NhaMoi.DienTichSan = dsNhaO[i].DienTichSan;
                        NhaMoi.SoHuuChung = dsNhaO[i].SoHuuChung;
                        NhaMoi.SoHuuRieng = dsNhaO[i].SoHuuRieng;
                        NhaMoi.KetCau = dsNhaO[i].KetCau;
                        NhaMoi.SoTang = dsNhaO[i].SoTang;
                        NhaMoi.CoHanCheThoiHanSoHuu = dsNhaO[i].CoHanCheThoiHanSoHuu;
                        NhaMoi.ThoiHanSoHuu = dsNhaO[i].ThoiHanSoHuu;

                        db.tblThongTinNhaOs.Add(NhaMoi);

                    }
                }
                //-- insert vao bang chuhoso va bang chu
                List<tblChuHoSoDuBi> dsChuHS = (from chs in db.tblChuHoSoDuBis
                                                where chs.MaHoSoKeKhai == _maHS
                                                select chs).ToList<tblChuHoSoDuBi>();

                if (dsChuHS.Count > 0)
                {
                    for (int i = 0; i < dsChuHS.Count; i++)
                    {
                        tblChuHoSo ChuHS = new tblChuHoSo();
                        ChuHS.MaChu = dsChuHS[i].MaChu;
                        ChuHS.MaHoSo = _maHS;

                        db.tblChuHoSoes.Add(ChuHS);

                        long ma =(long)dsChuHS[i].MaChu;
                        tblChuDuBi chudubi = db.tblChuDuBis.Single(c => c.MaChu == ma);
                        tblChu Chu = new tblChu();
                        Chu.DanhXung = chudubi.DanhXung;
                        Chu.HoTen = chudubi.HoTen;
                        Chu.NamSinh = chudubi.NamSinh;
                        Chu.DiaChi = chudubi.DiaChi;
                        Chu.DinhDanh = chudubi.DinhDanh;
                        Chu.SoDinhDanh = chudubi.SoDinhDanh;
                        Chu.NoiCap = chudubi.NoiCap;
                        Chu.NgayCap = chudubi.NgayCap;
                        Chu.QuocTich = chudubi.QuocTich;

                        db.tblChus.Add(Chu);
                    }
                }

                //LƯU LẠI LẦN 1
                db.SaveChanges();

                return true;
            }
            catch (Exception ex)
            {

                return false;
            }
        }