public ActionResult UpdateState(int orderId, int state)
        {
            if (!User.IsInRole("Admin"))
            {
                return(Json(
                           new ResultWeb {
                    Type = ResultWeb.ResultType.ACCESS_VIOLENCE
                }
                           , JsonRequestBehavior.AllowGet));
            }

            ResultWeb result = new ResultWeb();

            Order order = db.Orders.Find(orderId);

            if (order == null)
            {
                result.Type = ResultWeb.ResultType.NOT_FOUND;
                return(Json(result, JsonRequestBehavior.AllowGet));
            }

            // need: check authorize

            order.Status          = (OrderStatus)state;
            db.Entry(order).State = EntityState.Modified;
            db.SaveChanges();

            result.Type = ResultWeb.ResultType.OK_UPDATE;
            return(Json(result, JsonRequestBehavior.AllowGet));
        }
Ejemplo n.º 2
0
        public ActionResult DeletePublisher(int?publisherId)
        {
            ResultWeb result = new ResultWeb();

            if (ModelState.IsValid)
            {
                Publisher publisher = db.Publishers.Find(publisherId);

                if (publisher == null)
                {
                    result.Type = ResultWeb.ResultType.FIELD_INVALID;
                    return(Json(result, JsonRequestBehavior.AllowGet));
                }

                db.Publishers.Remove(publisher);
                db.SaveChanges();

                result.Type = ResultWeb.ResultType.OK_DELETE;
            }
            else
            {
                result.Type = ResultWeb.ResultType.FIELD_INVALID;
            }

            return(Json(result, JsonRequestBehavior.AllowGet));
        }
        public ActionResult AddLine(int orderId, int proId, int count)
        {
            ResultWeb result  = new ResultWeb();
            Product   product = db.Products.Find(proId);

            if (product == null)
            {
                result.Type = ResultWeb.ResultType.FIELD_INVALID;
                return(Json(result, JsonRequestBehavior.AllowGet));
            }

            var details = db.OrderDetails.Where(od => od.OrderId == orderId);

            OrderDetail line = details.Where(od => od.ProductId == proId).FirstOrDefault();

            if (line == null)
            {
                line = new OrderDetail
                {
                    OrderId   = orderId,
                    ProductId = proId
                };

                if (count > product.InStock)
                {
                    line.Quantity = product.InStock;
                    result.Type   = ResultWeb.ResultType.OUT_OF_STOCK;
                }
                else
                {
                    line.Quantity = count;
                    result.Type   = ResultWeb.ResultType.OK_ADD;
                }
                line.TotalAmount = product.Price * line.Quantity;

                db.OrderDetails.Add(line);
                db.SaveChanges();
            }
            else
            {
                line.Quantity += count;
                if (line.Quantity > product.InStock)
                {
                    line.Quantity = product.InStock;
                    result.Type   = ResultWeb.ResultType.OUT_OF_STOCK;
                }
                else
                {
                    result.Type = ResultWeb.ResultType.OK_ADD;
                }

                line.TotalAmount     = product.Price * line.Quantity;
                db.Entry(line).State = EntityState.Modified;
                db.SaveChanges();
            }

            RecalculateOrderCost(orderId);

            return(Json(result, JsonRequestBehavior.AllowGet));
        }
        public ActionResult DeleteOrderDetail(int id)
        {
            ResultWeb result = new ResultWeb();

            if (ModelState.IsValid)
            {
                var detail = db.OrderDetails.Find(id);

                if (detail == null)
                {
                    result.Type = ResultWeb.ResultType.FIELD_INVALID;
                    return(Json(result, JsonRequestBehavior.AllowGet));
                }
                int orderId = detail.OrderId;

                db.OrderDetails.Remove(detail);
                db.SaveChanges();

                RecalculateOrderCost(orderId);

                result.Type = ResultWeb.ResultType.OK_DELETE;
            }
            else
            {
                result.Type = ResultWeb.ResultType.FIELD_INVALID;
            }

            return(Json(result, JsonRequestBehavior.AllowGet));
        }
