public bool CapNhatHopDong(clsHopDong_DTO HD)
        {
            clsHopDong_DAO DAO = new clsHopDong_DAO();

            HD.NgayBatDau  = HD.NgayBatDau.Date;
            HD.NgayKy      = HD.NgayKy.Date;
            HD.NgayKetThuc = HD.NgayKetThuc.Date;
            return(DAO.CapNhatHopDong(HD));
        }
        public List <clsHopDong_DTO> LayDanhSachHopDong(string MaNV)
        {
            SqlConnection         conn = ThaoTacDuLieu.TaoVaMoKetNoi();
            string                sql  = string.Format("SELECT * FROM HOPDONGLAODONG WHERE MANV = '{0}' ORDER BY TUNGAY", MaNV);
            SqlCommand            cmd  = ThaoTacDuLieu.TaoDoiTuongTruyVan(sql, conn);
            SqlDataReader         dr   = cmd.ExecuteReader();
            List <clsHopDong_DTO> lsHD = new List <clsHopDong_DTO>();

            while (dr.Read())
            {
                clsHopDong_DTO HD = new clsHopDong_DTO();
                if (!dr.IsDBNull(0))
                {
                    HD.MaHDLD = dr.GetString(0);
                }
                if (!dr.IsDBNull(1))
                {
                    HD.MaNV = dr.GetString(1);
                }
                if (!dr.IsDBNull(2))
                {
                    HD.LoaiHD = dr.GetString(2);
                }
                if (!dr.IsDBNull(3))
                {
                    HD.NgayBatDau = dr.GetDateTime(3);
                }
                if (!dr.IsDBNull(4))
                {
                    HD.NgayKetThuc = dr.GetDateTime(4);
                }
                if (!dr.IsDBNull(5))
                {
                    HD.DiaDiemLam = dr.GetString(5);
                }
                if (!dr.IsDBNull(6))
                {
                    HD.CongViec = dr.GetString(6);
                }
                if (!dr.IsDBNull(7))
                {
                    HD.ThoiGianLam = dr.GetDouble(7);
                }
                if (!dr.IsDBNull(8))
                {
                    HD.TrangBi = dr.GetString(8);
                }
                if (!dr.IsDBNull(9))
                {
                    HD.NgayKy = dr.GetDateTime(9);
                }
                //hợp đồng không xác dịnh thời hạn
                lsHD.Add(HD);
            }
            ThaoTacDuLieu.DongKetNoi(conn);
            return(lsHD);
        }
        public bool CapNhatHopDong(clsHopDong_DTO HD)
        {
            SqlConnection conn = ThaoTacDuLieu.TaoVaMoKetNoi();
            string        sql  = "";
            DateTime      dt   = new DateTime(1900, 1, 1);

            if (HD.NgayKetThuc == dt.Date)
            {
                sql = string.Format("UPDATE HOPDONGLAODONG SET LOAIHD = N'{0}', TUNGAY = '{1}', DIADIEMLAM = N'{2}', CONGVIEC = N'{3}', THOIGIANLAM = {4}, TRANGBILAODONG = N'{5}', NGAYKY = '{6}', DENNGAY = '' WHERE MAHDLD = '{7}'", HD.LoaiHD, HD.NgayBatDau, HD.DiaDiemLam, HD.CongViec, HD.ThoiGianLam, HD.TrangBi, HD.NgayKy, HD.MaHDLD);
            }
            else
            {
                sql = string.Format("UPDATE HOPDONGLAODONG SET LOAIHD = N'{0}', TUNGAY = '{1}', DENNGAY = '{2}', DIADIEMLAM = N'{3}', CONGVIEC = N'{4}', THOIGIANLAM = {5}, TRANGBILAODONG = N'{6}', NGAYKY = '{7}' WHERE MAHDLD = '{8}'", HD.LoaiHD, HD.NgayBatDau, HD.NgayKetThuc, HD.DiaDiemLam, HD.CongViec, HD.ThoiGianLam, HD.TrangBi, HD.NgayKy, HD.MaHDLD);
            }
            SqlCommand cmd = ThaoTacDuLieu.TaoDoiTuongTruyVan(sql, conn);
            int        kq  = (int)cmd.ExecuteNonQuery();

            ThaoTacDuLieu.DongKetNoi(conn);
            return(kq > 0);
        }
        public bool ThemHopDong(clsHopDong_DTO HD)
        {
            SqlConnection conn = ThaoTacDuLieu.TaoVaMoKetNoi();
            string        sql  = "";
            DateTime      dt   = new DateTime(1900, 1, 1);

            if (HD.NgayKetThuc == dt.Date)
            {
                sql = string.Format("INSERT INTO HOPDONGLAODONG(MAHDLD,MANV,LOAIHD,TUNGAY,DIADIEMLAM,CONGVIEC,THOIGIANLAM,TRANGBILAODONG,NGAYKY,DENNGAY) VALUES  ('{0}','{1}',N'{2}','{3}',N'{4}',N'{5}',N'{6}','{7}',N'{8}',{9},{10},'{11}')", "HDLD" + (ThaoTacDuLieu.LaySoLuong("HOPDONGLAODONG", conn) + 1).ToString(), HD.MaNV, HD.LoaiHD, HD.NgayBatDau, HD.DiaDiemLam, HD.CongViec, HD.ThoiGianLam, HD.TrangBi, HD.NgayKy, HD.NgayKetThuc);
            }
            else
            {
                sql = string.Format("INSERT INTO HOPDONGLAODONG(MAHDLD,MANV,LOAIHD,TUNGAY,DENNGAY,DIADIEMLAM,CONGVIEC,THOIGIANLAM,TRANGBILAODONG,NGAYKY) VALUES  ('{0}','{1}',N'{2}','{3}','{4}',N'{5}',N'{6}',{7},N'{8}','{9}')", "HDLD" + (ThaoTacDuLieu.DemSoLuong("SELECT COUNT(*) FROM HOPDONGLAODONG") + 1).ToString(), HD.MaNV, HD.LoaiHD, HD.NgayBatDau, dt.Date, HD.DiaDiemLam, HD.CongViec, HD.ThoiGianLam, HD.TrangBi, HD.NgayKy);
            }
            SqlCommand cmd = ThaoTacDuLieu.TaoDoiTuongTruyVan(sql, conn);
            int        kq  = cmd.ExecuteNonQuery();

            ThaoTacDuLieu.DongKetNoi(conn);
            return(kq > 0);
        }
        private void btnThemHopDong_Click(object sender, EventArgs e)
        {
            bool           KiemTra = false;
            clsHopDong_DTO HopDong = new clsHopDong_DTO();

            HopDong.MaNV       = NhanVien.MaNV;
            HopDong.NgayBatDau = dtpNgayBatDau.Value;
            if (cboLoaiHD.SelectedIndex == 0)
            {
                HopDong.NgayKetThuc = dtpNgayKetThuc.Value;
                if (HopDong.NgayKetThuc.Date <= HopDong.NgayBatDau.Date)
                {
                    MessageBox.Show("Ngày kết thúc phải lớn hơn ngày bắt đầu", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                else if (HopDong.NgayBatDau.Date.AddMonths(12) != HopDong.NgayKetThuc.Date && HopDong.NgayBatDau.Date.AddMonths(36) != HopDong.NgayKetThuc.Date) // Thời điểm kết chấm dứt hợp đồng xác định thời hạn chưa đủ 12 tháng hoặc chưa đủ 36 tháng
                {
                    MessageBox.Show("Thời điểm chấm dứt hiệu lực của hợp đồng xác định thời hạn trong khoảng thời gian từ đủ 12 tháng đến 36 tháng.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                else //Đủ điều kiện của hợp đồng xác định thời hạn
                {
                    HopDong.LoaiHD = "Xác định thời hạn";
                    KiemTra        = true;
                }
            }
            if (cboLoaiHD.SelectedIndex == 1)
            {
                HopDong.LoaiHD = "Không xác định thời hạn";
                KiemTra        = true;
            }
            if (cboLoaiHD.SelectedIndex == 2)  // Là hợp đồng thời vụ
            {
                HopDong.NgayKetThuc = dtpNgayKetThuc.Value;
                if (HopDong.NgayKetThuc.Date <= HopDong.NgayBatDau.Date)
                {
                    MessageBox.Show("Ngày kết thúc phải lớn hơn ngày bắt đầu", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                else if (HopDong.NgayBatDau.Date.AddDays(HopDong.NgayKetThuc.Date.Subtract(HopDong.NgayBatDau.Date).TotalDays) >= HopDong.NgayBatDau.Date.AddMonths(12)) // Hợp đồng thời vụ lớn hoặc bằng 12
                {
                    MessageBox.Show("Thời điểm chấm dứt hiệu lực của hợp đồng thời vụ phải dưới 12 tháng.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                else
                {
                    HopDong.LoaiHD = "Thời vụ";
                    KiemTra        = true;
                }
            }

            HopDong.DiaDiemLam = txtDiaDiem.Text;
            //HopDong.ChucVu = cboChucVu.SelectedValue.ToString(); // Chọn sẵn khi chọn Mã nhân viên của datagridview ngoài tabcontrol
            HopDong.CongViec    = txtCongViec.Text;
            HopDong.ThoiGianLam = 8;               // Thời gian làm bao nhiêu giờ 1 ngày
            HopDong.TrangBi     = txtTrangBiLD.Text;
            HopDong.NgayKy      = dtpNgayKy.Value; // Lấy ngày kí hợp đồng là ngày hệ thống

            if (KiemTra && KiemTraDuLieu())
            {
                clsHopDong_BUS BUSHD = new clsHopDong_BUS();
                if (BUSHD.ThemHopDong(HopDong))
                {
                    MessageBox.Show("Thêm hợp đồng thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    dgvHopDongNV.DataSource = BUSHD.LayDanhSachHopDong(NhanVien.MaNV);
                    clsNhatKy_BUS BUSNK = new clsNhatKy_BUS();
                    XoaDuLieu();
                    BUSNK.ThemNhatKy(Program.NhanVien_Login.TaiKhoan, DateTime.Now, string.Format("Thêm hợp đồng {0} {1} cho nhân viên {2} {3} ", HopDong.LoaiHD, HopDong.MaHDLD, NhanVien.Ho, NhanVien.Ten));
                    btnThemHopDong.Enabled = false;
                }
                else
                {
                    MessageBox.Show("Thêm hợp đồng thất bại", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }
        private void btnCapNhatHopDong_Click(object sender, EventArgs e)
        {
            try
            {
                bool           KiemTra = false;                                                   // Nhập sai ngày bắt đầu hợp đồng và ngày kết thúc hợp đồng
                clsHopDong_DTO HopDong = new clsHopDong_DTO();
                HopDong.MaHDLD     = dgvHopDongNV.CurrentRow.Cells["colMaHDLD"].Value.ToString(); // Lấy Mã hợp đồng được chọn ở dgvHopDongNV
                HopDong.MaNV       = NhanVien.MaNV;                                               // Lấy mã nhân viên được chọn ở  DgvNhanVien
                HopDong.NgayBatDau = dtpNgayBatDau.Value;
                if (cboLoaiHD.SelectedIndex == 0)
                {
                    HopDong.NgayKetThuc = dtpNgayKetThuc.Value;
                    if (HopDong.NgayKetThuc.Date <= HopDong.NgayBatDau.Date)
                    {
                        MessageBox.Show("Ngày kết thúc phải lớn hơn ngày bắt đầu", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                    else if (HopDong.NgayBatDau.Date.AddMonths(12) != HopDong.NgayKetThuc.Date && HopDong.NgayBatDau.Date.AddMonths(36) != HopDong.NgayKetThuc.Date) // Thời điểm kết chấm dứt hợp đồng xác định thời hạn chưa đủ 12 tháng hoặc chưa đủ 36 tháng
                    {
                        MessageBox.Show("Thời điểm chấm dứt hiệu lực của hợp đồng xác định thời hạn trong khoảng thời gian từ đủ 12 tháng đến 36 tháng.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                    else //Đủ điều kiện của hợp đồng xác định thời hạn
                    {
                        HopDong.LoaiHD = "Xác định thời hạn";
                        KiemTra        = true;
                    }
                }
                if (cboLoaiHD.SelectedIndex == 1)
                {
                    HopDong.LoaiHD = "Không xác định thời hạn";
                    KiemTra        = true;
                }
                if (cboLoaiHD.SelectedIndex == 2)  // Là hợp đồng thời vụ
                {
                    HopDong.NgayKetThuc = dtpNgayKetThuc.Value;
                    if (HopDong.NgayKetThuc.Date <= HopDong.NgayBatDau.Date)
                    {
                        MessageBox.Show("Ngày kết thúc phải lớn hơn ngày bắt đầu", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                    else if (HopDong.NgayBatDau.Date.AddDays(HopDong.NgayKetThuc.Date.Subtract(HopDong.NgayBatDau.Date).TotalDays) >= HopDong.NgayBatDau.Date.AddMonths(12)) // Hợp đồng thời vụ lớn hoặc bằng 12
                    {
                        MessageBox.Show("Thời điểm chấm dứt hiệu lực của hợp đồng thời vụ phải dưới 12 tháng.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                    else
                    {
                        HopDong.LoaiHD = "Thời vụ";
                        KiemTra        = true;
                    }
                }

                HopDong.DiaDiemLam  = txtDiaDiem.Text;
                HopDong.CongViec    = txtCongViec.Text;
                HopDong.ThoiGianLam = Convert.ToDouble(nudThoiGian.Value); // Thời gian làm bao nhiêu giờ 1 ngày
                HopDong.TrangBi     = txtTrangBiLD.Text;
                HopDong.NgayKy      = dtpNgayKy.Value;                     // Lấy ngày kí hợp đồng là ngày hệ thống

                if (cboLoaiHD.SelectedIndex == 1)
                {
                    DateTime dt = new DateTime(1900, 1, 1);
                    HopDong.NgayKetThuc = dt;
                }
                if (KiemTra && KiemTraDuLieu())
                {
                    clsHopDong_BUS BUSHD = new clsHopDong_BUS();
                    if (BUSHD.CapNhatHopDong(HopDong))
                    {
                        MessageBox.Show(string.Format("Cập nhật hợp mã hợp đồng {0} thành công", HopDong.MaHDLD), "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        dgvHopDongNV.DataSource = BUSHD.LayDanhSachHopDong(NhanVien.MaNV); // Lấy mã nhân viên ở dgvNhanVien
                        clsNhatKy_BUS BUSNK = new clsNhatKy_BUS();
                        BUSNK.ThemNhatKy(Program.NhanVien_Login.TaiKhoan, DateTime.Now, string.Format("Cập nhật hợp đồng {0} của nhân viên {1} {2}", HopDong.MaHDLD, NhanVien.Ho, NhanVien.Ten));
                    }
                    else
                    {
                        MessageBox.Show("Thêm hợp đồng thất bại", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }