protected void Page_Load(object sender, EventArgs e)
        {
            //QlSachDbDataContext db = new QlSachDbDataContext();
            //string s = Session["dn"].ToString();
            //var p = db.DangNhaps.Where(q => q.TenDangNhap == s).Select(q => new { q.Quyen });
            //if (p.Count() != 0 && p.First().Quyen)
            //    path = "~/admin.aspx";
            //else
            //    path = "~/default.aspx";

            //if (!IsPostBack)
            //{

            //    loai all = new loai();
            //    all.maloai = "";
            //    all.tenloai = "Tất cả các loại sách";
            //    var loaisach = db.loais.ToList();
            //    loaisach.Insert(0, all);

            //    GridView1.DataSource = loaisach;
            //    GridView1.DataBind();
            //}
            QlSachDbDataContext db = new QlSachDbDataContext();
            if(db.DangNhaps.Any(p=>p.TenDangNhap==Session["dn"].ToString()&&p.Quyen))
                mainpage="admin.aspx";

        }
        public string GetTinhTrang(string ms)
        {
            QlSachDbDataContext db = new QlSachDbDataContext();
            long sl = db.saches.Single(p => p.masach == ms).soluong ?? 0;
            if (sl <= 0)
            {
                return "<span class=&quot;hethang&quot;>Hết hàng</span>";
            }
            else
                return "<span class=&quot;conhang&quot;>Còn hàng</span>";

        }
 List<sach> GetRandomBooksFromData(int n)
 {
     var list=new List<sach>();
     QlSachDbDataContext db = new QlSachDbDataContext();
     
     for (int i = 0; i < n; i++)
     {
         var k = db.saches.Skip(r.Next(db.saches.Count())).First();
         list.Add(k);
     }
     return list;
 }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {

                QlSachDbDataContext db = new QlSachDbDataContext();
                string tk = Request.QueryString["tk"];
                string ml = Request.QueryString["ml"];
                string tam = Request.QueryString["trang"];
                int trang;
                if (tam == null || tam == "") trang = 1;
                else
                    trang = int.Parse(tam);
                IQueryable<sach> q;
                int st = 0;
                if (string.IsNullOrEmpty(tk))
                {
                    if (string.IsNullOrEmpty(ml))
                    {
                        q = from p in db.saches orderby p.NgayNhap descending select p;
                        DataList1.DataSource = q.Skip(trang * 9 - 9).Take(9);
                    }
                    else
                    {
                        q = from p in db.saches where p.maloai == ml orderby p.NgayNhap descending select p;
                        DataList1.DataSource = q.Skip(trang * 9 - 9).Take(9);
                    }

                    st = q.Count() % 9 == 0 ? q.Count() / 9 : q.Count() / 9 + 1;

                    BuildLpTrang(st, ml, tk, trang);

                    DataList1.DataBind();
                }
                else
                {
                    q = from p in db.saches where p.tensach.Contains(tk) || p.tacgia.Contains(tk) orderby p.NgayNhap descending select p;
                    DataList1.DataSource = q.Skip(trang * 9 - 9).Take(9);


                    st = q.Count() % 9 == 0 ? q.Count() / 9 : q.Count() / 9 + 1;
                    //for (int i = 1; i <= st; i++)
                    //{
                    //    LpTrang.Text = LpTrang.Text + "<a href='Default.aspx?trang=" + i.ToString() + "&tk="
                    //        + tk + "'>" + i.ToString() + " | " + "</a>";
                    //}

                    BuildLpTrang(st, ml, tk, trang);
                    DataList1.DataBind();
                }
            }
        }
        protected void btTim_Click(object sender, EventArgs e)
        {
            QlSachDbDataContext db = new QlSachDbDataContext();

            if (Session["dn"].ToString() == "") Response.Redirect("~/Default.aspx?tk=" + txtTk.Text);
           
            var q = db.DangNhaps.Where(p => p.TenDangNhap == (Session["dn"]).ToString()).First();
            if (!q.Quyen)
                Response.Redirect("~/Default.aspx?tk=" + txtTk.Text);
            else
                Response.Redirect("~/admin.aspx?tk=" + txtTk.Text);
            
        }
        //protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        //{
        //    if (e.Row.RowType != DataControlRowType.Header)
        //    {
        //        if (e.Row.Cells.Count != 0 && e.Row.Cells[0].Controls.Count != 0)
        //        {
        //            HyperLink myLink = (HyperLink)e.Row.Cells[0].Controls[0];

        //            //myLink.NavigateUrl = myLink.NavigateUrl.Insert(0, HttpContext.Current.Request.Url.AbsolutePath);
        //            myLink.NavigateUrl = myLink.NavigateUrl.Insert(0, path);
        //        }
        //    }
        //}

        public void BuildMenu()
        {
            QlSachDbDataContext db = new QlSachDbDataContext();
            Response.Write("<li class=\"dm\"><a href=\""+mainpage+ "\">"+"Tất cả các loại sách</a></li>");
            foreach (var dm in db.danhmucs)
            {

                Response.Write("<li class=\"dm\">"+dm.tendanhmuc+"<ul class=\"ls\">");
                
                
                //Response.Write("<div class=\"accordionButton\">" + dm.tendanhmuc + "</div>");
                //Response.Write("<div class=\"accordionContent\">");
                foreach (var loai in db.loais.Where(p => p.madanhmuc == dm.madanhmuc))
                {
                    //Response.Write("<a href=\"default.aspx?ml=" + loai.maloai + "\">" + loai.tenloai + "</a><br />");
                    Response.Write("<li><a href=\""+mainpage+"?ml=" + loai.maloai + "\">" + loai.tenloai + "</a></li>");
                }
                Response.Write("</ul></li>");

            }
        }
        protected void btLogin_Click(object sender, EventArgs e)
        {

            if (pnlCaptcha.Visible == true && tbCaptcha.Text != QlSach.Class.CaptchaVal.randomStr) return;

            if (tbUser.Text == null || tbPass.Text == null)
            {
                Label1.Text = "Thông tin đăng nhập chưa đầy đủ!";
            }
            else
            {
                QlSachDbDataContext db = new QlSachDbDataContext();
                var p = db.DangNhaps.Where(q => q.TenDangNhap == tbUser.Text && q.MatKhau == Encoding.MaHoa(Encoding.key, tbPass.Text)).Select(q => new { q.TenDangNhap, q.MatKhau, q.Quyen });
                if (p.Count() != 0)
                {
                    Session["lc"] = 0;
                    string s = p.First().TenDangNhap;
                    Label1.Text = s;
                    Session["dn"] = s;
                    if (!p.First().Quyen)
                        Response.Redirect("default.aspx");
                    else
                        Response.Redirect("admin.aspx");

                }
                else
                {
                    Label1.Text = "Thông tin đăng nhập chưa chính xác!";
                    Session["lc"] = lc + 1;
                    if (lc+1 >= 3)
                        pnlCaptcha.Visible = true;
                }

            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            lc = (int)Session["lc"];
            if (lc >= 3)
            {
                pnlCaptcha.Visible = true;
            }
            else pnlCaptcha.Visible = false;

            if (!IsPostBack)
            {
                if ((string)Session["dn"] != "")
                {
                    var db = new QlSachDbDataContext();
                    var q = db.DangNhaps.First(p => p.TenDangNhap == (string)Session["dn"]);
                    tbPass.Visible = false;
                    tbUser.Visible = false;
                    lbID.Visible = false;
                    lbPass.Visible = false;
                    btLogin.Visible = false;
                    btRegister.Visible = false;
                    btSignOut.Visible = true;
                    if (q.Quyen)
                    {
                        hlThongTin.Text = "<span id=\"hl\">Trang Admin</span>";
                        hlThongTin.NavigateUrl = "~/Admin.aspx";
                    }

                    //var page = Page.Master as AdminMasterPage;
                    //if (page != null)
                    //    page.ChangeLoginTitle(q.hoten);
                    //else
                    //{
                    //    var page2 = Page.Master as CustomerMasterPage;
                    //    if (page2 != null)
                    //        page2.ChangeLoginTitle(q.hoten);

                    //}

                    var page = Page.Master;
                    //The is operator does not check if the runtime type of the operand is exactly the given type; rather, it checks to see if the runtime type is compatible with the given type:

                    //class Animal {}
                    //class Tiger : Animal {}
                    //...
                    //object x = new Tiger();
                    //bool b1 = x is Tiger; // true
                    //bool b2 = x is Animal; // true also! Every tiger is an animal.
                    //But checking for type identity with reflection checks for identity, not for compatibility

                    //bool b3 = x.GetType() == typeof(Tiger); // true
                    //bool b4 = x.GetType() == typeof(Animal); // false! even though x is an animal
                    //If that's not what you want, then you probably want IsAssignableFrom:

                    //bool b5 = typeof(Tiger).IsAssignableFrom(x.GetType()); // true
                    //bool b6 = typeof(Animal).IsAssignableFrom(x.GetType()); // true! A variable of type Animal may be assigned a Tiger.
                    //http://stackoverflow.com/questions/10415276/how-to-check-if-variable-is-of-type-of-a-type-thats-stored-within-a-variable

                    if (page is CustomerMasterPage)
                    {
                        var currentPage = page as CustomerMasterPage;
                        currentPage.ChangeLoginTitle(q.hoten);
                    }
                    if (page is AdminMasterPage)
                    {
                        var currentPage = page as AdminMasterPage;
                        currentPage.ChangeLoginTitle(q.hoten);
                    }
                    if (page is AdminMasterPage2)
                    {
                        var currentPage = page as AdminMasterPage2;
                        currentPage.ChangeLoginTitle(q.hoten);
                    }

                    hlThongTin.Visible = true;


                }
                else
                {
                    tbPass.Visible = true;
                    tbUser.Visible = true;
                    lbID.Visible = true;
                    lbPass.Visible = true;
                    btLogin.Visible = true;
                    btRegister.Visible = true;
                    btSignOut.Visible = false;
                    hlThongTin.Visible = false;
                }
            }
        }
 public string GetLoaiSach(string ml)
 {
     QlSachDbDataContext db = new QlSachDbDataContext();
     return db.loais.Single(p => p.maloai == ml).tenloai;
 }
        protected void Page_Load(object sender, EventArgs e)
        {
            QlSachDbDataContext db = new QlSachDbDataContext();
            
            if (Request.QueryString["act"] == "tdtt" && (string)Session["dn"] != "")
            {
                var dnhap = db.DangNhaps.Single(p => p.TenDangNhap == (string)Session["dn"]);
                var a = db.KhachHangs.Where(p => p.TenDangNhap == dnhap.TenDangNhap);
                // Tài khoản chưa đang đăng nhập chưa có mã khách hàng, nghĩa là được tạo bởi admin, không phải tự đăng kí
                if (a.Count() == 0||dnhap.Quyen)
                {
                    Response.Write("<script>alert(\"Tài khoản này không được phép sử dụng chức năng này!\");window.location='default.aspx'</script>");
                    return;
                }

                GridView1.Visible = false;
                lbGioHang.Visible = false;
                lbTT.Visible = false;
                LTongtien.Visible = false;
                tbTenDangNhap.Enabled = false;
                RequireFieldValidator3.Enabled = false;
                Button1.Text = "Thay đổi";
             
                var q = from dn in db.DangNhaps
                        join kh in db.KhachHangs on dn.TenDangNhap equals kh.TenDangNhap
                        where dn.TenDangNhap == (string)Session["dn"]
                        select new
                                   {
                                       kh.hoten,
                                       kh.TenDangNhap,
                                       dn.MatKhau,
                                       kh.diachi,
                                       kh.SoDT,
                                       kh.email
                                   };

                tbTenDangNhap.Text = q.First().TenDangNhap;
                tbDiachi.Text = q.First().diachi;
                tbEmail.Text = q.First().email;
                tbSdt.Text = q.First().SoDT;
                tbHoten.Text = q.First().hoten;
            }
            else
            {
                //if (Session["gh"] == null)
                //    Response.Redirect("default.aspx");
                //else


                Gio gh = new Gio();
                gh = (Gio)Session["gh"];
                if (gh == null)
                {
                    if ((string)Session["dn"] != "") Response.Redirect("default.aspx");

                    lbTT.Visible = false;
                    lbGioHang.Visible = false;
                }
                else
                {
                    lbTT.Visible = true;
                    lbGioHang.Visible = true;
                    GridView1.DataSource = gh.dt;
                    GridView1.DataBind();
                    LTongtien.Text = string.Format("{0:0,0}", gh.TongTien()) + " VNĐ";
                }

            }
        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            QlSachDbDataContext db = new QlSachDbDataContext();
            if ((string)Session["dn"] == "")
            {

                if (!(db.DangNhaps.Where(p => p.TenDangNhap == tbTenDangNhap.Text)).Any())
                {
                    DangNhap dn = new DangNhap();
                    dn.TenDangNhap = tbTenDangNhap.Text;
                    dn.MatKhau = Encoding.MaHoa(Encoding.key, tbMK.Text);
                    dn.Quyen = false;
                    dn.hoten = tbHoten.Text;
                    db.DangNhaps.InsertOnSubmit(dn);
                    db.SubmitChanges();
                }
                else
                {
                    //Type cstype = this.GetType();

                    //// Get a ClientScriptManager reference from the Page class.
                    //ClientScriptManager cs = Page.ClientScript;

                    //// Check to see if the startup script is already registered.
                    //if (!cs.IsStartupScriptRegistered(cstype, "PopupScript"))
                    //{
                    //    String cstext = "alert('Tên đăng nhập này đã tồn tại!');";
                    //    cs.RegisterStartupScript(cstype, "PopupScript", cstext, true);
                    //}
                    Response.Write("<script>alert(\"Tên đăng nhập này đã tồn tại!\")</script>");
                    
                    return;
                }
                long makh;
                if (db.KhachHangs.Count() == 0)
                    makh = 0;
                else
                    makh = db.KhachHangs.Max(p => p.Makh);
                KhachHang kh = new KhachHang();
                kh.Makh = makh + 1;
                kh.hoten = tbHoten.Text;
                kh.SoDT = tbSdt.Text;
                kh.email = tbEmail.Text;
                kh.diachi = tbDiachi.Text;
                kh.TenDangNhap = tbTenDangNhap.Text;
                db.KhachHangs.InsertOnSubmit(kh);
                db.SubmitChanges();

                if (Session["gh"] == null)
                {
                    Response.Write("<script>alert(\"Giỏ hàng trống!\");window.location='default.aspx';</script>");
                    //Response.Redirect("default.aspx");
                    return;
                }

                long mahd = 0;
                if (db.hoadons.Count() == 0)
                    mahd = 0;
                else
                    mahd = db.hoadons.Max(p => p.MaHoaDon);
                hoadon hd = new hoadon();
                hd.MaHoaDon = mahd + 1;
                hd.makh = kh.Makh;
                hd.damua = false;
                hd.NgayMua = DateTime.Now;
                db.hoadons.InsertOnSubmit(hd);
                db.SubmitChanges();
                DataTable dt = new DataTable();
                Gio gh = new Gio();
                gh = (Gio)Session["gh"];
                dt = gh.dt;
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    ChiTietHoaDon cthd = new ChiTietHoaDon();
                    long macthd;
                    if (db.ChiTietHoaDons.Count() == 0)
                        macthd = 0;
                    else
                        macthd = db.ChiTietHoaDons.Max(p => p.MaChiTietHD);
                    cthd.MaChiTietHD = macthd + 1;
                    cthd.MaHoaDon = mahd + 1;
                    cthd.MaSach = dt.Rows[i]["masach"].ToString();
                    cthd.SoLuongMua = int.Parse(dt.Rows[i]["soluong"].ToString());
                    
                    //Trừ số lượng sách mua
                    sach s = db.saches.Single(p => p.masach == cthd.MaSach);
                    s.soluong -= cthd.SoLuongMua;
                    db.ChiTietHoaDons.InsertOnSubmit(cthd);
                    db.SubmitChanges();
                    //Type cstype = this.GetType();

                    //// Get a ClientScriptManager reference from the Page class.
                    //ClientScriptManager cs = Page.ClientScript;

                    //// Check to see if the startup script is already registered.
                    //if (!cs.IsStartupScriptRegistered(cstype, "PopupScript"))
                    //{
                    //    String cstext = "alert('Đặt mua thành công!');";
                    //    cs.RegisterStartupScript(cstype, "PopupScript", cstext, true);
                    //}
                    

                }

                Response.Write("<script>alert(\"Đăng kí thành công!\")</script>");
                Response.Write("<script>window.location='xoagiohang.aspx';</script>");
            }
            else
            {
                string sdn = (string)Session["dn"];
                DangNhap dn = db.DangNhaps.Single(p => p.TenDangNhap == sdn);
                KhachHang kh = db.KhachHangs.Single(p => p.TenDangNhap == sdn);
                dn.MatKhau = Encoding.MaHoa(Encoding.key, tbMK.Text);
                db.SubmitChanges();
                kh.hoten = tbHoten.Text;
                kh.diachi = tbDiachi.Text;
                kh.SoDT = tbSdt.Text;
                kh.email = tbEmail.Text;
                db.SubmitChanges();
               
                Response.Write("<script>alert(\"Thay đổi thông tin thành công!\");window.location ='default.aspx';</script>");
                //Response.Redirect("~/default.aspx");
            }
        }
 protected void Page_Load(object sender, EventArgs e)
 {
     QlSachDbDataContext db=new QlSachDbDataContext();
     GridView1.DataSource = db.loais;
     GridView1.DataBind();
 }