Ejemplo n.º 5
0
        public ActionResult DeleteProduct(int id)
        {
            ResultWeb result = new ResultWeb();
            Order     cart   = CheckOrderId();

            Product yourProduct = db.Products.Find(id);

            if (yourProduct == null)
            {
                //result.Type = ResultWeb.ResultType.NOT_FOUND;
                return(Json(new
                {
                    success = false
                    ,
                    text = "Không tìm thấy sản phẩm"
                }, JsonRequestBehavior.AllowGet));
            }

            var details = cart.OrderDetails;

            if (details == null)
            {
                return(Json(new
                {
                    success = false
                    ,
                    text = "Không tìm thấy chi tiết giỏ hàng"
                }, JsonRequestBehavior.AllowGet));
            }

            OrderDetail yourDetail = details.Where(od => od.ProductId == id).FirstOrDefault();

            if (yourDetail != null)
            {
                db.OrderDetails.Remove(yourDetail);
                db.SaveChanges();
                RecalculateOrderCost(cart);

                //result.Type = ResultWeb.ResultType.OK_DELETE;
                return(Json(new
                {
                    success = true
                    ,
                    text = "Xoá thành công"
                }, JsonRequestBehavior.AllowGet));
            }
            else
            {
                //result.Type = ResultWeb.ResultType.FIELD_INVALID;
                return(Json(new
                {
                    success = false
                    ,
                    text = "Không tìm thấy chi tiết giỏ hàng"
                }, JsonRequestBehavior.AllowGet));
            }
        }
Ejemplo n.º 6
0
        public ActionResult UpdateLine(int detailId, int proId, int count)
        {
            ResultWeb result  = new ResultWeb();
            Product   product = db.Products.Find(proId);

            if (product == null)
            {
                result.Type = ResultWeb.ResultType.FIELD_INVALID;
                return(Json(result, JsonRequestBehavior.AllowGet));
            }

            OrderDetail detail = db.OrderDetails.Find(detailId);

            if (detail == null)
            {
                result.Type = ResultWeb.ResultType.FIELD_INVALID;
                return(Json(result, JsonRequestBehavior.AllowGet));
            }

            detail.ProductId = proId;
            if (count > product.InStock)
            {
                detail.Quantity = product.InStock;
                result.Type     = ResultWeb.ResultType.OUT_OF_STOCK;
            }
            else
            {
                detail.Quantity = count;
                result.Type     = ResultWeb.ResultType.OK_ADD;
            }

            if (detail.Quantity > 0)
            {
                detail.TotalAmount = product.Price * detail.Quantity;

                db.Entry(detail).State = EntityState.Modified;
                db.SaveChanges();
            }
            else
            {
                db.OrderDetails.Remove(detail);
                db.SaveChanges();
            }
            PreventDetailDuplicate(detail.OrderId, proId);

            RecalculateOrderCost(detail.OrderId);

            result.Type = ResultWeb.ResultType.OK_UPDATE;
            return(Json(result, JsonRequestBehavior.AllowGet));
        }
