Пример #1
0
        public void GetCheckInCheckOutData(FromToDateTime KhoangThoiGian, List <int> ArrayUEN, out List <cCheck> ResultListCheck)
        {
            DataTable tableArrayUEN = MyUtility.Array_To_DataTable("tableName", ArrayUEN);
            DataTable tableCheck    = SqlDataAccessHelper.ExecSPQuery(SPName6.CheckInOut_DocCheckChuaXuLyV6.ToString(),
                                                                      new SqlParameter("@From", KhoangThoiGian.From),
                                                                      new SqlParameter("@To", KhoangThoiGian.To),
                                                                      new SqlParameter {
                ParameterName = "@ArrayUserEnrollNumber", SqlDbType = SqlDbType.Structured, Value = tableArrayUEN
            },
                                                                      new SqlParameter("@DaChamCong", false),
                                                                      new SqlParameter("@Loai", false));

            ResultListCheck = new List <cCheck>();
            foreach (DataRow dataRow in tableCheck.Rows)
            {
                cCheck check = new cCheck {
                    MaCC       = (int)dataRow["UserEnrollNumber"],
                    Source     = dataRow["Source"].ToString(),
                    Time       = (DateTime)dataRow["TimeStr"],
                    MachineNo  = (int)dataRow["MachineNo"],
                    TypeColumn = dataRow["OriginType"].ToString()
                };
                check.Type = (check.MachineNo % 2 == 1) ? "I" : "O";
                ResultListCheck.Add(check);
            }
        }
        private void frmDangKyNhiemVuChoNV_Load(object sender, EventArgs e)
        {
            //lấy danh sách tất cả nhân viên trong phòng được thao tác và load vào datagrid
            DataTable    tableMaPhongBan    = MyUtility.Array_To_DataTable("tableMaPhongBan", m_listIDPhongBan);
            SqlParameter sqlParamArrUserIDD = new SqlParameter("@ArrUserIDD", SqlDbType.Structured)
            {
                Value = tableMaPhongBan
            };
            DataTable tableNhanVien = SqlDataAccessHelper.ExecSPQuery(SPName.sp_UserInfo_DocDSNVThaoTac.ToString(), sqlParamArrUserIDD);
            DataView  viewNhanVien  = new DataView(tableNhanVien);

            dgrdDSNVTrgPhg.DataSource = viewNhanVien;

            //load AutoComplete cho tb tìm kiếm
            var Source = new AutoCompleteStringCollection();

            Source.AddRange((from DataRow row in tableNhanVien.Rows select row["UserLastName"].ToString().ToUpperInvariant()).ToArray());
            tbSearch.AutoCompleteSource       = AutoCompleteSource.CustomSource;
            tbSearch.AutoCompleteMode         = AutoCompleteMode.SuggestAppend;
            tbSearch.AutoCompleteCustomSource = Source;

            //load nhiệm vụ cho checkList
            DataTable tableNhiemVu = SqlDataAccessHelper.ExecSPQuery(SPName.sp_NhiemVu_DocBang.ToString());

            checkListNhiemVu.DataSource    = tableNhiemVu;
            checkListNhiemVu.ValueMember   = "MaNhiemVu";
            checkListNhiemVu.DisplayMember = "TenNhiemVu";
        }
        private void btnXem_Click(object sender, EventArgs e)
        {
            /*1. lấy danh sách phòng ban(và con) được phép thao tác để lọc nhân viên trong phòng ngày
             * 2. lấy lựa chọn để xác định khoảng thời gian chọn
             * 3. lấy danh sách các nhiệm vụ được chọn để lọc các nhân viên có nhiệm vụ này
             * 4. lấy danh sách exclude nhân viên để loại ra các nhân viên này
             * 5. thực hiện
             */

            DataTable tableUserIDD = MyUtility.Array_To_DataTable("ArrayUserIDD", m_listIDPhongBan);

            DateTime ngayBD, ngayKT;

            this.XacDinhKhoangThoiGianChon(out ngayBD, out ngayKT);

            List <int> dsNhiemVuDangChon = new List <int>();

            this.LayDSNhiemVuDangChon(ref dsNhiemVuDangChon);

            List <int> dsExcludeMaCC = new List <int>();

            this.LayDSExcludeNV(ref dsExcludeMaCC);

            DataTable tableThongke = this.ThongKeCong_PC_Phep(ngayBD, ngayKT, tableUserIDD, dsExcludeMaCC, dsNhiemVuDangChon);

            dgrdThongKe.DataSource = tableThongke;
        }
        public static void XemCongThoiGianChuaKetLuong(List <cUserInfo> DSNV, DateTime ngayBD, DateTime ngayKT)
        {
            XmlConfigurator.Configure();
            if (DSNV.Count == 0)
            {
                return;
            }
            #region nạp dữ liệu từ database
            var       Arr_MaCC       = (from nv in DSNV select nv.MaCC).ToList(); // tạo mảng danh sách mã chấm công để viết chuỗi query : or.. or
            DataTable tableArrayMaCC = MyUtility.Array_To_DataTable("tableArrayMaCC", Arr_MaCC);
            var       tableCheck_A   = DAO5.LayTableCIO_A5(tableArrayMaCC, ngayBD, ngayKT);
            var       tableCheck_V   = DAO5.LayTableCIO_V5(tableArrayMaCC, ngayBD, ngayKT);
            var       tableXPVang    = DAO5.LayTableXPVang5(tableArrayMaCC, ngayBD, ngayKT);
            var       tableXNPC      = DAO5.LayTableXacNhanPhuCap(tableArrayMaCC, ngayBD, ngayKT, Duyet: true);
            var       tableNgayLe    = DAO5.DocNgayLe(ngayBD, ngayKT);
            #endregion

            #region transfer dữ liệu sang object
            foreach (var nv in DSNV)
            {
                var tempMaCC = nv.MaCC;
                nv.NgayCongBD_Bef2D = ngayBD;
                nv.NgayCongKT_Aft2D = ngayKT;
                LoadDSCheck_A5(tempMaCC, tableCheck_A, out nv.DS_Check_A);
                LoadDSCIO_V5(tempMaCC, tableCheck_V, out nv.DS_CIO_V);
                LoadDSXPVang_Le(tempMaCC, tableXPVang, tableNgayLe, nv.DSVang);
                LoadDSXNPC5(tempMaCC, tableXNPC, out nv.DSXNPC5);
                // khởi tạo danh sách ngày công
                KhoiTaoDSNgayCong(nv.DSNgayCong, ngayBD.AddDays(-2d), ngayKT.AddDays(2d));
            }

            #endregion
            #region xử lý
            var DS_Check_KoHopLe_AllNV = new List <cCheck>();
            var ds_raa3_vao1           = new List <cCheck>();
            foreach (var nv in DSNV)
            {
                List <cCheck> DS_Check_KoHopLe_1NV;
                LoaiBoCheckKoHopLe15(nv.DS_Check_A, out DS_Check_KoHopLe_1NV);                // loại bỏ check cùng loại trong 30ph, IO 30 phút
                DS_Check_KoHopLe_AllNV.AddRange(DS_Check_KoHopLe_1NV);                        // add vào ds ko hợp lệ của nhiều nhân viên để xóa sau
                GhepCIO_A2(nv.DS_Check_A, out nv.DS_CIO_A);
                XetCa_ListCIO_A3_5(nv.DS_CIO_A, nv.LichTrinhLV, ds_raa3_vao1, nv.DS_Check_A); // xét thuộc ThuocCa, update thuộc ngày công, tách ThuocCa 3&1 nếu có, rồi tính công//nv.MacDinhTinhPC50, //[140615_4]
                XetCa_ListCIO_V4_5(nv.DS_CIO_V);
                TronDS_CIO_A_V5(nv.DS_CIO_A, nv.DS_CIO_V, out nv.DSVaoRa);
                PhanPhoi_DSVaoRa6(nv.DSVaoRa, nv.DSNgayCong);
                PhanPhoi_DSVang7(nv.DSVang, nv.DSNgayCong);
                TinhCong_ListNgayCong8_5(nv.DSNgayCong);                //ver 4.0.0.4
                TinhPhuCap_ListNgayCong9_5(nv.DSNgayCong, nv.DSXNPC5);
            }
            if (DS_Check_KoHopLe_AllNV.Count > 0)
            {
                DAO5.LoaiGioLienQuan(DS_Check_KoHopLe_AllNV);
            }
            if (ds_raa3_vao1.Count > 0)
            {
                DAO5.ThemGio_ra3_vao1(ds_raa3_vao1);
            }
            #endregion
        }
        public static void XemCong_v08_2(List <cUserInfo> dsnv, DateTime ngayBD_Bef2D, DateTime ngayKT_Aft2D)
        {
            if (dsnv.Count == 0)
            {
                return;
            }
            #region nạp dữ liệu từ database
            var       Arr_MaCC       = (from nv in dsnv select nv.MaCC).ToList(); // tạo mảng danh sách mã nv chấm công
            DataTable tableArrayMaCC = MyUtility.Array_To_DataTable("tableArrayMaCC", Arr_MaCC);
            var       tableCheck_A   = DAO5.LayTableCIO_A5(tableArrayMaCC, ngayBD_Bef2D, ngayKT_Aft2D);
            var       tableCheck_V   = DAO5.LayTableCIO_V5(tableArrayMaCC, ngayBD_Bef2D, ngayKT_Aft2D);
            var       tableXPVang    = DAO5.LayTableXPVang5(tableArrayMaCC, ngayBD_Bef2D, ngayKT_Aft2D);
            var       tableXNPC      = DAO5.LayTableXacNhanPhuCap(tableArrayMaCC, ngayBD_Bef2D, ngayKT_Aft2D, Duyet: true);
            var       tableNgayLe    = DAO5.DocNgayLe(ngayBD_Bef2D, ngayKT_Aft2D);
            #endregion

            #region transfer dữ liệu sang object
            foreach (var nv in dsnv)
            {
                var tempMaCC = nv.MaCC;
                nv.NgayCongBD_Bef2D = ngayBD_Bef2D;
                nv.NgayCongKT_Aft2D = ngayKT_Aft2D;
                LoadDSCheck_A5(tempMaCC, tableCheck_A, out nv.DS_Check_A);
                LoadDSCIO_V5(tempMaCC, tableCheck_V, out nv.DS_CIO_V);
                LoadDSXPVang_Le(tempMaCC, tableXPVang, tableNgayLe, nv.DSVang);
                LoadDSXNPC50(tempMaCC, tableXNPC, nv.DSXNPhuCap50);
                // khởi tạo danh sách ngày công
                KhoiTaoDSNgayCong(nv.DSNgayCong, ngayBD_Bef2D, ngayKT_Aft2D);
            }

            #endregion
            #region xử lý
            //var DS_Check_KoHopLe_AllNV = new List<cCheck>();
            //var ds_raa3_vao1 = new List<cCheck>();
            //foreach (var nv in dsnv) {
            //	var DS_Check_KoHopLe_1NV = new List<cCheck>();
            //	LoaiBoCheckKoHopLe1(nv.DS_Check_A, ref DS_Check_KoHopLe_1NV);// loại bỏ check cùng loại trong 30ph, IO 30 phút
            //	DS_Check_KoHopLe_AllNV.AddRange(DS_Check_KoHopLe_1NV);// add vào ds ko hợp lệ của nhiều nhân viên để xóa sau
            //	GhepCIO_A2(nv.DS_Check_A, nv.DS_CIO_A);
            //	XetCa_ListCIO_A3(nv.DS_CIO_A, nv.LichTrinhLV, ds_raa3_vao1, nv.DS_Check_A);// xét thuộc ca, update thuộc ngày công, tách ca 3&1 nếu có, rồi tính công//nv.MacDinhTinhPC50, //[140615_4]
            //	XetCa_ListCIO_V4_5(nv.DS_CIO_V, nv.LichTrinhLV);
            //	TronDS_CIO_A_V5(nv.DS_CIO_A, nv.DS_CIO_V, nv.DSVaoRa);
            //	PhanPhoi_DSVaoRa6(nv.DSVaoRa, nv.DSNgayCong);
            //	PhanPhoi_DSVang7(nv.DSVang, nv.DSNgayCong);
            //	TinhCong_ListNgayCong8(nv.DSNgayCong, nv.StartNT, nv.EndddNT);//ver 4.0.0.4
            //	TinhPCTC_TrongListXNPCTC9(nv.DSXNPhuCap50, nv.DSNgayCong);
            //	TinhPCDB_TrongListXNPCDB10(nv.DSXNPhuCapDB, nv.DSNgayCong);
            //}
            //if (DS_Check_KoHopLe_AllNV.Count > 0) DAO.LoaiGioLienQuan(DS_Check_KoHopLe_AllNV);
            //if (ds_raa3_vao1.Count > 0) DAO.ThemGio_ra3_vao1(ds_raa3_vao1);
            #endregion
        }
        private void LayTableNhanVien(out DataTable tableNhanVien, List <cPhongBan> SelectedPhong)
        {
            List <int> listIDPhong       = (from cPhongBan phong in SelectedPhong select phong.Phong.ID).ToList();
            DataTable  tableArrayIDPhong = MyUtility.Array_To_DataTable("tableArrayIDD", listIDPhong);

            tableNhanVien = SqlDataAccessHelper.ExecSPQuery(SPName6.UserInfo_DocNhanVienChamCongV6.ToString(),
                                                            new SqlParameter("@ArrayIDDepartment", SqlDbType.Structured)
            {
                Value = tableArrayIDPhong
            },
                                                            new SqlParameter("@DepartmentEnable", true),
                                                            new SqlParameter("@UserEnabled", true));
        }
        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();
                }
            }
        }
