示例#1
0
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            base.OnNavigatedTo(e);

            if (e.NavigationMode == NavigationMode.New)
            {
                Model = e.Parameter as InfoBindingModel;
                if (Model != null)
                {
                    MainTitle.Text = WebUtility.HtmlDecode(Model.title);
                    SubHeader.Text = WebUtility.HtmlDecode(Model.SubHeader);
                    SetContent(Model.article.content);
                    CommentFrame.Navigate(typeof(CommentPage), Model.contentId);
                    Comment.Instance.QuoteId = -1;
                }
                Comment.Instance.QuoteFloorChanged += QuoteFloorChanged;

                FavoriteButtonRef(true);
            }
        }
示例#2
0
        public HttpResponseMessage MakeOrder(InfoBindingModel info)
        {
            try
            {
                //Kiểm tra chuẩn
                if (!ModelState.IsValid)
                {
                    return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState));
                }
                //Get cart
                string cart;
                using (WebbanhangDBEntities entities = new WebbanhangDBEntities())
                {
                    entities.Configuration.ProxyCreationEnabled = false;
                    string userid = HttpContext.Current.User.Identity.GetUserId();
                    cart = entities.UserInfos.FirstOrDefault(x => x.UserID == userid).Cart;
                    List <CartEntity> itemBuyList = JsonConvert.DeserializeObject <List <CartEntity> >(cart);
                    Order             newOrder    = new Order();
                    newOrder.UserID           = userid;
                    newOrder.OrderDate        = DateTime.Now;
                    newOrder.OrderAddress     = info.homeAddress;
                    newOrder.OrderNameofUser  = info.name;
                    newOrder.OrderPhoneNumber = info.phoneNumber;
                    entities.Orders.Add(newOrder);

                    entities.SaveChanges();

                    foreach (CartEntity item in itemBuyList)
                    {
                        int       maitem    = Convert.ToInt32(item.productID);
                        OrderItem orderitem = new OrderItem();
                        orderitem.OrderID = entities.Orders.ToList()[entities.Orders.ToList().Count - 1].OrderID;
                        orderitem.ShopID  = entities.Products.FirstOrDefault(x => x.ProductID == maitem).UserID.ToString();
                        //var temp = entities.Products.Where(x => x.ProductID == maitem).ToList();
                        orderitem.ProductID  = maitem;
                        orderitem.Quantity   = item.quantity;
                        orderitem.Price      = Convert.ToInt32(entities.Products.FirstOrDefault(x => x.ProductID == maitem).Price.ToString()) * item.quantity;
                        orderitem.FinalPrice = Convert.ToInt32(entities.Products.FirstOrDefault(x => x.ProductID == maitem).Price.ToString()) * item.quantity;
                        orderitem.OrderState = "Waiting";
                        orderitem.Paided     = false;
                        entities.OrderItems.Add(orderitem);

                        //Reduce quantity.
                        var reduceQuantity = entities.Products.FirstOrDefault(e => e.ProductID == maitem);
                        if (reduceQuantity.Stock < item.quantity)
                        {
                            throw new Exception("Quantity is higher than stock");
                        }
                        reduceQuantity.Stock = reduceQuantity.Stock - item.quantity;

                        //Mua xong thì xóa cart
                        var cartToDelete = entities.UserInfos.FirstOrDefault(x => x.UserID == userid);
                        cartToDelete.Cart = "[]";

                        //Save changes
                        entities.SaveChanges();
                    }

                    //Gửi Email thông báo đã mua hàng
                    SmtpClient client = new SmtpClient();
                    client.Port                  = 587;
                    client.Host                  = "smtp.gmail.com";
                    client.EnableSsl             = true;
                    client.Timeout               = 10000;
                    client.DeliveryMethod        = SmtpDeliveryMethod.Network;
                    client.UseDefaultCredentials = false;
                    client.Credentials           = new System.Net.NetworkCredential("*****@*****.**", "hoahoa123");
                    MailMessage mm = new MailMessage("*****@*****.**", User.Identity.Name, "Mua hàng", "Bạn đã đặt hóa đơn thành công, vào đây để xem lại hóa đơn: http://localhost:8000/bill");
                    mm.BodyEncoding = UTF8Encoding.UTF8;
                    mm.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;
                    client.Send(mm);
                    //Hết phần gửi email.

                    //Chuẩn bị biến để return về hóa đơn
                    int lastIDofOrder = entities.Orders.Max(x => x.OrderID);
                    var invoice       = entities.OrderItems.Where(x => x.OrderID == lastIDofOrder).GroupBy(x => new { x.OrderID, x.Order.OrderDate, x.Order.AspNetUser.Id, x.Order.OrderNameofUser, x.Order.OrderPhoneNumber, x.Order.OrderAddress, x.Order.AspNetUser.UserName }).Select(y => new { orderID = y.Key.OrderID, orderDate = y.Key.OrderDate, orderUser = y.Key.UserName, orderUserID = y.Key.Id, orderNameofUser = y.Key.OrderNameofUser, orderAddress = y.Key.OrderAddress, orderPhoneNumber = y.Key.OrderPhoneNumber, orderItemIDs = y.Select(z => new { orderItemID = z.OrderItemID, orderItemState = z.OrderState, orderItemQuantity = z.Quantity, orderItemPrice = z.FinalPrice, itemID = z.Product.ProductID, productName = z.Product.ProductName, productImage = z.Product.ProductImage, shopName = entities.UserInfos.FirstOrDefault(c => c.UserID == z.ShopID).Name, shopPhoneNumber = entities.UserInfos.FirstOrDefault(c => c.UserID == z.ShopID).PhoneNumber, shopAddress = entities.UserInfos.FirstOrDefault(c => c.UserID == z.ShopID).HomeAddress, shopEmail = entities.UserInfos.FirstOrDefault(c => c.UserID == z.ShopID).Email }).ToList() }).ToList();
                    return(Request.CreateResponse(HttpStatusCode.OK, invoice));
                }
            }
            catch (Exception ex)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex));
            }
        }