Beispiel #1
0
        private void treePhongBan_AfterSelect(object sender, TreeViewEventArgs e)
        {
            m_listIDPhongBan.Clear();
            if (e.Node.FirstNode != null)
            {
                GetIDLeafNodeExceptParent(e.Node, m_listIDPhongBan);
            }
            else
            {
                m_listIDPhongBan.Add((int)e.Node.Tag);
            }
            e.Node.Expand();

            if (SqlDataAccessHelper.TestConnection(SqlDataAccessHelper.ConnectionString) == false)
            {
                AutoClosingMessageBox.Show("Mất kết nối với CSDL. Vui lòng thử lại sau.", "Lỗi", 4000);
                this.Close();
                return;
            }

            #region lấy ngày BD và kết thúc, và update lại Ngày BD = 1 ngày trước 31/08 12:00 AM, ngày KT là 1 ngày sau ngay 1 23:59:59
            dtpNgay.Update();
            DateTime ngayBD = dtpNgay.Value.Date;
            ngayBD = ngayBD.AddDays(-2d);
            DateTime ngayKT = ngayBD.AddDays(4d);
            #endregion

            // lấy dsnv tất cả nv thuộc các phòng ban được chọn
            DataTable table = DAL.LayDSNV(m_listIDPhongBan.ToArray());
            if (table.Rows.Count == 0)
            {
                return;
            }
            m_DSNV.Clear();
            XL.KhoiTaoDSNV(m_DSNV, table);

            //3. lấy dữ liệu chấm công của các nhân viên
            //[CHÚ Ý] ngày bắt đầu và kết thúc đã cộng trừ thêm 1 ngày trước sau ở bở trên

            int SoNVDangLamViec = 0, SoNVDaRaVe = 0, SoNVVang = 0;
            try {
                //dsnv = XL.XemCong(table, ArrDSMaCC_Checked, ngayBD, ngayKT);
                XL.DiemDanh(m_DSNV, ngayBD, ngayKT);
                m_CTDiemDanh.Rows.Clear();
                XL.TaoTableDiemDanh(m_DSNV, m_CTDiemDanh, out SoNVDangLamViec, out SoNVDaRaVe, out SoNVVang);
            } catch (Exception exception) {
                lg.Error("form diem danh", exception);
                MessageBox.Show("Mất kết nối đến máy chủ. Vui lòng thử lại sau.", "Lỗi");
                GC.Collect();
                return;
            }

            //4. xử lý dữ liệu để đưa lên lưới tổng hợp

            tbTongSoNV.Text        = m_DSNV.Count.ToString();
            tbSoNVDangLamViec.Text = SoNVDangLamViec.ToString();
            tbSoNVDaRaVe.Text      = SoNVDaRaVe.ToString();
            tbSoNVVang.Text        = SoNVVang.ToString();
            dgrdTongHop.DataSource = m_CTDiemDanh;
        }
Beispiel #2
0
        private void btnXuatBB_Click(object sender, EventArgs e)
        {
            if (SqlDataAccessHelper.TestConnection(SqlDataAccessHelper.ConnectionString) == false)
            {
                AutoClosingMessageBox.Show("Mất kết nối với CSDL. Vui lòng thử lại sau.", "Lỗi", 2000);
                return;
            }

            //1. lấy dữ liệu từ form
            #region lấy ngày BD và kết thúc, và update lại Ngày BD = 1 ngày trước 31/08 12:00 AM, ngày KT là 1 ngày sau ngay 1 23:59:59
            dtpNgay.Update();
            DateTime ngayBD = dtpNgay.Value.Date;
            ngayBD = ngayBD.AddDays(-2d);
            DateTime ngayKT = ngayBD.AddDays(4d);
            #endregion

            // lấy dsnv tất cả nv thuộc các phòng ban được chọn
            DataTable table = DAL.LayDSNV(m_listIDPhongBan.ToArray());
            if (table.Rows.Count == 0)
            {
                return;
            }
            m_DSNV.Clear();
            XL.KhoiTaoDSNV(m_DSNV, table);

            //3. lấy dữ liệu chấm công của các nhân viên
            //[CHÚ Ý] ngày bắt đầu và kết thúc đã cộng trừ thêm 1 ngày trước sau ở bở trên
            if (XL.KiemtraDulieuCapnhatTuServer(DateTime.Now) == false)
            {
                AutoClosingMessageBox.Show("Dữ liệu chấm công chưa được cập nhật mới nhất từ các máy chấm công.\nCác thay đổi giờ chấm công có thể làm sai sót giờ chấm công thực tế khi dữ liệu được cập nhật.", "Thông báo", 4000);
            }

            int SoNVDangLamViec = 0, SoNVDaRaVe = 0, SoNVVang = 0;
            //dsnv = XL.XemCong(table, ArrDSMaCC_Checked, ngayBD, ngayKT);
            XL.DiemDanh(m_DSNV, ngayBD, ngayKT);
            m_CTDiemDanh.Rows.Clear();
            XL.TaoTableDiemDanh(m_DSNV, m_CTDiemDanh, out SoNVDangLamViec, out SoNVDaRaVe, out SoNVVang);

            saveFileDlgDiemDanh.Filter = "Excel File|*.xlsx";
            saveFileDlgDiemDanh.ShowDialog();
            if (saveFileDlgDiemDanh.FileName == String.Empty)
            {
                return;
            }
            var saveFileName = saveFileDlgDiemDanh.FileName;

            using (var p = new ExcelPackage()) {
                #region Ghi file , nếu xảy ra lỗi thì báo
                XuatBBDSNVDLV(p);
                XuatBBDSNVVang(p);
                Byte[] bin = p.GetAsByteArray();
                try {
                    File.WriteAllBytes(saveFileName, bin);                    //(file_path, bin);
                    AutoClosingMessageBox.Show("Xuất báo biểu thành công.", "Thông báo", 2000);
                } catch (Exception exception) {
                    lg.Error("XuatBBDiemDanh", exception);
                    if (exception is UnauthorizedAccessException)
                    {
                        MessageBox.Show("Bạn chưa được cấp quyền ghi file vào folder.", "Lỗi");
                    }
                    else if (exception is DirectoryNotFoundException)
                    {
                        MessageBox.Show("Không tìm thấy folder lưu trữ.", "Lỗi");
                    }
                    else if (exception is IOException)
                    {
                        MessageBox.Show("File đang mở bởi ứng dụng khác.", "Lỗi");
                    }
                    else
                    {
                        MessageBox.Show("Không thể ghi được file báo biểu.", "Lỗi");
                    }
                }

                #endregion
            }
        }