Ejemplo n.º 7
0
        public ActionResult Complete(int Id)
        {
            ResultWeb result = new ResultWeb();
            Order     order  = db.Orders.Find(Id);

            if (order == null)
            {
                result.Type = ResultWeb.ResultType.FIELD_INVALID;
                return(Json(result, JsonRequestBehavior.AllowGet));
            }
            if (!(order.Status == OrderStatus.New && order.AnonymousUserId == null))
            {
                result.Type = ResultWeb.ResultType.FIELD_INVALID;
                return(Json(result, JsonRequestBehavior.AllowGet));
            }

            User user = db.Users.Where(u => u.Username == User.Identity.Name).FirstOrDefault();

            if (!User.IsInRole("Admin"))
            {
                if (order.UserId != user.ID)
                {
                    Response.Cookies["order_id"].Expires = DateTime.Now.AddDays(-1);
                    result.Type = ResultWeb.ResultType.ACCESS_VIOLENCE;
                    return(Json(result, JsonRequestBehavior.AllowGet));
                }
            }

            order.DeliveryDate = DateTime.Today;
            order.Status       = OrderStatus.Completed;
            SubProduct(order);
            //db.Entry(order).State = EntityState.Modified;
            //db.SaveChanges();
            result.Type = ResultWeb.ResultType.OK;


            int cookieId;

            if (Request.Cookies["order_id"] != null)
            {
                cookieId = int.Parse(Request.Cookies["order_id"].Value);
                if (cookieId == Id)
                {
                    Response.Cookies["order_id"].Expires = DateTime.Now.AddDays(-1);
                }
            }

            return(Json(result, JsonRequestBehavior.AllowGet));
        }
Ejemplo n.º 8
0
        public ActionResult ArchiveOrder(int Id)
        {
            ResultWeb result = new ResultWeb();


            if (!User.IsInRole("Admin"))
            {
                result.Type = ResultWeb.ResultType.ACCESS_VIOLENCE;
                return(Json(result, JsonRequestBehavior.AllowGet));
            }

            if (ModelState.IsValid)
            {
                //var detailsBelongTheOrder = db.OrderDetails.Where(od => od.OrderId == Id);
                //db.OrderDetails.RemoveRange(detailsBelongTheOrder);
                //db.SaveChanges();

                Order order = db.Orders.Find(Id);

                if (order == null)
                {
                    result.Type = ResultWeb.ResultType.FIELD_INVALID;
                    return(Json(result, JsonRequestBehavior.AllowGet));
                }

                int cookieId;
                if (Request.Cookies["order_id"] != null)
                {
                    cookieId = int.Parse(Request.Cookies["order_id"].Value);
                    if (cookieId == Id)
                    {
                        Response.Cookies["order_id"].Expires = DateTime.Now.AddDays(-1);
                    }
                }

                //db.Orders.Remove(order);
                order.Status          = OrderStatus.Canceled;
                db.Entry(order).State = EntityState.Modified;
                db.SaveChanges();

                result.Type = ResultWeb.ResultType.OK_DELETE;
            }
            else
            {
                result.Type = ResultWeb.ResultType.FIELD_INVALID;
            }

            return(Json(result, JsonRequestBehavior.AllowGet));
        }
        public ActionResult DeleteProduct(int id)
        {
            ResultWeb result = new ResultWeb();

            if (ModelState.IsValid)
            {
                Product product = db.Products.Find(id);

                if (product == null)
                {
                    result.Type = ResultWeb.ResultType.FIELD_INVALID;
                    return(Json(result, JsonRequestBehavior.AllowGet));
                }

                int cookieId;
                if (Request.Cookies["product_id"] != null)
                {
                    cookieId = int.Parse(Request.Cookies["product_id"].Value);
                    if (cookieId == id)
                    {
                        Response.Cookies["product_id"].Expires = DateTime.Now.AddDays(-1);
                    }
                }

                db.Products.Remove(product);
                db.SaveChanges();

                result.Type = ResultWeb.ResultType.OK_DELETE;
            }
            else
            {
                result.Type = ResultWeb.ResultType.FIELD_INVALID;
            }

            return(Json(result, JsonRequestBehavior.AllowGet));
        }
