Beispiel #1
0
        [HttpPost] //指定只有使用POST方法才可進入
        public ActionResult Create(Models.Product postback)
        {
            /*判斷如果Product資料驗證通過,則設定成功訊息至TempData,並且轉導致Index頁面。 */

            //如果資料驗証成功
            if (this.ModelState.IsValid)
            {
                using (Models.CartsEntities1 db = new Models.CartsEntities1())
                {
                    //將回傳資料 postback加入至products
                    db.Products.Add(postback);

                    //儲存異動資料
                    db.SaveChanges();

                    //設定成功訊息
                    TempData["ResultMessage"] = String.Format($"商品[{postback.Name}]成功建立");

                    //轉導product/Index頁面
                    return(RedirectToAction("Index"));
                }
            }

            //失敗訊息
            ViewBag.ResultMessage = "資料有誤,請檢查";

            //停留在Create頁面
            return(View(postback));
        }
Beispiel #2
0
        public ActionResult SearchByUserName(string userName)
        {
            // 儲存查詢出來的 UserId
            string SearchUserId = null;

            using (Models.UserEntities db = new Models.UserEntities())
            {
                SearchUserId = db.AspNetUsers
                               .Where(w => w.UserName == userName)
                               .Select(s => s.Id).FirstOrDefault();
            }

            //如果有存在UserId
            if (!string.IsNullOrEmpty(SearchUserId))
            {
                //找出該UserId的所有訂單
                using (Models.CartsEntities1 db = new Models.CartsEntities1())
                {
                    var result = db.Orders
                                 .Where(w => w.UserId == SearchUserId)
                                 .Select(s => s).ToList();

                    //回傳結果至Index頁面
                    return(View("Index", result));
                }
            }

            //回傳空結果至Index View
            return(View("Index", new List <Models.Order>()));
        }
Beispiel #3
0
        //刪除是很重要的操作,如果使用者直接在網址列輸入網址就可以刪除的話,其實是很危險的一件事情,所以我們選擇使用Post來完成。
        public ActionResult Delete(int id)
        {
            using (Models.CartsEntities1 db = new Models.CartsEntities1())
            {
                //抓取Product.Id等於輸入id的資料
                var result = (from s in db.Products where s.Id == id select s).FirstOrDefault();

                //判斷此id是否有資料
                if (result != default(Models.Product))
                {
                    db.Products.Remove(result);

                    //儲存所有變更
                    db.SaveChanges();

                    //設定成功訊息並導回index頁面
                    TempData["ResultMessage"] = String.Format($"商品[{result.Name}]成功刪除");
                    return(RedirectToAction("Index"));
                }

                else
                {//如果沒有資料則顯示錯誤訊息並導回Index頁面
                    TempData["resultMessage"] = "指定資料不存在,無法刪除,請重新操作";
                    return(RedirectToAction("Index"));
                }
            }
        }
Beispiel #4
0
 // GET: ManageOrder
 public ActionResult Index()
 {
     using (Models.CartsEntities1 db = new Models.CartsEntities1())
     {
         //取得Order中所有資料
         var result = db.Orders.Select(s => s).ToList();
         return(View(result));
     }
 }
 public ActionResult Index()
 {
     //修改首頁為正常的購物網站首頁
     //將HemeController的Index()改為抓取Product表所有資料
     using (Models.CartsEntities1 db = new Models.CartsEntities1())
     {
         var result = db.Products.ToList();
         return(View(result));
     }
 }
Beispiel #6
0
        /*Day27 會員我的訂單功能
         * 在OrderController中新增兩個方法(Action),
         * 分別為MyOrder()與MyOrderDetail(),
         * 其中MyOrder()功能為取得會員目前所有訂單,
         * MyOrderDetail則是取得某筆訂單內的詳細商品資訊
         */

        public ActionResult MyOrder()
        {
            // 取得目前登入使用者 Id
            var UserId = HttpContext.User.Identity.GetUserId();

            using (Models.CartsEntities1 db = new Models.CartsEntities1())
            {
                var result = db.Orders
                             .Where(w => w.UserId == UserId)
                             .Select(s => s).ToList();

                return(View(result));
            }
        }
Beispiel #7
0
        public ActionResult MyOrderDetail(int id)
        {
            using (Models.CartsEntities1 db = new Models.CartsEntities1())
            {
                var result = (from s in db.OrderDetails
                              where s.OrderId == id
                              select s).ToList();

                if (result.Count == 0)
                {
                    return(RedirectToAction("Index"));
                }
                else
                {
                    return(View(result));
                }
            }
        }
        //Day29_1 新增Details(),主要為顯示某個編號之商品詳細資訊
        public ActionResult Details(int?id)
        {
            using (Models.CartsEntities1 db = new Models.CartsEntities1())
            {
                var result = (from s in db.Products
                              where s.Id == id
                              select s).FirstOrDefault();

                if (result == default(Models.Product))
                {
                    return(RedirectToAction("Index"));
                }
                else
                {
                    return(View(result));
                }
            }
        }
Beispiel #9
0
        // GET: Product
        public ActionResult Index()
        {
            //宣告回傳產品列表result
            List <Models.Product> result = new List <Models.Product>();

            //接收轉導的成功訊息(將轉導的成功訊息設定給ViewBag變數)
            ViewBag.ResultMessage = TempData["ResultMessage"];

            //使用CartsEntities類別,名稱為db
            using (Models.CartsEntities1 db = new Models.CartsEntities1())
            {
                //使用LinQ語法抓取目前Products資料庫中所有資料
                result = (from s in db.Products select s).ToList();
            }
            //
            //將 result 傳送給檢視
            return(View(result));
        }
