private void btnRefresh_Click(object sender, EventArgs e)
        {
            if (TimKiem_BaoCao.CheckTuNgayDenNgay(calTuNgay.Value, calDenNgay.Value))
            {
                List <KiemSoatXeLienLac> ListSuKienCuaXe = KiemSoatXeLienLac.GetBaoCaoMatLienLac(calTuNgay.Value, calDenNgay.Value);

                if ((ListSuKienCuaXe != null) && (ListSuKienCuaXe.Count > 1))
                {
                    int iLen = ListSuKienCuaXe.Count;

                    BaoCao15 objBC15;
                    BaoCao15 objBC15LLTongDai = new BaoCao15();
                    for (int i = 0; i < iLen - 1; i++)
                    {
                        objBC15 = XacDinhMatLienLacCuaXe(ListSuKienCuaXe[i], ListSuKienCuaXe[i + 1]);

                        if (objBC15 != null)
                        {
                            if (objBC15.ThoiDiemDaiGoi.Length > 0)               // co thong tin dai goi
                            {
                                if (objBC15LLTongDai.ThoiDiemDaiGoi.Length <= 0) // chua khoi tao du lieu tong dai goi
                                {
                                    objBC15LLTongDai.KhoangMatLienLac = objBC15.KhoangMatLienLac;
                                    objBC15LLTongDai.SoHieuXe         = objBC15.SoHieuXe;
                                    objBC15LLTongDai.TenLaiXe         = objBC15.TenLaiXe;
                                    objBC15LLTongDai.ThoiDiemDaiGoi   = objBC15.ThoiDiemDaiGoi;
                                    objBC15LLTongDai.GhiChu           = objBC15.GhiChu;
                                }
                                else   // truoc day da co thong tin dai goi
                                {
                                    objBC15LLTongDai.ThoiDiemDaiGoi += ";" + objBC15.ThoiDiemDaiGoi;
                                }
                            }
                            else
                            {
                                if ((objBC15LLTongDai.KhoangMatLienLac == null) || (objBC15LLTongDai.ThoiDiemDaiGoi.Length <= 0)) // Khoong co thong tin dai goi truoc day
                                {
                                    g_ListItemBC15.Add(objBC15);
                                }
                                else   // truoc day da co thong tin dai goi
                                {
                                    objBC15LLTongDai.GhiChu            = objBC15.GhiChu;
                                    objBC15LLTongDai.KhoangMatLienLac += objBC15.KhoangMatLienLac;

                                    g_ListItemBC15.Add(new BaoCao15(objBC15LLTongDai.SoHieuXe, objBC15LLTongDai.TenLaiXe, GetChuanKhoangMatLiennLac(objBC15LLTongDai.KhoangMatLienLac), objBC15LLTongDai.ThoiDiemDaiGoi, objBC15LLTongDai.GhiChu));
                                    // khoi tao lai
                                    objBC15LLTongDai.ThoiDiemDaiGoi   = "";
                                    objBC15LLTongDai.SoHieuXe         = "";
                                    objBC15LLTongDai.GhiChu           = "";
                                    objBC15LLTongDai.TenLaiXe         = "";
                                    objBC15LLTongDai.KhoangMatLienLac = "";
                                }
                            }
                        }
                        if ((i == iLen - 1 - 1) && (objBC15LLTongDai.KhoangMatLienLac.Length > 0))
                        {
                            g_ListItemBC15.Add(objBC15LLTongDai);
                        }
                    }
                }


                gridXeMatLienLac.DataMember = "lstXeMatLienLac";
                gridXeMatLienLac.SetDataBinding(g_ListItemBC15, "lstXeMatLienLac");

                btnRefresh.Enabled = false;
                //  btnPrint.Enabled = !btnRefresh.Enabled;
                btnExportExcel.Enabled = !btnRefresh.Enabled;
            }
            else
            {
                MessageBox.MessageBoxBA msgDialog = new Taxi.MessageBox.MessageBoxBA();
                msgDialog.Show(this, "Bạn phải nhập [Từ ngày] nhỏ hơn hoặc bằng [Đến ngày].", "Thông báo", Taxi.MessageBox.MessageBoxButtonsBA.OK, Taxi.MessageBox.MessageBoxIconBA.Warning);
                return;
            }
        }
        /// <summary>
        /// hàm sẽ trả về thông tin maats liên lạc của xe
        ///   - nếu mất liên lạc thì giá trị trả về khách null
        ///   - nếu có HasTôngDàicheck = true thì lưu lại vào objOld để cho vòng lặp sau
        ///
        /// </summary>
        /// <param name="objOld"></param>
        /// <param name="TrangThaiXe1"></param>
        /// <param name="TrangThaiXe2"></param>
        /// <param name="HasTongDaiCheck"></param>
        /// <returns></returns>
        private BaoCao15 XacDinhMatLienLacCuaXe(KiemSoatXeLienLac TrangThaiXe1, KiemSoatXeLienLac TrangThaiXe2)
        {
            string KhoangMatLienLac = "";
            string TongDaiCheck     = "";
            string GhiChu           = "";


            if (TrangThaiXe1.SoHieuXe != TrangThaiXe2.SoHieuXe)
            {
                return(null);
            }

            if (TrangThaiXe2.TrangThaiLaiXeBao == Taxi.Utils.KieuLaiXeBao.BaoRaHoatDong)
            {
                return(null);                                                                      // thời đỉem trước đó là về không cần xét
            }
            TimeSpan timeSpan = TrangThaiXe2.ThoiDiemBao - TrangThaiXe1.ThoiDiemBao;

            if ((TrangThaiXe2.TrangThaiLaiXeBao != Taxi.Utils.KieuLaiXeBao.TongDaiCheck) && (timeSpan.TotalMinutes < ThongTinCauHinh.SoPhutGioiHanMatLienLac))
            {
                return(null);
            }
            else // có dấu hiệu mất liên lạc
            {
                // Khach duong dai
                if (TrangThaiXe1.LoaiChoKhach == Taxi.Utils.LoaiChoKhach.ChoKhachDuongDai)
                {
                    if (timeSpan.TotalMinutes >= ThongTinCauHinh.SoPhutGioiHanMatLienLacBaoDiDuongDai) //  mât liên lạc
                    {
                        KhoangMatLienLac = string.Format("{0: HH:mm}h", TrangThaiXe1.ThoiDiemBao.Add(new TimeSpan(0, ThongTinCauHinh.SoPhutGioiHanMatLienLacBaoDiDuongDai, 0))) + string.Format("-{0: HH:mm}h ngày {1:dd/MM}", TrangThaiXe2.ThoiDiemBao, TrangThaiXe2.ThoiDiemBao);
                    }
                }
                //  báo cho khach di san bay
                else if (TrangThaiXe1.LoaiChoKhach == Taxi.Utils.LoaiChoKhach.ChoKhachSanBay)
                {
                    if (timeSpan.TotalMinutes >= ThongTinCauHinh.SoPhutGioiHanMatLienLacBaoDiSanBay) //  mât liên lạc
                    {
                        KhoangMatLienLac = string.Format("{0: HH:mm}h", TrangThaiXe1.ThoiDiemBao.Add(new TimeSpan(0, ThongTinCauHinh.SoPhutGioiHanMatLienLacBaoDiSanBay, 0))) + string.Format("-{0: HH:mm}h ngày {1:dd/MM}", TrangThaiXe2.ThoiDiemBao, TrangThaiXe2.ThoiDiemBao);
                    }
                }
                else
                {
                    if (TrangThaiXe1.TrangThaiLaiXeBao == Taxi.Utils.KieuLaiXeBao.BaoNghi)
                    {
                        if (timeSpan.TotalMinutes >= ThongTinCauHinh.SoPhutGioiHanMatLienLacBaoNghi)
                        {
                            KhoangMatLienLac = string.Format("{0: HH:mm}h", TrangThaiXe1.ThoiDiemBao.Add(new TimeSpan(0, ThongTinCauHinh.SoPhutGioiHanMatLienLacBaoNghi, 0))) + string.Format("-{0: HH:mm}h ngày {1:dd/MM}", TrangThaiXe2.ThoiDiemBao, TrangThaiXe2.ThoiDiemBao);
                        }
                    }
                    else
                    {
                        if ((timeSpan.TotalMinutes >= ThongTinCauHinh.SoPhutGioiHanMatLienLac) || (TrangThaiXe2.TrangThaiLaiXeBao == Taxi.Utils.KieuLaiXeBao.TongDaiCheck))
                        {
                            if (TrangThaiXe2.TrangThaiLaiXeBao != Taxi.Utils.KieuLaiXeBao.TongDaiCheck)
                            {
                                DateTime temp = TrangThaiXe1.ThoiDiemBao.Add(new TimeSpan(0, ThongTinCauHinh.SoPhutGioiHanMatLienLac, 0));
                                KhoangMatLienLac  = string.Format("{0: HH:mm }h", temp);
                                KhoangMatLienLac += string.Format("-{0: HH:mm}h ngày {1:dd/MM}", TrangThaiXe2.ThoiDiemBao, TrangThaiXe2.ThoiDiemBao);
                            }
                            else
                            {
                                KhoangMatLienLac  = string.Format("{0: HH:mm }h", TrangThaiXe1.ThoiDiemBao);
                                KhoangMatLienLac += string.Format("-{0: HH:mm}h ngày {1:dd/MM}", TrangThaiXe2.ThoiDiemBao, TrangThaiXe2.ThoiDiemBao);
                            }
                        }
                    }
                }
            }
            if (TrangThaiXe2.TrangThaiLaiXeBao == Taxi.Utils.KieuLaiXeBao.TongDaiCheck)
            {
                TongDaiCheck = string.Format("{0: HH:mm}h", TrangThaiXe2.ThoiDiemBao);
            }

            GhiChu = GetGhiChu(TrangThaiXe1);


            BaoCao15 objBC15 = new BaoCao15();

            objBC15.SoHieuXe         = TrangThaiXe1.SoHieuXe;
            objBC15.KhoangMatLienLac = KhoangMatLienLac;
            objBC15.TenLaiXe         = TrangThaiXe1.MaLaiXe;
            objBC15.ThoiDiemDaiGoi   = TongDaiCheck;

            objBC15.GhiChu = GhiChu;

            if (((objBC15.GhiChu.Length <= 0) || (objBC15.KhoangMatLienLac.Length <= 0)) && (objBC15.ThoiDiemDaiGoi.Length <= 0))
            {
                return(null);
            }

            return(objBC15);
        }