Ejemplo n.º 10
0
        public ActionResult UploadFiles()
        {
            ResultWeb result = new ResultWeb();

            // Checking no of files injected in Request object
            if (Request.Files.Count > 0)
            {
                try
                {
                    //  Get all files from Request object
                    HttpFileCollectionBase files = Request.Files;
                    for (int i = 0; i < files.Count; i++)
                    {
                        //string path = AppDomain.CurrentDomain.BaseDirectory + "Uploads/";
                        //string filename = Path.GetFileName(Request.Files[i].FileName);

                        HttpPostedFileBase file       = files[i];
                        string             fname      = String.Empty;
                        string             fpath      = String.Empty;
                        string             fstorePath = String.Empty;

                        // Checking for Internet Explorer
                        if (Request.Browser.Browser.ToUpper() == "IE" || Request.Browser.Browser.ToUpper() == "INTERNETEXPLORER")
                        {
                            string[] testfiles = file.FileName.Split(new char[] { '\\' });
                            fname = testfiles[testfiles.Length - 1];
                        }
                        else
                        {
                            fname = file.FileName;
                        }

                        // Get the complete folder path and store the file inside it.

                        do
                        {
                            fpath      = HtmlExtensions.RandomString(10) + fname;
                            fstorePath = Path.Combine(Server.MapPath("~/UploadFiles/"), fpath);
                            fpath      = @"~/UploadFiles/" + fpath;
                        } while (System.IO.File.Exists(fstorePath));

                        file.SaveAs(fstorePath);
                        result.StringValue = fpath;
                    }

                    result.Type = ResultWeb.ResultType.OK;
                    return(Json(result, JsonRequestBehavior.AllowGet));
                }
                catch
                {
                    result.Type = ResultWeb.ResultType.SOMETHING_NOT_RIGHT;
                    return(Json(result, JsonRequestBehavior.AllowGet));
                }
            }
            else
            {
                result.Type        = ResultWeb.ResultType.OK;
                result.StringValue = "";
                return(Json(result, JsonRequestBehavior.AllowGet));
            }
        }
Ejemplo n.º 11
0
        public ActionResult MinusProduct(int id)
        {
            ResultWeb result = new ResultWeb();
            Order     cart   = CheckOrderId();

            Product yourProduct = db.Products.Find(id);

            if (yourProduct == null)
            {
                //result.Type = ResultWeb.ResultType.NOT_FOUND;
                return(Json(new
                {
                    success = false
                    ,
                    text = "Không tìm thấy sản phẩm"
                }, JsonRequestBehavior.AllowGet));
            }

            var details = cart.OrderDetails;

            if (details == null)
            {
                return(Json(new
                {
                    success = false
                    ,
                    text = "Không tìm thấy chi tiết giỏ hàng"
                }, JsonRequestBehavior.AllowGet));
            }

            OrderDetail yourDetail = details.Where(od => od.ProductId == id).FirstOrDefault();

            if (yourDetail != null)
            {
                if (yourDetail.Quantity < 0)
                {
                    yourDetail.Quantity        = 0;
                    yourDetail.TotalAmount     = 0;
                    db.Entry(yourDetail).State = System.Data.Entity.EntityState.Modified;
                    db.SaveChanges();

                    RecalculateOrderCost(cart);

                    //result.Type = ResultWeb.ResultType.FIELD_INVALID;
                    return(Json(new
                    {
                        success = false
                        ,
                        text = "Lỗi chi tiết giỏ hàng không xác định"
                    }, JsonRequestBehavior.AllowGet));
                }
                if (yourDetail.Quantity == 0)
                {
                    //result.Type = ResultWeb.ResultType.OK;
                    return(Json(new
                    {
                        success = false
                        ,
                        text = "Chi tiết giỏ hàng đã ở số nhỏ nhất"
                    }, JsonRequestBehavior.AllowGet));
                }

                string resultText = "";
                bool   theSuccess = false;
                if (yourProduct.InStock < yourDetail.Quantity - 1)
                {
                    //result.Type = ResultWeb.ResultType.OUT_OF_STOCK;
                    theSuccess          = false;
                    resultText          = "Lỗi số lượng chi tiết giỏ hàng";
                    yourDetail.Quantity = yourProduct.InStock;
                }
                else
                {
                    //result.Type = ResultWeb.ResultType.OK;
                    theSuccess           = true;
                    resultText           = "Bớt sản phẩm thành công";
                    yourDetail.Quantity -= 1;
                }

                yourDetail.TotalAmount     = yourDetail.Quantity * yourProduct.Price;
                db.Entry(yourDetail).State = System.Data.Entity.EntityState.Modified;
                db.SaveChanges();

                RecalculateOrderCost(cart);

                return(Json(new
                {
                    success = theSuccess
                    ,
                    text = resultText
                }, JsonRequestBehavior.AllowGet));
            }
            else
            {
                //result.Type = ResultWeb.ResultType.FIELD_INVALID;
                return(Json(new
                {
                    success = false
                    ,
                    text = "Lỗi đơn hàng không hợp lệ"
                }, JsonRequestBehavior.AllowGet));
            }
        }