Beispiel #10
0
        public ActionResult Details(int id)
        {
            using (Models.CartsEntities1 db = new Models.CartsEntities1())
            {
                //取得 OrderId 為傳入 id 的所有商品列表
                var result = db.OrderDetails
                             .Where(w => w.OrderId == id)
                             .Select(s => s).ToList();

                if (result.Any())
                {
                    return(View(result));
                }
                else
                {
                    //如果商品數目為零,代表該訂單異常 (無商品)。導回商品列表。
                    return(RedirectToAction("Index"));
                }
            }
        }
Beispiel #11
0
        //編輯商品頁面
        //新增Edit()方法,輸入為id,此Action是準備接收剛剛步驟1Index頁面新增的[Edit]超連結之請求(Request)。
        public ActionResult Edit(int id)
        {
            using (Models.CartsEntities1 db = new Models.CartsEntities1())
            {
                //抓取product.Id等於輸入id的資料
                var result = (from s in db.Products where s.Id == id select s).FirstOrDefault();

                //判斷此id是否有資料
                if (result != default(Models.Product))
                {
                    //如果有,回傳編輯商品頁面
                    return(View(result));
                }
                else
                {
                    //如果沒有資料,則顯示資料錯誤訊息,並導回Index頁面
                    TempData["resultMessage"] = "資料有誤,請重新操作";
                    return(RedirectToAction("Index"));
                }
            }
        }
Beispiel #12
0
        //Day25
        //OrderController 的Index() 定義如何將資料存入訂單資料庫(Order與OrderDetail資料表),
        //其中順序為先寫入Order後,
        //再寫入OrderDetail。
        public ActionResult Index(Models.OrderModel.Ship model)
        {
            if (this.ModelState.IsValid)
            {
                //取得目前購物車
                var CurrentCart = Models.Carts.Operation.GetCurrentCart();

                //取得目前登入使用者 Id
                var UserId = HttpContext.User.Identity.GetUserId();

                using (Models.CartsEntities1 db = new Models.CartsEntities1())
                {
                    //建立Order物件
                    var order = new Models.Order()
                    {
                        UserId          = UserId,
                        ReceiverName    = model.ReceiverName,
                        ReceiverPhone   = model.ReceiverPhone,
                        ReceiverAddress = model.ReceiverAddress
                    };


                    // 加入 Order 資料表後,儲存變更
                    db.Orders.Add(order);
                    db.SaveChanges();


                    //取得購物車中的 OrderDeatil 物件
                    var orderDetails = CurrentCart.ToOrderDetailList(order.Id);

                    //將 OrderDetails 物件,加入OrderDetail資枓表後,儲存變更。
                    db.OrderDetails.AddRange(orderDetails);
                    db.SaveChanges();
                }
                return(Content("訂購成功"));
            }

            return(View());
        }
        [Authorize] // 登入會員才能留言
        public ActionResult AddComment(int id, string content)
        {
            // 取得目前登入使用者 Id
            var UserId = HttpContext.User.Identity.GetUserId();

            var CurrentDateTime = DateTime.Now;

            var Comment = new Models.ProductComment()
            {
                ProductId  = id,
                Content    = content,
                UserId     = UserId,
                CreateDate = CurrentDateTime
            };

            using (Models.CartsEntities1 db = new Models.CartsEntities1())
            {
                db.ProductComments.Add(Comment);
                db.SaveChanges();
            }
            return(RedirectToAction("Details", new { id = id }));
        }
Beispiel #14
0
        /*由於原本Index頁面的Delete按鈕是使用Get操作,此將Delete()方法改為Post,所以伺服器找不到相對應的方法而產生錯誤。
         * 故須到Index頁面,
         * 將原本使用ActionLink的刪除按鈕改為使用BeginForm*/
        public ActionResult Edit(Models.Product postback)
        {
            //判斷使用者輸入資料是否正確
            if (this.ModelState.IsValid)
            {
                using (Models.CartsEntities1 db = new Models.CartsEntities1())
                {
                    //抓取Product.Id等於回傳postback.ID的資枓
                    var result = (from s in db.Products where s.Id == postback.Id select s).FirstOrDefault();

                    //儲存使用者變更資料
                    result.Name            = postback.Name;
                    result.Price           = postback.Price;
                    result.PublishDate     = postback.PublishDate;
                    result.Quantity        = postback.Quantity;
                    result.Status          = postback.Status;
                    result.CategoryId      = postback.CategoryId;
                    result.DefaultImageId  = postback.DefaultImageId;
                    result.Description     = postback.Description;
                    result.DefaultImageURL = postback.DefaultImageURL;//Edit() Action 內新增儲存DefaultImageURL的程式碼

                    //儲存所有變更
                    db.SaveChanges();

                    //設定成功訊息並導回index頁面
                    TempData["ResultMessage"] = String.Format($"商品[{postback.Name}]成功編輯");
                    return(RedirectToAction("Index"));
                }
            }

            //如果資料不正確則導向自己(Edit頁面)
            else
            {
                return(View(postback));
            }
        }