Exemplo n.º 1
0
        public ActionResult AddToMyCart(string spcID, int quantity = 1)
        {   //TODO:加入 請訪客登入
            //把memberID加入MBRID

            string mbrID = (string)Session["memberID"]; //利用SESSION存取

            if (mbrID is null)
            {
                string js = "alert('請先登入會員才可加入購物車')";
                Response.StatusCode = (int)HttpStatusCode.BadRequest;
                return(JavaScript(js));
            }


            Cart_OrderDetail cod;
            //檢查是否已經加入購物車
            var getCartItem = db.Cart_OrderDetail.Where(m => m.mbrID == mbrID)
                              .Where(m => m.spcID == spcID)
                              .Where(m => m.odrID == null);
            int inCartCount = getCartItem.Count();

            if (inCartCount > 0)
            {
                cod          = getCartItem.FirstOrDefault();
                cod.Quantity = quantity;
            }
            else
            {
                cod = new Cart_OrderDetail()
                {
                    cartID     = db.Database.SqlQuery <string>("Select dbo.GetCartID()").FirstOrDefault(),
                    mbrID      = mbrID,
                    Quantity   = quantity,
                    spcID      = spcID,
                    usedPoints = 0,
                    Discount   = 0,
                    pdtPrice   = 0,
                    shpID      = "shp0000001" //預設運送方式
                };
                db.Cart_OrderDetail.Add(cod);
            }

            try
            {
                db.SaveChanges();
                return(JavaScript("alert('成功新增至購物車')"));
            }
            catch (Exception e)
            {
                return(JavaScript($"alert('失敗了,請再嘗試一次')"));
            }
        }
Exemplo n.º 2
0
        public ActionResult receiveOrder(string[] cartID, string[] shipSelect, string[] quantity, Order order) //提交訂單
        {
            var    cod                = db.Cart_OrderDetail;
            string memberID           = Session["memberID"] as string;
            List <Cart_OrderDetail> m = (from p in cod
                                         where p.mbrID == memberID
                                         where p.odrID == null
                                         orderby p.Specification.Product.selID
                                         select p).ToList();
            List <string> sellerIDList = m.Where(sItem => cartID.Contains(sItem.cartID)).Select(s => s.Specification.Product.selID).Distinct().ToList();

            //if (ModelState.IsValid != true)
            //{
            //    return View("myCart");
            //}
            using (var transaction = db.Database.BeginTransaction())
            {
                //初始化訂單
                order.traceNumber = "";                //物流單號 為not NULL 欄位 在此隨便填
                order.pmtID       = "pmt0000001";      //付款方式
                order.odrStatusID = "ods0000001";      //訂單狀態
                order.odrDate     = DateTime.Now;      //訂單成立時間
                order.shpPrice    = 100;
                order.traceNumber = "123456";
                order.recPhone    = "0911-111-111";

                foreach (var sellerID in sellerIDList)
                {
                    order.selID = sellerID;
                    order.odrID = db.Database.SqlQuery <string>("Select dbo.GetOrderID()").FirstOrDefault();

                    try
                    {
                        db.Order.Add(order);
                        db.SaveChanges();
                        db.Entry(order).State = EntityState.Detached;
                    }
                    catch (Exception d)
                    {
                        transaction.Rollback();
                        return(JavaScript($"alert('失敗了,請再嘗試一次')"));
                    }
                }
                //寫入COD資料
                string orderID = "";
                for (int i = 0; i < cartID.Length; i++) //依據傳入的cartID[]條件 加入cart
                {
                    if (cartID[i] != "false")
                    {
                        Cart_OrderDetail currentCart = m[i];
                        orderID = currentCart.Specification.Product.selID;
                        string selectedShipMethod = shipSelect[i];
                        string SelID = currentCart.Specification.Product.selID;
                        currentCart.odrID    = db.Order.Where(od => od.selID == SelID).ToList().LastOrDefault().odrID;
                        currentCart.shpID    = db.Shipper.Where(t => t.shpMethod == selectedShipMethod).FirstOrDefault().shpID;
                        currentCart.pdtPrice = currentCart.Specification.Price;    //取得商品時價
                        currentCart.Discount = currentCart.Specification.Discount; //取得商品當時打折

                        //庫存減去商品下單數
                        if ((currentCart.Specification.Stock - currentCart.Quantity) >= 0)
                        {
                            currentCart.Specification.Stock -= currentCart.Quantity;
                        }
                        else
                        {
                            return(JavaScript("alert('下單量大於庫存囉')"));
                        }
                    }
                }

                try
                {
                    db.SaveChanges();
                }
                catch (DbUpdateException e)
                {
                    transaction.Rollback();
                    return(JavaScript($"alert({e.Entries})"));
                }


                ///更新ORDER 運費
                var    odr = db.Order.Where(o => o.shpPrice == null).ToList();
                string shpID;
                foreach (var oItem in odr)
                {
                    shpID          = db.Cart_OrderDetail.Where(c => c.odrID == oItem.odrID).FirstOrDefault().shpID;
                    oItem.shpPrice = db.ShipperDetail.Where(p => p.shpID == shpID).FirstOrDefault().defaultShipping;
                }
                try
                {
                    db.SaveChanges();
                    transaction.Commit();
                    return(RedirectToAction("MyCart"));
                }
                catch (DbUpdateException e)
                {
                    transaction.Rollback();
                    return(JavaScript($"alert('失敗了,請再嘗試一次')"));
                }
            }
        }