Ejemplo n.º 12
0
        public ActionResult AddProduct(int id)
        {
            ResultWeb result = new ResultWeb();
            Order     cart   = CheckOrderId();

            Product yourProduct = db.Products.Find(id);

            if (yourProduct == null)
            {
                //result.Type = ResultWeb.ResultType.NOT_FOUND;
                return(Json(new
                {
                    success = false
                    , text = "Không tìm thấy sản phẩm này"
                }, JsonRequestBehavior.AllowGet));
            }

            var details = cart.OrderDetails;

            if (details == null)
            {
                details = new List <OrderDetail>();
            }

            OrderDetail yourDetail = details.Where(od => od.ProductId == id).FirstOrDefault();

            // trường hợp đã thêm sản phẩm này rồi, thêm nó vào lần nữa
            if (yourDetail != null)
            {
                if (yourProduct.InStock <= yourDetail.Quantity)
                {
                    //result.Type = ResultWeb.ResultType.OUT_OF_STOCK;
                    return(Json(new
                    {
                        success = false,
                        text = "Sản phẩm không đủ hàng"
                    }, JsonRequestBehavior.AllowGet));
                }

                yourDetail.Quantity       += 1;
                yourDetail.TotalAmount     = yourDetail.Quantity * yourProduct.Price;
                db.Entry(yourDetail).State = System.Data.Entity.EntityState.Modified;
                db.SaveChanges();
            }
            else// trường hợp chưa có sản phẩm này, thêm vào giỏ
            {
                if (yourProduct.InStock <= 0)
                {
                    //result.Type = ResultWeb.ResultType.OUT_OF_STOCK;
                    return(Json(new
                    {
                        success = false
                        ,
                        text = "Sản phẩm không đủ hàng"
                    }, JsonRequestBehavior.AllowGet));
                }

                yourDetail = new OrderDetail
                {
                    OrderId     = cart.ID,
                    ProductId   = yourProduct.ID,
                    Quantity    = 1,
                    TotalAmount = yourProduct.Price
                };

                db.OrderDetails.Add(yourDetail);
                db.SaveChanges();
            }
            RecalculateOrderCost(cart);

            result.Type = ResultWeb.ResultType.OK;
            return(Json(new
            {
                success = true
                ,
                text = "thêm sản phẩm vào giỏ thành công"
            }, JsonRequestBehavior.AllowGet));
        }
