public HttpResponseMessage PurchaseVipNews([FromUri] int quantity) { try { using (WebbanhangDBEntities entities = new WebbanhangDBEntities()) { entities.Configuration.ProxyCreationEnabled = false; SponsoredNewsOrder sno = new SponsoredNewsOrder(); sno.UserID = HttpContext.Current.User.Identity.GetUserId(); sno.SponsoredNewsOrderDate = DateTime.Now; sno.Quantity = quantity; sno.SumPrice = sno.Quantity * 50000; entities.SponsoredNewsOrders.Add(sno); entities.UserInfos.Where(x => x.UserID == sno.UserID).FirstOrDefault().VipNewsCount = entities.UserInfos.Where(x => x.UserID == sno.UserID).FirstOrDefault().VipNewsCount + quantity; entities.SaveChanges(); return(Request.CreateResponse(HttpStatusCode.OK, "PURCHASE OK")); } } catch (Exception ex) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex)); } }
public HttpResponseMessage ChangetoRead(int rid) { try { using (WebbanhangDBEntities entities = new WebbanhangDBEntities()) { entities.Configuration.ProxyCreationEnabled = false; var result = entities.Reports.FirstOrDefault(x => x.ReportID == rid); if (result != null) { result.IsRead = true; entities.SaveChanges(); return(Request.CreateResponse(HttpStatusCode.OK)); } else { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Có lỗi")); } } } catch (Exception ex) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex)); } }
public HttpResponseMessage Delete(int id) { try { using (WebbanhangDBEntities entities = new WebbanhangDBEntities()) { entities.Configuration.ProxyCreationEnabled = false; var entity = entities.BanAccounts.FirstOrDefault(e => e.BanAccountID == id); if (entity == null) { return(Request.CreateErrorResponse(HttpStatusCode.NotFound, "Order item with Id = " + id.ToString() + " not found to delete")); } else { entities.BanAccounts.Remove(entity); entities.SaveChanges(); return(Request.CreateResponse(HttpStatusCode.OK, "Delete OK")); } } } catch (Exception ex) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex)); } }
public HttpResponseMessage DeleteMyRating([FromUri] int pid) { try { using (WebbanhangDBEntities entities = new WebbanhangDBEntities()) { entities.Configuration.ProxyCreationEnabled = false; string currentUserID = User.Identity.GetUserId(); var checkIfRated = entities.Ratings.FirstOrDefault(x => x.ProductID == pid && x.UserID == currentUserID); if (checkIfRated != null) { entities.Ratings.Remove(checkIfRated); entities.SaveChanges(); return(Request.CreateResponse(HttpStatusCode.OK, "Đã xóa Rating")); } else { return(Request.CreateErrorResponse(HttpStatusCode.BadGateway, "Có lỗi xảy ra")); } } } catch { return(Request.CreateErrorResponse(HttpStatusCode.BadGateway, "Có lỗi xảy ra")); } }
public HttpResponseMessage ExtendTime([FromUri] int SponsoredItemID) { try { using (WebbanhangDBEntities entities = new WebbanhangDBEntities()) { entities.Configuration.ProxyCreationEnabled = false; string currentUserID = User.Identity.GetUserId(); SponsoredItem sno = entities.SponsoredItems.FirstOrDefault(x => x.SponsoredItemID == SponsoredItemID); if (sno != null) { var user = entities.UserInfos.FirstOrDefault(x => x.UserID == currentUserID); if (user.VipNewsCount == 0) { return(Request.CreateErrorResponse(HttpStatusCode.NotAcceptable, "Hết số lượng được đăng")); } sno.EndDate = sno.EndDate.Value.AddDays(7); user.VipNewsCount = user.VipNewsCount - 1; entities.SaveChanges(); } return(Request.CreateResponse(HttpStatusCode.OK, "POST OK")); } } catch (Exception ex) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex)); } }
public HttpResponseMessage Put(int id, [FromBody] Order order) { try { using (WebbanhangDBEntities entities = new WebbanhangDBEntities()) { entities.Configuration.ProxyCreationEnabled = false; var entity = entities.Orders.FirstOrDefault(e => e.OrderID == id); if (entity == null) { return(Request.CreateErrorResponse(HttpStatusCode.NotFound, "Order with Id " + id.ToString() + " not found to update")); } else { entity.UserID = order.UserID; entity.OrderDate = order.OrderDate; entity.OrderAddress = order.OrderAddress; entities.SaveChanges(); return(Request.CreateResponse(HttpStatusCode.OK, entity)); } } } catch (Exception ex) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex)); } }
public HttpResponseMessage Put(int id, [FromBody] Brand brand) { try { using (WebbanhangDBEntities entities = new WebbanhangDBEntities()) { entities.Configuration.ProxyCreationEnabled = false; var entity = entities.Brands.FirstOrDefault(e => e.BrandID == id); if (entity == null) { return(Request.CreateErrorResponse(HttpStatusCode.NotFound, "Product with Id " + id.ToString() + " not found to update")); } else { entity.BrandName = brand.BrandName; entity.Detail = brand.Detail; entities.SaveChanges(); return(Request.CreateResponse(HttpStatusCode.OK, entity)); } } } catch (Exception ex) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex)); } }
public HttpResponseMessage EditCurrentUserInfo([FromBody] UserinfoModel userinfo) { try { if (!ModelState.IsValid) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState)); } using (WebbanhangDBEntities entities = new WebbanhangDBEntities()) { entities.Configuration.ProxyCreationEnabled = false; string uid = User.Identity.GetUserId(); var entity = entities.UserInfos.FirstOrDefault(e => e.UserID == uid); if (entity == null) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Có lỗi xảy ra")); } else { entity.Name = userinfo.Name; entity.HomeAddress = userinfo.HomeAddress; entity.Email = userinfo.Email; entity.PhoneNumber = userinfo.PhoneNumber; entity.CMND = userinfo.CMND; entities.SaveChanges(); return(Request.CreateResponse(HttpStatusCode.OK, "Đã sửa")); } } } catch (Exception ex) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex)); } }
public HttpResponseMessage Post([FromBody] Rating rating) { try { using (WebbanhangDBEntities entities = new WebbanhangDBEntities()) { entities.Configuration.ProxyCreationEnabled = false; string currentUserID = User.Identity.GetUserId(); var checkIfRated = entities.Ratings.FirstOrDefault(x => x.ProductID == rating.Rating1 && x.UserID == currentUserID); if (checkIfRated != null) { return(Request.CreateErrorResponse(HttpStatusCode.NotAcceptable, "Bạn đã rate rồi")); } entities.Configuration.ProxyCreationEnabled = false; rating.UserID = currentUserID; entities.Ratings.Add(rating); entities.SaveChanges(); return(Request.CreateResponse(HttpStatusCode.OK, "POST OK")); } } catch (Exception ex) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex)); } }
public async Task <IHttpActionResult> Register2(RegisterBindingModel model) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var user = new ApplicationUser() { UserName = model.Email, Email = model.Email }; IdentityResult result = await UserManager.CreateAsync(user, model.Password); if (result.Succeeded != true) { return(GetErrorResult(result)); } using (WebbanhangDBEntities entities = new WebbanhangDBEntities()) { entities.Configuration.ProxyCreationEnabled = false; string newID = entities.AspNetUsers.Where(x => x.Email == model.Email).FirstOrDefault().Id.ToString(); string confirmationToken = UserManager.GenerateEmailConfirmationTokenAsync(newID).Result; //Tạo 1 Userinfo trống cho tài khoản mới tạo: UserInfo newuserinfo = new UserInfo(); newuserinfo.UserID = newID; newuserinfo.Name = ""; newuserinfo.HomeAddress = ""; newuserinfo.Email = ""; newuserinfo.Cart = "[]"; newuserinfo.VipNewsCount = 0; entities.UserInfos.Add(newuserinfo); entities.SaveChanges(); //Gửi email yêu cầu kích hoạt 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("*****@*****.**", model.Email, "Kích hoạt tài khoản", "http://localhost:8000/emailconfirm?userid=" + newID + "&token=" + confirmationToken.Replace("+", "%252b")); mm.BodyEncoding = UTF8Encoding.UTF8; mm.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure; client.Send(mm); } if (!result.Succeeded) { return(GetErrorResult(result)); } return(Ok()); }
public HttpResponseMessage AddToCart([FromUri] int pid = 1, int q = 1) { using (WebbanhangDBEntities entities = new WebbanhangDBEntities()) { entities.Configuration.ProxyCreationEnabled = false; string userid = HttpContext.Current.User.Identity.GetUserId(); List <CartEntity> CartItemList = new List <CartEntity>(); CartItemList = JsonConvert.DeserializeObject <List <CartEntity> >(entities.UserInfos.FirstOrDefault(e => e.UserID == userid).Cart); //Kiểm tra xem sản phẩm đang định bỏ vào giỏ hàng có phải của chính mình hay không: var producttoCheck = entities.Products.Where(x => x.ProductID == pid).FirstOrDefault(); if (producttoCheck.UserID == userid) { return(Request.CreateResponse(HttpStatusCode.NotAcceptable, "Không được mua hàng của chính mình.")); } //Kiểm tra xem sản phẩm đang định bỏ vào giỏ hàng có phải nhỏ hơn stock hay không: var checkCart = CartItemList.FirstOrDefault(x => x.productID == pid); if (checkCart != null) { if (q + checkCart.quantity > producttoCheck.Stock) { return(Request.CreateResponse(HttpStatusCode.NotAcceptable, "Chỉ được đặt mua số lượng nhỏ hơn stock.")); } } if (q > producttoCheck.Stock) { return(Request.CreateResponse(HttpStatusCode.NotAcceptable, "Chỉ được đặt mua số lượng nhỏ hơn stock.")); } //Tìm thử xem có sẵn chưa, nếu có rồi thì chỉ cộng thêm số lượng bool flag = false; foreach (CartEntity item in CartItemList) { if (item.productID == pid) { item.quantity = item.quantity + q; flag = true; } } if (flag == false) { CartItemList.Add(new CartEntity { productID = pid, quantity = q }); } var entity = entities.UserInfos.FirstOrDefault(e => e.UserID == userid); entity.Cart = JsonConvert.SerializeObject(CartItemList); entities.SaveChanges(); } return(Request.CreateResponse(HttpStatusCode.OK, "Đã thêm vào giỏ hàng")); }
public HttpResponseMessage Put(int id, [FromBody] ProductModel product) { try { if (!ModelState.IsValid) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState)); } //Kiểm tra giá phải nhỏ hơn giá cũ if (product.Price > product.OldPrice) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Giá cũ phải cao hơn giá mới")); } using (WebbanhangDBEntities entities = new WebbanhangDBEntities()) { entities.Configuration.ProxyCreationEnabled = false; var entity = entities.Products.FirstOrDefault(e => e.ProductID == id); if (entity == null) { return(Request.CreateErrorResponse(HttpStatusCode.NotFound, "Product with Id " + id.ToString() + " not found to update")); } else { if (entity.UserID == User.Identity.GetUserId()) { entity.ProductTypeID = product.ProductTypeID; entity.BrandID = product.BrandID; entity.ProductName = product.ProductName; entity.Detail = product.Detail; entity.Stock = product.Stock; entity.OldPrice = product.OldPrice; entity.Price = product.Price; entity.ProductImage = product.ProductImage; entities.SaveChanges(); return(Request.CreateResponse(HttpStatusCode.OK, "Đã sửa")); } else { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Có lỗi xảy ra")); } } } } catch (Exception ex) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex)); } }
public HttpResponseMessage SetToShipping([FromUri] int oid) { try { //Lát sau viết lại ràng buộc cho method này!!! using (WebbanhangDBEntities entities = new WebbanhangDBEntities()) { entities.Configuration.ProxyCreationEnabled = false; string currentUserID = User.Identity.GetUserId(); var result = entities.OrderItems.Include("Order").Include("Product").Where(x => x.OrderItemID == oid).FirstOrDefault(); string emailtoSend = entities.AspNetUsers.FirstOrDefault(x => x.Id == result.Order.UserID).Email; if (result != null) { if (result.Product.UserID == currentUserID) { result.OrderState = "Shipping"; 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("*****@*****.**", emailtoSend, "Tình trạng đơn hàng", "Sản phẩm có mã đặt hàng là: #" + result.OrderItemID + " đang được vận chuyển."); mm.BodyEncoding = UTF8Encoding.UTF8; mm.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure; client.Send(mm); //Hết phần gửi email. return(Request.CreateResponse(HttpStatusCode.OK, "Đã chuyển sang Shipping")); } else { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Không sửa được vì không phải chủ của sản phẩm này")); } } else { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Không tìm thấy")); } } } catch (Exception ex) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex)); } }
public HttpResponseMessage Post([FromBody] ProductModel product) { try { if (!ModelState.IsValid) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState)); } //Kiểm tra giá cũ có lớn hơn giá mới không if (product.Price > product.OldPrice) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Giá cũ phải cao hơn giá mới")); } using (WebbanhangDBEntities entities = new WebbanhangDBEntities()) { entities.Configuration.ProxyCreationEnabled = false; product.CreationDate = DateTime.Now; product.UserID = User.Identity.GetUserId(); //Kiểm tra xem có đang bị ban hay không string currentUserID = User.Identity.GetUserId(); var list = entities.BanAccounts.Where(x => x.UserID == currentUserID && x.LiftDate > DateTime.Now).ToList(); if (list.Count != 0) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Bạn đang bị ban, lý do: " + list[0].Reason)); } //Hết kiểm tra bị ban Product newproduct = new Product(); newproduct.UserID = product.UserID; newproduct.ProductTypeID = product.ProductTypeID; newproduct.BrandID = product.BrandID; newproduct.ProductName = product.ProductName; newproduct.Detail = product.Detail; newproduct.Stock = product.Stock; newproduct.ProductImage = product.ProductImage; newproduct.Price = product.Price; newproduct.OldPrice = product.OldPrice; newproduct.CreationDate = DateTime.Now; entities.Products.Add(newproduct); entities.SaveChanges(); return(Request.CreateResponse(HttpStatusCode.OK, "POST OK")); } } catch (Exception ex) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex)); } }
public HttpResponseMessage RateaProduct([FromUri] int pid, int r) { try { using (WebbanhangDBEntities entities = new WebbanhangDBEntities()) { entities.Configuration.ProxyCreationEnabled = false; string currentUserID = User.Identity.GetUserId(); //Kiểm tra r (điểm) phải >0 và < 10 if (r < 0 || r > 10) { return(Request.CreateErrorResponse(HttpStatusCode.BadGateway, "Phải rate từ 0-> 10")); } //Kiểm tra xem người đó đã mua hàng hay chưa, nếu chưa mua thì không được rate var checkBought = entities.OrderItems.Where(x => x.Order.UserID == currentUserID && x.ProductID == pid).FirstOrDefault(); if (checkBought == null) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Bạn chưa mua sản phẩm này nên không được đánh giá")); } //Kiểm tra người Rate có phải chủ của Product không. Chủ product ko hể rate sản phẩm của chính mình string IDofProductOwner = entities.Products.FirstOrDefault(x => x.ProductID == pid).UserID; if (currentUserID == IDofProductOwner) { return(Request.CreateErrorResponse(HttpStatusCode.BadGateway, "Bạn không thể rate sản phẩm của chính mình")); } //Kiểm tra xem đã vote chưa, 1 người chỉ được vote sản phẩm 1 lần var checkIfRated = entities.Ratings.FirstOrDefault(x => x.ProductID == pid && x.UserID == currentUserID); if (checkIfRated != null) { return(Request.CreateErrorResponse(HttpStatusCode.NotAcceptable, "Bạn đã rate rồi")); } Rating newRating = new Rating(); newRating.ProductID = pid; newRating.Rating1 = r; newRating.UserID = currentUserID; entities.Ratings.Add(newRating); entities.SaveChanges(); return(Request.CreateResponse(HttpStatusCode.OK, "POST OK")); } } catch { return(Request.CreateErrorResponse(HttpStatusCode.BadGateway, "Có lỗi xảy ra")); } }
public HttpResponseMessage Post([FromBody] Brand brand) { try { using (WebbanhangDBEntities entities = new WebbanhangDBEntities()) { entities.Configuration.ProxyCreationEnabled = false; entities.Brands.Add(brand); entities.SaveChanges(); return(Request.CreateResponse(HttpStatusCode.OK, "POST OK")); } } catch (Exception ex) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex)); } }
public HttpResponseMessage Post([FromBody] UserInfo userinfo) { try { using (WebbanhangDBEntities entities = new WebbanhangDBEntities()) { entities.Configuration.ProxyCreationEnabled = false; userinfo.UserID = User.Identity.GetUserId(); entities.UserInfos.Add(userinfo); entities.SaveChanges(); return(Request.CreateResponse(HttpStatusCode.OK, "POST OK")); } } catch (Exception ex) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex)); } }
public HttpResponseMessage PurchaseVipNews([FromUri] int productID) { try { using (WebbanhangDBEntities entities = new WebbanhangDBEntities()) { entities.Configuration.ProxyCreationEnabled = false; //Check if product is currently being promoted: string currentUserID = User.Identity.GetUserId(); var listtoCheck = entities.SponsoredItems.Where(x => x.Product.UserID == currentUserID).ToList(); foreach (var x in listtoCheck) { if (x.ProductID == productID && x.EndDate >= DateTime.Now) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Sản phẩm hiện đang được promte")); } } SponsoredItem sno = new SponsoredItem(); sno.ProductID = productID; sno.StartDate = DateTime.Now; sno.EndDate = sno.StartDate.Value.AddDays(7); entities.SponsoredItems.Add(sno); var user = entities.UserInfos.FirstOrDefault(x => x.UserID == currentUserID); //Kiểm tra còn lượng tin đăng hay không if (user.VipNewsCount == 0) { return(Request.CreateErrorResponse(HttpStatusCode.NotAcceptable, "Hết số lượng được đăng")); } user.VipNewsCount = user.VipNewsCount - 1; entities.SaveChanges(); return(Request.CreateResponse(HttpStatusCode.OK, "POST OK")); } } catch (Exception ex) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex)); } }
public HttpResponseMessage Post([FromBody] Report rp) { try { using (WebbanhangDBEntities entities = new WebbanhangDBEntities()) { entities.Configuration.ProxyCreationEnabled = false; string uid = User.Identity.GetUserId(); rp.UserID = uid; rp.IsRead = false; entities.Reports.Add(rp); entities.SaveChanges(); return(Request.CreateResponse(HttpStatusCode.OK, "Report made")); } } catch (Exception ex) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex)); } }
public HttpResponseMessage RemoveFromCart([FromUri] int pid = 1) { using (WebbanhangDBEntities entities = new WebbanhangDBEntities()) { entities.Configuration.ProxyCreationEnabled = false; string userid = HttpContext.Current.User.Identity.GetUserId(); List <CartEntity> CartItemList = new List <CartEntity>(); CartItemList = JsonConvert.DeserializeObject <List <CartEntity> >(entities.UserInfos.FirstOrDefault(e => e.UserID == userid).Cart); CartEntity removeItem = CartItemList.Where(x => x.productID == pid).FirstOrDefault(); CartItemList.Remove(removeItem); var entity = entities.UserInfos.FirstOrDefault(e => e.UserID == userid); entity.Cart = JsonConvert.SerializeObject(CartItemList); entities.SaveChanges(); } return(Request.CreateResponse(HttpStatusCode.OK, "Đã xóa khỏi giỏ hàng")); }
public HttpResponseMessage RemoveBan(string uid) { try { using (WebbanhangDBEntities entities = new WebbanhangDBEntities()) { entities.Configuration.ProxyCreationEnabled = false; var list = entities.BanAccounts.Where(x => x.UserID == uid && x.LiftDate > DateTime.Now).ToList(); foreach (var s in list) { entities.BanAccounts.Remove(s); } entities.SaveChanges(); return(Request.CreateResponse(HttpStatusCode.OK, "Đã gỡ ban")); } } catch (Exception ex) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex)); } }
public HttpResponseMessage Post([FromBody] BanAccountModel ba) { try { using (WebbanhangDBEntities entities = new WebbanhangDBEntities()) { entities.Configuration.ProxyCreationEnabled = false; BanAccount banacc = new BanAccount(); banacc.UserID = ba.UserID; banacc.Reason = ba.Reason; banacc.LiftDate = Convert.ToDateTime(ba.LiftDate); entities.BanAccounts.Add(banacc); entities.SaveChanges(); return(Request.CreateResponse(HttpStatusCode.OK, "POST OK")); } } catch (Exception ex) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex)); } }
public HttpResponseMessage Put(int id, [FromBody] UserinfoModel userinfo) { try { if (!ModelState.IsValid) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState)); } using (WebbanhangDBEntities entities = new WebbanhangDBEntities()) { entities.Configuration.ProxyCreationEnabled = false; var entity = entities.UserInfos.FirstOrDefault(e => e.UserInfoID == id); if (entity == null) { return(Request.CreateErrorResponse(HttpStatusCode.NotFound, "User Info with Id " + id.ToString() + " not found to update")); } else { entity.Name = userinfo.Name; entity.HomeAddress = userinfo.HomeAddress; entity.Email = userinfo.Email; entity.PhoneNumber = userinfo.PhoneNumber; entity.CMND = userinfo.CMND; entities.SaveChanges(); return(Request.CreateResponse(HttpStatusCode.OK, "Edited")); } } } catch (Exception ex) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex)); } }
public HttpResponseMessage SetToCancel([FromUri] int oid) { try { //Lát sau viết lại ràng buộc cho method này!!! using (WebbanhangDBEntities entities = new WebbanhangDBEntities()) { entities.Configuration.ProxyCreationEnabled = false; string currentUserID = User.Identity.GetUserId(); var result = entities.OrderItems.Include("Product").Include("Order").Where(x => x.OrderItemID == oid).FirstOrDefault(); if (result != null) { if (result.Product.UserID == currentUserID || result.Order.UserID == currentUserID) { if (result.OrderState != "Done") { result.OrderState = "Canceled"; var producttoIncreaseBack = entities.Products.FirstOrDefault(x => x.ProductID == result.ProductID); producttoIncreaseBack.Stock = producttoIncreaseBack.Stock + result.Quantity; entities.SaveChanges(); //Gửi Email thông báo đã hủy cho khách 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, "Tình trạng đơn hàng", "Sản phẩm có mã đặt hàng là: #" + result.OrderItemID + " đã bị hủy."); mm.BodyEncoding = UTF8Encoding.UTF8; mm.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure; client.Send(mm); //Hết phần gửi email. //Gửi Email thông báo đã hủy cho người bán string emailtoSend = entities.AspNetUsers.FirstOrDefault(x => x.Id == result.Product.UserID).Email; SmtpClient client2 = new SmtpClient(); client2.Port = 587; client2.Host = "smtp.gmail.com"; client2.EnableSsl = true; client2.Timeout = 10000; client2.DeliveryMethod = SmtpDeliveryMethod.Network; client2.UseDefaultCredentials = false; client2.Credentials = new System.Net.NetworkCredential("*****@*****.**", "hoahoa123"); MailMessage mm2 = new MailMessage("*****@*****.**", emailtoSend, "Thông báo khách hàng hủy đơn hàng", "Sản phẩm có mã đặt hàng là: #" + result.OrderItemID + " đã bị hủy."); mm2.BodyEncoding = UTF8Encoding.UTF8; mm2.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure; client2.Send(mm2); //Hết phần gửi email. return(Request.CreateResponse(HttpStatusCode.OK, "Đã chuyển sang 'Cancel'")); } else { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Sản phẩm đã hoàn thành thì không thể hủy")); } } else { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Không sửa được vì không phải người liên quan của sản phẩm này")); } //Nhớ cộng lại vào số lượng sản phẩm } else { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Không tìm thấy")); } } } catch (Exception ex) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex)); } }
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)); } }