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); } }
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)); } }