Пример #8
0
        public static DataTable GetTableXNPCDB(DateTime ngayBD, DateTime ngayKT, List <int> ArrDSMaCC_Checked, bool Duyet = true)
        {
            DataTable    tableArrMaCC = MyUtility.Array_To_DataTable("TableMaCC", ArrDSMaCC_Checked);
            SqlParameter paramArrMaCC = new SqlParameter("@ArrayMaCC", SqlDbType.Structured)
            {
                Value = tableArrMaCC
            };

            DataTable result = SqlDataAccessHelper.ExecSPQuery(SPName.XacNhanPC_DocXNPC.ToString(),
                                                               paramArrMaCC,
                                                               new SqlParameter("@NgayBD", ngayBD),
                                                               new SqlParameter("@NgayKT", ngayKT)
                                                               );

            return(result);
        }
Пример #9
0
        private void LoadDSNV()
        {
            DataTable tableDSPhong = SqlDataAccessHelper.ExecSPQuery(SPName6.DeptPrivilege_DocPhongBanThaoTacV6.ToString(),
                                                                     new SqlParameter("@UserID", GlobalVariables.CurrentUserID), new SqlParameter("@ChoPhepThaoTac", true),
                                                                     new SqlParameter("@RelationDeptEnable", true));
            //LayTableNhanVien(out tableNhanVien, this.m_SelectedPhong);
            //m_NhanVienDR = (from DataRow dataRow in tableNhanVien.Rows select dataRow).ToList();
            List <int> listIDPhong       = (from DataRow dataRow in tableDSPhong.Rows select(int) dataRow["IDDepartment"]).ToList();
            DataTable  tableArrayIDPhong = MyUtility.Array_To_DataTable("tableArrayIDD", listIDPhong);
            DataTable  tableNhanVien     = SqlDataAccessHelper.ExecSPQuery(SPName6.UserInfo_DocNhanVienChamCongV6.ToString(),
                                                                           new SqlParameter("@ArrayIDDepartment", SqlDbType.Structured)
            {
                Value = tableArrayIDPhong
            },
                                                                           new SqlParameter("@DepartmentEnable", true),
                                                                           new SqlParameter("@UserEnabled", true));

            gridControl_DSNV.DataSource = tableNhanVien;
        }
        /// <summary>
        /// Lấy các nhân viên thuộc phòng ban được thao tác và có nhiệm vụ tương ứng nhiệm vụ được check
        /// </summary>
        /// <param name="listMaPhongBan"></param>
        /// <param name="listMaNhiemVu"></param>
        /// <returns></returns>
        public DataTable tableNhanVienNhanNhiemVu(List <int> listMaPhongBan, List <int> listMaNhiemVu)
        {
            DataTable    tableMaPhongBan    = MyUtility.Array_To_DataTable("tableMaPhongBan", listMaPhongBan);
            SqlParameter sqlParamArrUserIDD = new SqlParameter("@ArrUserIDD", SqlDbType.Structured);

            sqlParamArrUserIDD.Value = tableMaPhongBan;
            DataTable    tableMaNhiemVu       = MyUtility.Array_To_DataTable("tableMaNhiemVu", listMaNhiemVu);
            SqlParameter sqlParamArrMaNhiemVu = new SqlParameter("@ArrMaNhiemVu", SqlDbType.Structured);

            sqlParamArrMaNhiemVu.Value = tableMaNhiemVu;
            DataTable kq = SqlDataAccessHelper.ExecSPQuery(SPName.UserInfo_DocNhanVienNhanNhiemVu.ToString(),
                                                           sqlParamArrUserIDD, sqlParamArrMaNhiemVu);

            kq.Columns.Add(new DataColumn("check", typeof(bool))
            {
                DefaultValue = false
            });

            return(kq);
        }
        private void treePhongBan_AfterSelect(object sender, TreeViewEventArgs e)
        {
            #region mỗi lần chọn node thì lấy ID node hiện tại và tất cả node con

            m_listCurrentIDPhg.Clear();
            e.Node.Expand();
            TreeNode topnode = XL.TopNode(e.Node);             //đưa về root để thực hiện từ trên xuống
            if (topnode != null)
            {
                XL.GetIDNodeAndChildNode1(e.Node, ref m_listCurrentIDPhg);                              // chỉ lấy các phòng ban được phép,
            }
            else
            {
                var temp = ((DataRow)e.Node.Tag);
                if ((int)temp["IsYes"] == 1)
                {
                    m_listCurrentIDPhg.Add((int)temp["ID"]);
                }
            }

            #endregion

            /* 1. clear select chọn nhân viên trước
             * 2. load datasource cho check chọn nhân viên
             * 3. gán lại tên cho các column ngày
             */
//			checkedComboBoxEdit1.Properties.Items.Clear();
            DataTable tableMaPhong  = MyUtility.Array_To_DataTable("ArrUserIDD", m_listCurrentIDPhg);
            DataTable tableNhanVien = SqlDataAccessHelper.ExecSPQuery(SPName.sp_UserInfo_DocDSNVThaoTac.ToString(), new SqlParameter("@ArrUserIDD", SqlDbType.Structured)
            {
                Value = tableMaPhong
            });
            checkedDSNV.Properties.DataSource    = tableNhanVien;
            checkedDSNV.Properties.DisplayMember = "DisplayItem";
            checkedDSNV.Properties.ValueMember   = "UserEnrollNumber";

            for (int i = 3; i < 34; i++)             // bắt đầu từ 3 vì 1 mã cc, 2 mã nv, 3 tên nv
            {
                dgrdTongHop.Columns[i].HeaderText = string.Empty;
            }
        }
        private DataTable LayDSNhanVien(DataTable TableUserIDD, List <int> dsExcludeMaCC, List <int> dsNhiemVuDangChon)
        {
            SqlParameter sqlParamArrUserIDD = new SqlParameter("@ArrUserIDD", SqlDbType.Structured)
            {
                Value = TableUserIDD
            };
            DataTable tableExcludeNV    = MyUtility.Array_To_DataTable("TableExcludeNV", dsExcludeMaCC);
            DataTable tableArrMaNhiemVu = MyUtility.Array_To_DataTable("TableMaNhiemVu", dsNhiemVuDangChon);
            DataTable tableNhanVien     = SqlDataAccessHelper.ExecSPQuery(SPName.UserInfo_DocDSNVThongKeCongVaPC.ToString(),
                                                                          sqlParamArrUserIDD,
                                                                          new SqlParameter("@ArrExcludeMaCC", SqlDbType.Structured)
            {
                Value = tableExcludeNV
            },
                                                                          new SqlParameter("@ArrMaNhiemVu", SqlDbType.Structured)
            {
                Value = tableArrMaNhiemVu
            });

            return(tableNhanVien);
        }
