//#region Đặt hàng
        ////Xây dựng chức năng đặt hàng
        //[HttpPost]
        //public ActionResult DatHang()
        //{
        //    //Kiểm tra đăng đăng nhập
        //    if (Session["TaiKhoan"] == null || Session["TaiKhoan"].ToString() == "")
        //    {
        //        return RedirectToAction("DangNhap", "NGuoiDung");
        //    }
        //    //Kiểm tra giỏ hàng
        //    if (Session["GioHang"] == null)
        //    {
        //        RedirectToAction("Index", "Home");
        //    }
        //    //Thêm đơn hàng
        //    DonHang ddh = new DonHang();
        //    KhachHang kh = (KhachHang)Session["TaiKhoan"];
        //    List<GioHang> gh = LayGioHang();
        //    ddh.MaKH = kh.MaKH;
        //    ddh.NgayDat = DateTime.Now;
        //    db.DonHangs.Add(ddh);
        //    db.SaveChanges();
        //    //Thêm chi tiết đơn hàng
        //    foreach (var item in gh)
        //    {
        //        ChiTietDonHang ctDH = new ChiTietDonHang();
        //        ctDH.MaDonHang = ddh.MaDonHang;
        //        ctDH.MaSach = item.iMaSach;
        //        ctDH.SoLuong = item.iSoLuong;
        //        ctDH.DonGia = (decimal)item.dDonGia;
        //        db.ChiTietDonHangs.Add(ctDH);
        //    }
        //    db.SaveChanges();
        //    return RedirectToAction("Index", "Home");
        //}
        //#endregion

        // GET: GioHang

        // ajax
        public GioHangStore getGioHangStore(string storeID)
        {
            List <GioHangStore> listGH = Session["GioHangStore"] as List <GioHangStore>;

            if (listGH == null)
            {
                listGH = new List <GioHangStore>();
                GioHangStore   giohang = new GioHangStore();
                List <GioHang> order   = new List <GioHang>();
                giohang.StoreID = storeID;
                giohang.Orders  = order;
                listGH.Add(giohang);
                Session["GioHangStore"] = listGH;
                return(giohang);
            }
            else if (listGH.Find(n => n.StoreID == storeID) == null)
            {
                GioHangStore   giohang = new GioHangStore();
                List <GioHang> order   = new List <GioHang>();
                giohang.StoreID = storeID;
                giohang.Orders  = order;
                listGH.Add(giohang);
                Session["GioHangStore"] = listGH;
                return(giohang);
            }
            GioHangStore giohangStore = listGH.Find(n => n.StoreID == storeID);

            return(giohangStore);
        }
 public JsonResult getGioHang(string storeID)
 {
     if (Session["TaiKhoan"] != null)
     {
         GioHangStore giohangStore = getGioHangStore(storeID);
         return(Json(giohangStore.Orders, JsonRequestBehavior.AllowGet));
     }
     return(Json(-1, JsonRequestBehavior.AllowGet));
 }
        public JsonResult AddFood(FoodAddDto foodadd)
        {
            var  fdID = Guid.Parse(foodadd.FoodID);
            Food food = db.Foods.SingleOrDefault(n => n.FoodID == fdID);

            if (food == null)
            {
                return(Json(null));
            }
            //Lấy ra session giỏ hàng
            GioHangStore   gioHangStore = getGioHangStore(food.StoreID + "");
            List <GioHang> lstGioHang   = new List <GioHang>();

            if (gioHangStore.Orders != null)
            {
                lstGioHang = gioHangStore.Orders;
            }
            //Kiểm tra sách này đã tồn tại trong session[giohang] chưa
            string   sizeName;
            string   typeName;
            FoodSize size    = db.FoodSizes.Where(n => n.FoodSizeID == foodadd.FoodSizeID).SingleOrDefault();
            FoodType type    = db.FoodTypes.Where(n => n.FoodTypeID == foodadd.FoodTypeID).SingleOrDefault();
            GioHang  sanpham = lstGioHang.Find(n => n.FoodID.Equals(foodadd.FoodID));

            sizeName = (size == null) ? "" : size.SizeName;
            typeName = (type == null) ? "" : type.TypeName;
            if (sanpham == null || !sanpham.FoodSize.Equals(sizeName) || !sanpham.FoodType.Equals(typeName))
            {
                sanpham = new GioHang(foodadd.FoodID, foodadd.FoodSizeID, foodadd.FoodTypeID, foodadd.SoLuong);
                //Add sản phẩm mới thêm vào list
                lstGioHang.Add(sanpham);
                gioHangStore.Orders = lstGioHang;
                return(Json(lstGioHang));
            }
            else
            {
                sanpham.SoLuong += foodadd.SoLuong;
                return(Json(lstGioHang));
            }
        }
        public JsonResult DatHang(DatHangDto datHangDto)
        {
            if (Session["TaiKhoan"] != null)
            {
                try
                {
                    Customer       cus          = (Customer)Session["TaiKhoan"];
                    var            stID         = Guid.Parse(datHangDto.StoreID);
                    Store          store        = db.Stores.Where(n => n.StoreID == stID).SingleOrDefault();
                    GioHangStore   gioHangStore = getGioHangStore(stID + "");
                    List <GioHang> lstGioHang   = new List <GioHang>();
                    if (store != null && gioHangStore.Orders != null)
                    {
                        lstGioHang = gioHangStore.Orders;
                        var tongCong = 0;
                        lstGioHang.ForEach(n => tongCong += (int)n.ThanhTien);
                        var totalPrice    = tongCong;
                        var serviceChange = 0;
                        if (tongCong < store.ConditionShip)
                        {
                            totalPrice   += (int)store.ServiceCharge;
                            serviceChange = (int)store.ServiceCharge;
                        }
                        var sale = 0;
                        if (datHangDto.StoreSaleID != 0)
                        {
                            StoreSale stSale = db.StoreSales.Where(n => n.StoreSaleID == datHangDto.StoreSaleID && n.StoreID == store.StoreID).SingleOrDefault();
                            if (stSale != null)
                            {
                                sale       = totalPrice * (int)stSale.Sale / 100;
                                totalPrice = totalPrice - sale;
                            }
                        }
                        var shippingFee = 0;
                        if (datHangDto.Distance > 0)
                        {
                            shippingFee = (int)(datHangDto.Distance * store.ShippingFee);
                        }
                        lstGioHang = gioHangStore.Orders;
                        Invoice iv = new Invoice()
                        {
                            InvoiceID       = Guid.NewGuid(),
                            OrderDate       = DateTime.Now,
                            DeliveryDate    = DateTime.Parse(datHangDto.DateDelivery + " " + datHangDto.TimeDelivery),
                            AddressDelivery = datHangDto.CustomerAddress,
                            CustomerID      = cus.CustomerID,
                            CustomerName    = datHangDto.CustomerName,
                            CustomerPhone   = datHangDto.CustomerPhone,
                            StoreID         = stID,
                            ServiceChange   = serviceChange,
                            Sale            = sale,
                            ShippingFee     = shippingFee,
                            TotalPrice      = totalPrice,
                            Status          = 0
                        };
                        if (ModelState.IsValid)
                        {
                            //Thực hiện cập nhận trong model
                            db.Entry(iv).State = System.Data.Entity.EntityState.Added;
                            db.SaveChanges();
                        }

                        foreach (var gh in lstGioHang)
                        {
                            var           foodID = Guid.Parse(gh.FoodID);
                            InvoiceDetail ivDT   = new InvoiceDetail()
                            {
                                InvoiceID  = iv.InvoiceID,
                                FoodID     = foodID,
                                Size       = gh.FoodSize,
                                PriceSize  = (decimal)gh.PriceSize,
                                Type       = gh.FoodType,
                                PriceType  = (Decimal)gh.PriceType,
                                NumberFood = gh.SoLuong,
                            };
                            if (ModelState.IsValid)
                            {
                                //Thực hiện cập nhận trong model
                                db.Entry(ivDT).State = System.Data.Entity.EntityState.Added;
                                db.SaveChanges();
                            }
                        }
                        return(Json(true));
                    }
                }
                catch
                {
                    return(Json(false));
                }
            }
            return(Json(false));
        }