Ejemplo n.º 13
0
        public ActionResult Checkout(int id)
        {
            ResultWeb result = new ResultWeb();
            Order     order  = db.Orders.Find(id);

            if (order == null)
            {
                result.Type = ResultWeb.ResultType.FIELD_INVALID;
                return(Json(result, JsonRequestBehavior.AllowGet));
            }
            switch (order.Status)
            {
            case OrderStatus.New:
            {
                SubProduct(order);
                order.Status          = OrderStatus.Completed;
                db.Entry(order).State = EntityState.Modified;
                db.SaveChanges();
                result.Type = ResultWeb.ResultType.OK;
            }
            break;

            case OrderStatus.Packing:
            {
                order.Status          = OrderStatus.Delivering;
                db.Entry(order).State = EntityState.Modified;
                db.SaveChanges();
                result.Type = ResultWeb.ResultType.OK;
            }
            break;

            case OrderStatus.Delivering:
            {
                order.DeliveryDate    = DateTime.Today;
                order.Status          = OrderStatus.Completed;
                db.Entry(order).State = EntityState.Modified;
                db.SaveChanges();
                result.Type = ResultWeb.ResultType.OK;
            }
            break;

            case OrderStatus.Pending:
            {
                SubProduct(order);
                order.Status          = OrderStatus.Packing;
                db.Entry(order).State = EntityState.Modified;
                db.SaveChanges();
                result.Type = ResultWeb.ResultType.OK;
            }
            break;
            }

            int cookieId;

            if (Request.Cookies["order_id"] != null)
            {
                cookieId = int.Parse(Request.Cookies["order_id"].Value);
                if (cookieId == id)
                {
                    if (order.AnonymousUserId != null)
                    {// this mean: this is a order from online shop
                        Order aPendingOrder =
                            db.Orders.Where(o =>
                                            o.Status == OrderStatus.Pending).FirstOrDefault();

                        if (aPendingOrder != null)
                        {
                            Response.Cookies["order_id"].Value   = aPendingOrder.ID.ToString();
                            Response.Cookies["order_id"].Expires = DateTime.Now.AddDays(7);
                        }
                        else
                        {
                            Response.Cookies["order_id"].Expires = DateTime.Now.AddDays(-1);
                        }
                    }
                    else
                    {
                        Response.Cookies["order_id"].Expires = DateTime.Now.AddDays(-1);
                    }
                }
            }

            return(Json(result, JsonRequestBehavior.AllowGet));
        }
Ejemplo n.º 14
0
        public ActionResult AddLine(int orderId, int proId, int count)
        {
            ResultWeb result  = new ResultWeb();
            Product   product = db.Products.Find(proId);

            if (product == null)// the product you are going to add, not found
            {
                result.Type = ResultWeb.ResultType.FIELD_INVALID;
                return(Json(result, JsonRequestBehavior.AllowGet));
            }

            // check if the product you are going to add, exist on the current order
            var details = db.OrderDetails.Where(od => od.OrderId == orderId);

            OrderDetail line = details.Where(od => od.ProductId == proId).FirstOrDefault();

            if (line == null)// doesn't exist? create a new details for the product
            {
                line = new OrderDetail
                {
                    OrderId   = orderId,
                    ProductId = proId
                };

                if (count > product.InStock)
                {
                    line.Quantity = product.InStock;
                    result.Type   = ResultWeb.ResultType.OUT_OF_STOCK;
                }
                else
                {
                    line.Quantity = count;
                    result.Type   = ResultWeb.ResultType.OK_ADD;
                }

                if (line.Quantity > 0)
                {
                    line.TotalAmount = product.Price * line.Quantity;
                    db.OrderDetails.Add(line);
                    db.SaveChanges();
                }
            }
            else// otherwise
            {
                line.Quantity += count;
                if (line.Quantity > product.InStock)
                {
                    line.Quantity = product.InStock;
                    result.Type   = ResultWeb.ResultType.OUT_OF_STOCK;
                }
                else
                {
                    result.Type = ResultWeb.ResultType.OK_ADD;
                }

                if (line.Quantity > 0)
                {
                    line.TotalAmount     = product.Price * line.Quantity;
                    db.Entry(line).State = EntityState.Modified;
                    db.SaveChanges();
                }
                else
                {
                    db.OrderDetails.Remove(line);
                    db.SaveChanges();
                }
            }

            RecalculateOrderCost(orderId);

            return(Json(result, JsonRequestBehavior.AllowGet));
        }