/// <summary>
        /// Lấy ds chi tiết đơn đặt hàng theo mã ddh
        /// </summary>
        /// <param name="maddh">mã đơn đặt hàng</param>
        /// <returns></returns>
        public static List<ChiTietDonDatHang> LayDSChiTietDDHTheoMaDDH(int maddh)
        {
            List<ChiTietDonDatHang> lstChiTietDDH = new List<ChiTietDonDatHang>();

            try
            {
                List<SqlParameter> lstParams = new List<SqlParameter>();
                lstParams.Add(new SqlParameter("@maddh", maddh));
                DataTable dt = new DataTable();
                dt = SqlDataAccessHelper.ExecuteQuery("spLayDSChiTietDDHTheoMaDDH", lstParams);

                foreach (DataRow dtRow in dt.Rows)
                {
                    ChiTietDonDatHang chiTietDDH = new ChiTietDonDatHang();
                    chiTietDDH.MaDDH = int.Parse(dtRow["MaDDH"].ToString());
                    chiTietDDH.MaTangPham = int.Parse(dtRow["MaTangPham"].ToString());
                    chiTietDDH.TenTangPham = BUS.TangPham.LayTangPhamTheoMa(chiTietDDH.MaTangPham).TenTangPham;
                    chiTietDDH.SoLuong = int.Parse(dtRow["SoLuong"].ToString());

                    lstChiTietDDH.Add(chiTietDDH);
                }

            }
            catch (Exception e)
            {
                lstChiTietDDH = new List<ChiTietDonDatHang>();
                throw e;
            }
            return lstChiTietDDH;
        }
        /// <summary>
        /// Thêm chi tiết đơn đặt hàng
        /// </summary>
        /// <param name="intDiemThuong"></param>
        /// <returns></returns>
        public static int ThemChiTietDonDatHang(ChiTietDonDatHang ctDDH,int intDiemThuong)
        {
            int res = 0;
            try
            {
                // add tham số
                List<SqlParameter> lstParam = new List<SqlParameter>();
                lstParam.Add(new SqlParameter("@maddh", ctDDH.MaDDH));
                lstParam.Add(new SqlParameter("@matangpham", ctDDH.MaTangPham));
                lstParam.Add(new SqlParameter("@soluong", ctDDH.SoLuong));
                lstParam.Add(new SqlParameter("@diemthuong", intDiemThuong));

                res = SqlDataAccessHelper.ExecuteNoneQuery("spThemChiTietDonDatHang", lstParam);

            }
            catch (Exception e)
            {
                res = 0;
                throw e;
            }
            return res;
        }
        protected void imgButtonThanhToan_Click(object sender, ImageClickEventArgs e)
        {
            // kiểm tra tặng phẩm
            lblLoiChonTP.Text = "";
            List<ChiTietDonDatHang> lstChiTietDDH = new List<ChiTietDonDatHang>();
            int tongDiemThuongYC = 0;
            int tongDiemThuong = int.Parse(lblTongDiemThuong.Text);
            for (int i = 0; i < dlDanhSachTangPham.Items.Count; i++)
            {
                TextBox txtSoLuongTP = dlDanhSachTangPham.Items[i].FindControl("txtSoLuongTP") as TextBox;
                int soluongTP = 0;
                if (!int.TryParse(txtSoLuongTP.Text, out soluongTP))
                {
                    lblLoiChonTP.Text = "Số lượng tặng phẩm phải là số.";
                    txtSoLuongMuaSP.Focus();
                    return;
                }
                if (soluongTP == 0)
                {
                    continue;
                }

                HiddenField hidField = dlDanhSachTangPham.Items[i].FindControl("hidMaTangPham") as HiddenField;
                TangPham tangPham = new TangPham();
                tangPham = TangPham.LayTangPhamTheoMa(int.Parse(hidField.Value));

                // kiểm tra số lượng tối đa
                if (soluongTP > tangPham.SoLuongToiDa)
                {
                    lblLoiChonTP.Text = "Số lượng tặng phẩm " + tangPham.TenTangPham + " phải nhỏ hơn hoặc bằng số lượng tối đa.";
                    txtSoLuongTP.Focus();
                    return;
                }
                // kiểm tra số lượng còn lại
                if (soluongTP > tangPham.SoLuongConLai)
                {
                    lblLoiChonTP.Text = "Số lượng tặng phẩm " + tangPham.TenTangPham + " phải nhỏ hơn hoặc bằng số lượng tồn.";
                    txtSoLuongTP.Focus();
                    return;
                }

                ChiTietDonDatHang ctDDH = new ChiTietDonDatHang();
                ctDDH.MaTangPham = tangPham.MaTangPham;
                ctDDH.SoLuong = soluongTP;

                tongDiemThuongYC += tangPham.DiemThuongYC * ctDDH.SoLuong;
                // kiểm tra tổng điểm yêu cầu so với điểm thưởng người mua có
                if (tongDiemThuongYC > tongDiemThuong)
                {
                    lblLoiChonTP.Text = "Số điểm thưởng không đủ để chọn.";
                    txtSoLuongTP.Focus();
                    return;
                }

                lstChiTietDDH.Add(ctDDH);
            }

            // insert đơn đặt hàng
            DonDatHang donDatHang = new DonDatHang();
            donDatHang.NgayDat = DateTime.Now;
            donDatHang.SoLuongDat = int.Parse(txtSoLuongMuaSP.Text);
            donDatHang.TrangThai = 1;
            donDatHang.MaKhachHang = (Int32)Session["Id"];
            donDatHang.MaSanPham = g_SanPham.MaSanPham;
            donDatHang.MaDaiLy = int.Parse(dropListDaiLy.SelectedItem.Value);
            donDatHang.ThanhTien = donDatHang.SoLuongDat * g_SanPham.DonGia;
            donDatHang.NgayNhanHang = g_SanPham.ThoiGianBD_NhanHang;
            if (DonDatHang.ThemDonDatHang(donDatHang) > 0)
            {
                panelDatHang.Visible = false;
                string mess = String.Empty;
                // insert chi tiết tặng phẩm
                foreach (ChiTietDonDatHang ctddh in lstChiTietDDH)
                {
                    ctddh.MaDDH = donDatHang.MaDDH;
                    if (ChiTietDonDatHang.ThemChiTietDonDatHang(ctddh, tongDiemThuong) == 0)
                    {
                        mess += TangPham.LayTangPhamTheoMa(ctddh.MaTangPham).TenTangPham + " - ";
                        continue;
                    }
                }
                //kiểm tra xem thêm chi tiết tặng phẩm có bị lỗi hay hông
                if (mess.Length > 0)
                {
                    pnlKetQuaDatHang.Visible = true;
                    lblKetQuaDatHang.Text = "Không thể chọn các tặng phẩm " + mess + " , bạn có thể cập nhật tặng phẩm.";

                }
                else
                {
                    pnlKetQuaDatHang.Visible = true;
                    lblKetQuaDatHang.Text = "Đơn hàng của bạn đã thêm thành công. <br> Ngày nhận sản phẩm của bạn là từ ngày " +
                                    String.Format("{0:D}",g_SanPham.ThoiGianBD_NhanHang) + " đến ngày " + String.Format("{0:D}", g_SanPham.ThoiGianKT_NhanHang);

                }
            }
            else
            {
                pnlKetQuaDatHang.Visible = true;
                lblKetQuaDatHang.Text = "Đơn đặt hàng của bạn bị lỗi, bạn hãy thử lại.";
            }
        }