Пример #13
0
        private void fmExcludeNV_Load(object sender, EventArgs e)
        {
            DataTable tableArrarMaPhong = MyUtility.Array_To_DataTable("TableArrayMaPhong", mListMaPhong);
            DataTable tableNhanVien     = SqlDataAccessHelper.ExecSPQuery(SPName.sp_UserInfo_DocDSNVThaoTac.ToString(),
                                                                          new SqlParameter("@ArrUserIDD", SqlDbType.Structured)
            {
                Value = tableArrarMaPhong
            });

            #region tạo datasourcr cho autocomplete

            var Source = new AutoCompleteStringCollection();
            Source.AddRange((from DataRow row in tableNhanVien.Rows select row["UserLastName"].ToString()).ToArray());
            tbSearch.AutoCompleteSource       = AutoCompleteSource.CustomSource;
            tbSearch.AutoCompleteMode         = AutoCompleteMode.SuggestAppend;
            tbSearch.AutoCompleteCustomSource = Source;

            #endregion

            dgrdDSNVTrgPhg.DataSource = new DataView(tableNhanVien);
        }
Пример #14
0
        public static DataTable GetTableCheckDaXN(List <int> ArrDSMaCC_Checked, DateTime ngayBD, DateTime ngayKT)
        {
            DataTable    tableArrMaCC = MyUtility.Array_To_DataTable("TableMaCC", ArrDSMaCC_Checked);
            SqlParameter paramArrMaCC = new SqlParameter("@ArrayMaCC", SqlDbType.Structured)
            {
                Value = tableArrMaCC
            };

            var       startVao = ngayBD.Add(XL2._18h00);
            var       endddVao = ngayKT.Add(XL2._04h30);
            var       startRaa = ngayBD.AddDays(1d).Add(XL2._07h00);
            var       endddRaa = ngayKT.Add(XL2._18h00);
            DataTable result   = SqlDataAccessHelper.ExecSPQuery(SPName.sp_CheckInOut_DocCheckDaCoXN.ToString(),
                                                                 paramArrMaCC,
                                                                 new SqlParameter("@BDVao", startVao),
                                                                 new SqlParameter("@KTVao", endddVao),
                                                                 new SqlParameter("@BDRaa", startRaa),
                                                                 new SqlParameter("@KTRaa", endddRaa)
                                                                 );

            return(result);
        }
        private void btnChamCong_Click(object sender, EventArgs e)
        {
            if (XL2.KiemtraKetnoiCSDL() == false)
            {
                return;
            }

            /* 1. lấy dsnv check, lấy tháng
             *
             */
            string     strChecked_ArrMaCC = checkedDSNV.EditValue.ToString();
            List <int> arrMaCC            = new List <int>();

            strChecked_ArrMaCC.Split(',').ToList().ForEach(item => arrMaCC.Add(int.Parse(item)));
            DataTable tableArrMaCC = MyUtility.Array_To_DataTable("tableArrMaCC", arrMaCC);

            DateTime ngayDauThang  = MyUtility.FirstDayOfMonth(dateNavigator1.DateTime);
            DateTime ngayCuoiThang = MyUtility.FirstDayOfMonth(dateNavigator1.DateTime);

            //kiểm tra tình trạng kết công
            XL.Kiemtra(ngayDauThang, ngayCuoiThang);
            this.ChamCong(tableArrMaCC, ngayDauThang);
        }
        private DataTable ThongKe(List <cUserInfo> listNhanVien, List <List <DateTime> > arrDoanTGChuaKetCong, List <List <DateTime> > arrDoanTGDaKetCong)
        {
            #region tạo DataTable result

            DataTable result = new DataTable();
            result.Columns.Add(new DataColumn {
                ColumnName = "UserEnrollNumber", DataType = typeof(int)
            });
            result.Columns.Add(new DataColumn {
                ColumnName = "UserFullCode", DataType = typeof(string)
            });
            result.Columns.Add(new DataColumn {
                ColumnName = "UserFullName", DataType = typeof(string)
            });
            result.Columns.Add(new DataColumn {
                ColumnName = "TongCong1", DataType = typeof(float), DefaultValue = 0f
            });
            result.Columns.Add(new DataColumn {
                ColumnName = "TongPC1", DataType = typeof(float), DefaultValue = 0f
            });
            result.Columns.Add(new DataColumn {
                ColumnName = "TongPhep1", DataType = typeof(float), DefaultValue = 0f
            });
            result.Columns.Add(new DataColumn {
                ColumnName = "TongCong2", DataType = typeof(float), DefaultValue = 0f
            });
            result.Columns.Add(new DataColumn {
                ColumnName = "TongPC2", DataType = typeof(float), DefaultValue = 0f
            });
            result.Columns.Add(new DataColumn {
                ColumnName = "TongPhep2", DataType = typeof(float), DefaultValue = 0f
            });
            result.Columns.Add(new DataColumn {
                ColumnName = "TongCong3", DataType = typeof(float), DefaultValue = 0f
            });
            result.Columns.Add(new DataColumn {
                ColumnName = "TongPC3", DataType = typeof(float), DefaultValue = 0f
            });
            result.Columns.Add(new DataColumn {
                ColumnName = "TongPhep3", DataType = typeof(float), DefaultValue = 0f
            });
            //result.Columns.Add(new DataColumn {ColumnName = "", DataType = typeof ()});

            #endregion

            #region tạo các row tương ứng từng nhân viên, mặc định tổng công, pc = 0 (đã set sẵn do trong lúc tạo datatable)

            for (int i = 0; i < listNhanVien.Count; i++)
            {
                DataRow row = result.NewRow();
                row["UserEnrollNumber"] = listNhanVien[i].MaCC;
                row["UserFullCode"]     = listNhanVien[i].MaNV;
                row["UserFullName"]     = listNhanVien[i].TenNV;
                result.Rows.Add(row);
            }

            #endregion

            #region nếu có khoảng thời gian chưa kết công thì xem công khoảng thời gian này và cập nhật phần tổng công 1...

            if (arrDoanTGChuaKetCong.Count != 0)
            {
                var ngayBD = arrDoanTGChuaKetCong[0][0];
                var ngayKT = arrDoanTGChuaKetCong[arrDoanTGChuaKetCong.Count - 1][1];
                XL.XemCong_v08(listNhanVien, ngayBD.AddDays(-2d), ngayKT.AddDays(2d));
                foreach (DataRow rowNhanVien in result.Rows)                 // tìm và cập nhật phần tổng công 1 tương ứng cho nhân viên đó
                {
                    var       uen       = (int)rowNhanVien["UserEnrollNumber"];
                    cUserInfo nhanvien  = listNhanVien.Find(item => item.MaCC == uen);
                    var       tongCong1 = 0f;             //tbd
                    var       tongPC1   = 0f;             //tbd
                    var       tongPhep1 = 0f;             //tbd
                    foreach (cNgayCong ngayCong in nhanvien.DSNgayCong)
                    {
                        if (ngayCong.Ngay < ngayBD || ngayCong.Ngay > ngayKT)
                        {
                            continue;
                        }
                        tongCong1 += ngayCong.TongCong;
                        tongPC1   += ngayCong.PhuCaps._TongPC;
                        var listPhep = (ngayCong.DSVang.Where(item => item.MaLV_Code.ToUpper() == "P").ToList());
                        if (listPhep.Count > 0)
                        {
                            tongPhep1 += listPhep.Sum(item1 => item1.WorkingDay);
                        }
                    }
                    rowNhanVien["TongCong1"] = tongCong1;
                    rowNhanVien["TongPC1"]   = tongPC1;
                    rowNhanVien["TongPhep1"] = tongPhep1;
                }
            }

            #endregion

            #region nếu có khoảng thời gian đã kết công thì cập nhật phần tổng cong 2

            if (arrDoanTGDaKetCong.Count != 0)
            {
                DataTable tableArrUEN       = MyUtility.Array_To_DataTable("TableArrUserEnrollNumber", (from cUserInfo item in listNhanVien select item.MaCC).ToList());
                DataTable tableTKeDaKetCong = SqlDataAccessHelper.ExecSPQuery(SPName.ThongKeCongVaPhuCap.ToString(),
                                                                              new SqlParameter("@ArrUserEnrollNumber", SqlDbType.Structured)
                {
                    Value = tableArrUEN
                },
                                                                              new SqlParameter("@NgayBatDau", arrDoanTGDaKetCong[0][0]),
                                                                              new SqlParameter("@NgayKetThuc", arrDoanTGDaKetCong[arrDoanTGDaKetCong.Count - 1][1]));
                foreach (DataRow rowCongDaKet in tableTKeDaKetCong.Rows)                 //tìm và cập nhật phần tổng công 2 tương ứng cho nhân viên đó
                {
                    var       uen         = (int)rowCongDaKet["UserEnrollNumber"];
                    DataRow[] rowNhanVien = result.Select("UserEnrollNumber=" + uen);
                    rowNhanVien[0]["TongCong2"] = Convert.ToSingle(rowCongDaKet["TongCong"]);
                    rowNhanVien[0]["TongPC2"]   = Convert.ToSingle(rowCongDaKet["TongPC"]);
                    rowNhanVien[0]["TongPhep2"] = rowCongDaKet["TongPhep"] != DBNull.Value ? Convert.ToSingle(rowCongDaKet["TongPhep"]) : 0f;
                }
            }

            #endregion
            foreach (DataRow row in result.Rows)
            {
                row["TongCong3"] = (float)row["TongCong1"] + (float)row["TongCong2"];
                row["TongPC3"]   = (float)row["TongPC1"] + (float)row["TongPC2"];
                row["TongPhep3"] = (float)row["TongPhep1"] + (float)row["TongPhep2"];
            }

            return(result);
        }
        private void treePhongBan_AfterSelect(object sender, TreeViewEventArgs e)
        {
            #region mỗi lần chọn node thì lấy ID node hiện tại và tất cả node con

            m_listIDPhongBan.Clear();
            e.Node.Expand();
            TreeNode topnode = XL.TopNode(e.Node);             //đưa về root để thực hiện từ trên xuống
            if (topnode != null)
            {
                XL.GetIDNodeAndChildNode1(e.Node, ref m_listIDPhongBan);                              // chỉ lấy các phòng ban được phép,
            }
            else
            {
                var temp = ((DataRow)e.Node.Tag);
                if ((int)temp["IsYes"] == 1)
                {
                    m_listIDPhongBan.Add((int)temp["ID"]);
                }
            }

            #endregion

            #region kiểm tra kết nối csdl , nếu mất kết nối thì đóng

            if (SqlDataAccessHelper.TestConnection(SqlDataAccessHelper.ConnectionString) == false)
            {
                ACMessageBox.Show(Resources.Text_MatKetNoiCSDL, Resources.Caption_Loi, 4000);
                Close();
                return;
            }

            #endregion
            DataTable tableMaPhong  = MyUtility.Array_To_DataTable("ArrUserIDD", m_listIDPhongBan);
            DataTable tableNhanVien = SqlDataAccessHelper.ExecSPQuery(SPName.UserInfo_DocDSNVThaoTac.ToString(), new SqlParameter("@ArrUserIDD", SqlDbType.Structured)
            {
                Value = tableMaPhong
            });
            List <cUserInfo> listNhanVien = new List <cUserInfo>();
            foreach (DataRow row in tableNhanVien.Rows)
            {
                cUserInfo nhanvien = new cUserInfo {
                    MaCC  = (int)row["UserEnrollNumber"],
                    MaNV  = row["UserFullCode"].ToString(),
                    TenNV = row["UserFullName"].ToString(),
                };
                XL.GetLichTrinhNV(nhanvien, row["SchID"] != DBNull.Value ? (int)row["SchID"] : (int?)null);
                listNhanVien.Add(nhanvien);
            }

            XL.TaoTableDSNV(m_DSNV, m_Bang_DSNV);

            #region tạo datasourcr cho autocomplete

            var Source = new AutoCompleteStringCollection();
            Source.AddRange((from nv in m_DSNV select nv.TenNV.ToUpperInvariant()).ToArray());
            tbSearch.AutoCompleteSource       = AutoCompleteSource.CustomSource;
            tbSearch.AutoCompleteMode         = AutoCompleteMode.SuggestAppend;
            tbSearch.AutoCompleteCustomSource = Source;

            #endregion

            dgrdDSNVTrgPhg.DataSource = m_Bang_DSNV;
            m_Bang_TongHopXemCong.Rows.Clear();
            m_Bang_GioKDQD.Rows.Clear();
            m_Bang_GioThieuCheck.Rows.Clear();
            m_Bang_ThK_TreSom.Rows.Clear();

            checkAll_GridDSNV.Checked = false;
        }