public ActionResult Payment(int CustID, int CartID) { Payment myPayment = new Payment(); Invoice myInvoice = new Invoice(); InvoiceProducts myInvoiceProducts = new InvoiceProducts(); Random rand = new Random(); List <Product> ProductList = new List <Product>(); //Add payment record. Cart myCart = db.Cart.Where(x => x.CartID == CartID).Select(x => x).FirstOrDefault(); ProductList = db.CartItem.Where(x => x.CartID == CartID).Select(x => x.Product).ToList();//Take Product in the cart. myPayment.CartID = CartID; myPayment.Amount = myCart.TotalDiscountedCost; myPayment.CustomerID = CustID; db.Payment.Add(myPayment); db.SaveChanges(); //Add invoice record. myInvoice.InvoiceDate = DateTime.Now.Date; myInvoice.CustID = CustID; myInvoice.PaymentID = myPayment.PaymentID; //to generate random barcode number, use unique value. myInvoice.BarcodeNumbers = myPayment.PaymentID + rand.Next(99).ToString() + "-" + myPayment.CustomerID + rand.Next(99).ToString() + "-" + myCart.CartID + rand.Next(99).ToString(); db.Invoice.Add(myInvoice); db.SaveChanges(); foreach (var item in ProductList) { myInvoiceProducts.InvoiceID = myInvoice.InvoiceID; myInvoiceProducts.ProductID = item.ProductID; db.InvoiceProducts.Add(myInvoiceProducts); db.SaveChanges(); } //Delete cartitem. List <CartItem> myCartList = db.CartItem.Where(x => x.CartID == CartID).Select(x => x).ToList(); foreach (var item in myCartList) { db.CartItem.Remove(item); } db.SaveChanges(); //Reset the cart. myCart.TotalCost = 0; myCart.TotalDiscountedCost = 0; db.SaveChanges(); System.Threading.Thread.Sleep(1000); return(RedirectToAction("MyCart", "My")); }
public IHttpActionResult insertAsync([FromBody] ViewInvoiceModel viewInvoiceModel) { Response response = new Response(); //if (Service.invoiceDAO.checkExist(viewInvoiceModel) != null) //{ // response = new Response("409", "Hóa đơn này đã tồn tại", null); // return Content<Response>(HttpStatusCode.Conflict, response); //} List <Product> products = new List <Product>(); for (var i = 0; i < viewInvoiceModel.products.Count(); i++) { var product = viewInvoiceModel.products[i]; Product saleProduct = Service.productDAO.getProduct(product.productId); saleProduct.attributes = Service.productAttributeDAO.getProAttrsByProId(saleProduct.id); products.Add(saleProduct); } List <Int16> salers = new List <Int16>(); for (var i = 0; i < products.Count(); i++) { Int16 saler = products[i].createdBy; if (viewInvoiceModel.buyer == saler) { response.code = "409"; response.status = "Bạn không thể mua sản phẩm của chính mình"; return(Content <Response>(HttpStatusCode.Conflict, response)); } bool existSaler = salers.Contains(saler); if (existSaler == false) { salers.Add(saler); } } for (var i = 0; i < salers.Count(); i++) { var code = "HD" + salers[i].ToString() + Utils.RandomString(6); IEnumerable <Product> saleProducts = products.Where(p => p.createdBy == salers[i]); List <Product> lists = saleProducts.ToList(); Double total = 0; Invoice createInvoice = new Invoice(code, viewInvoiceModel.buyer, salers[i], total); Service.invoiceDAO.insertInvoice(createInvoice); for (var j = 0; j < lists.Count(); j++) { InvoiceProducts invoiceProduct = viewInvoiceModel.products.First(p => p.productId == lists[j].id); List <ProductAttribute> proAttrs = Service.productAttributeDAO.getProAttrsByProId(lists[j].id); var amount = invoiceProduct.amount; var price = proAttrs[0].value; var discount = proAttrs[2].value; var productAmount = short.Parse(proAttrs[1].value) - amount; ProductAttribute updateAttrs = new ProductAttribute(); //Update Amount of product after create Invoice updateAttrs = Service.productAttributeDAO.getProductAttributeById(proAttrs[1].id); updateAttrs.value = productAmount.ToString(); Service.productAttributeDAO.updateProductAttribute(updateAttrs); InvoiceDetail invoiceDetail = null; if (double.Parse(discount) > 0) { invoiceDetail = new InvoiceDetail(createInvoice.id, lists[j].id, amount, double.Parse(discount)); } else { invoiceDetail = new InvoiceDetail(createInvoice.id, lists[j].id, amount, double.Parse(price)); } total = total + invoiceDetail.subTotal; //tính Total của cái hóa đơn Service.invoiceDetailDAO.insertInvoiceDetail(invoiceDetail); } Invoice updateInvoice = createInvoice; updateInvoice.total = total; Service.invoiceDAO.updateInvoice(updateInvoice); //var message = "<p>Thông tin đơn hàng của bạn</p> " + // "<p>Mã hóa đơn: " + createInvoice.id +"</p>" + // "<p></p>"; } //await Service._userManager.SendEmailAsync(viewInvoiceModel.buyer, "Thông tin đơn hàng", ); response = new Response("201", "Hóa đơn đã được thêm", products); return(Content <Response>(HttpStatusCode.Created, response)); }
public void Remove(InvoiceProducts entity) { throw new NotImplementedException(); }