//public void Load_DS_CIO_DaCC

        public void ChamCong2(List <cUserInfo> DSNV, FromToDateTime KhoangTG)
        {
            //ở cấp trên luôn kiểm tra có nhân viên mới chấm công
            List <int> arrayUEN = (from cUserInfo item in DSNV select item.MaCC).ToList();


            List <cCheck>       DSCheckInCheckOut;
            List <cCheck>       DSCheck_BiLoai_All;
            DAL_CheckInCheckOut dal = new DAL_CheckInCheckOut();

            dal.GetCheckInCheckOutData(KhoangTG, arrayUEN, out DSCheckInCheckOut);
            XuLy_Loai_CheckTrong30ph(arrayUEN, DSCheckInCheckOut, out DSCheck_BiLoai_All);            // giữ check hợp lệ, loại check cùng loại, gần nhau, hoặc check nhầm IO trong 10ph

            // ghép check in- check out
            List <cCheck>      DS_Check_A = new List <cCheck>();
            List <cCheckInOut> DS_CIO_A   = new List <cCheckInOut>();

            foreach (cUserInfo nhanVien in DSNV)
            {
                DS_Check_A.Clear();
                DS_CIO_A.Clear();
                int ma_ChamCong = nhanVien.MaCC;
                DS_Check_A.AddRange(from item in DSCheckInCheckOut where item.MaCC == ma_ChamCong select item);
                DS_Check_A.Sort(new cCheckComparer());
                GhepCIO_A2(DS_Check_A, DS_CIO_A);
                XetCa_ListCIO_A3_V6(DS_CIO_A, nhanVien.NhomCa.DSCa);
                TinhTGLV_Cong(DS_CIO_A);
                //LapDSNgayCongDeXuLy(nhanVien.DS_CIO_A, out nhanVien.DSNgayDangCC);
                dal.Insert_CheckInOutData(ma_ChamCong, DS_CIO_A);
            }
        }
        private void XemCong2(List <cUserInfo> DSNV, FromToDateTime KhoangTG)
        {
            List <int> arrayUEN      = (from cUserInfo item in DSNV select item.MaCC).ToList();
            DataTable  tableArrayUEN = MyUtility.Array_To_DataTable("tableName", arrayUEN);

            List <cCheckInOut_DaCC>   DS_CIO_DaCC;
            List <cXacNhanPhuCapNgay> DS_XN_PC_Ngay;
            List <cKhaiBaoVang>       DS_KhaiBaoVang;
            List <DateTime>           DS_NgayLe;
            DAL_CheckInCheckOut       dal = new DAL_CheckInCheckOut();

            dal.GetCIOData(tableArrayUEN, KhoangTG, out DS_CIO_DaCC);
            dal.GetXacNhanPhuCapNgayData(tableArrayUEN, KhoangTG, out DS_XN_PC_Ngay);
            dal.GetNgayVangData(tableArrayUEN, KhoangTG, out DS_KhaiBaoVang);
            dal.GetNgayLeData(KhoangTG, out DS_NgayLe);
            foreach (cUserInfo nhanvien in DSNV)
            {
                int maCC = nhanvien.MaCC;
                LapDSNgayCongDeXuLy(maCC, KhoangTG, out nhanvien.DSNgayDaCC);

                foreach (cXacNhanPhuCapNgay xacNhanPhuCapNgay in DS_XN_PC_Ngay)
                {
                    cNgayCong ngayCoPhuCap = nhanvien.DSNgayDaCC.Single(item => item.Ngay == xacNhanPhuCapNgay.Ngay);
                    ngayCoPhuCap.SetXacNhanPhuCap(xacNhanPhuCapNgay.DuocTinhPCTC, xacNhanPhuCapNgay.DuocTinhPCNgayNghi, xacNhanPhuCapNgay.DuocTinhPCNgayLe, xacNhanPhuCapNgay.DuocTinhPCThuCong, xacNhanPhuCapNgay.PhuCapTay);
                    //ngayCoPhuCap.TinhLaiPhuCap();
                }

                foreach (cKhaiBaoVang khaiBaoVang in DS_KhaiBaoVang)
                {
                    cNgayCong ngayCoKBVang = nhanvien.DSNgayDaCC.Single(item => item.Ngay == khaiBaoVang.Ngay);
                    ngayCoKBVang.DSVang.Add(khaiBaoVang);
                }

                foreach (DateTime ngayLe in DS_NgayLe)
                {
                    cNgayCong ngayDuocChamCongLe = nhanvien.DSNgayDaCC.Single(item => item.Ngay == ngayLe);
                    ngayDuocChamCongLe.IsHoliday = true;
                }

                foreach (cNgayCong ngayCong in nhanvien.DSNgayDaCC)
                {
                    DateTime ngay = ngayCong.Ngay;
                    foreach (cCheckInOut_DaCC CIO_DaCC in DS_CIO_DaCC.Where(item => item.Ngay == ngay && item.MaCC == maCC))
                    {
                        ngayCong.Them_CheckInOut_DaCC(CIO_DaCC);
                    }
                    ngayCong.TinhLaiPhuCap();
                }
            }
        }
 private void XuLy_Loai_CheckTrong30ph(IEnumerable <int> ArrayUEN, List <cCheck> DSCheckInCheckOut, out List <cCheck> DSCheck_BiLoai_All)
 {
     DSCheck_BiLoai_All = new List <cCheck>();
     foreach (int uen in ArrayUEN)
     {
         List <cCheck> DS_Check_By_UEN = (from cCheck check in DSCheckInCheckOut where check.MaCC == uen select check).OrderBy(item => item.Time).ToList();
         List <cCheck> DSCheck_BiLoai_By_UEN;
         LoaiBoCheckKoHopLe1_V6(DS_Check_By_UEN, out DSCheck_BiLoai_By_UEN);
         foreach (cCheck cCheck in DSCheck_BiLoai_By_UEN)
         {
             DSCheckInCheckOut.Remove(cCheck);
             DSCheck_BiLoai_All.Add(cCheck);
         }
     }
     DAL.DAL_CheckInCheckOut dal = new DAL_CheckInCheckOut();
     dal.LoaiCheckTrong30ph(DSCheck_BiLoai_All);
 }