public async Task <ActionResult> Edit(SaleDetailTmp saleDetailTmp) { if (ModelState.IsValid) { var product = await db.Products.FindAsync(saleDetailTmp.ProductId); if (product == null) { return(HttpNotFound()); } if (saleDetailTmp.Quantity >= product.QuantityDiscount) { saleDetailTmp.PercentDiscount = product.PercentDiscount; } else { saleDetailTmp.PercentDiscount = 0; } db.Entry(saleDetailTmp).State = EntityState.Modified; await db.SaveChangesAsync(); return(RedirectToAction("ShowCar")); } return(View(saleDetailTmp)); }
public async Task <IActionResult> AddProduct(SaleDetailTmpViewModel view) { var user = await _dataContext.Users.Where(u => u.UserName == User.Identity.Name).FirstOrDefaultAsync(); if (ModelState.IsValid) { var saleDetailTmp = _dataContext.SaleDetailTmps.Where(sdt => sdt.Username == User.Identity.Name && sdt.Product.Id == view.ProductId).FirstOrDefault(); if (saleDetailTmp == null) { var product = await _dataContext.Products.FindAsync(view.ProductId); saleDetailTmp = new SaleDetailTmp { Id = view.Id, Name = product.Name, Price = view.Price, Quantity = view.Quantity, Username = User.Identity.Name, Product = await _dataContext.Products.FindAsync(view.ProductId) }; _dataContext.SaleDetailTmps.Add(saleDetailTmp); } else { saleDetailTmp.Quantity += view.Quantity; _dataContext.Entry(saleDetailTmp).State = EntityState.Modified; } await _dataContext.SaveChangesAsync(); return(RedirectToAction("Create")); } view.Products = _combosHelper.GetComboProducts(); return(View(view)); }
public async Task <ActionResult> AddToCar(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } var product = await this.db.Products.FindAsync(id); if (product == null) { return(HttpNotFound()); } var customer = await db.Customers. Where(c => c.Email.ToLower().Equals(User.Identity.Name.ToLower())). FirstOrDefaultAsync(); if (customer == null) { return(HttpNotFound()); } var saleDetailTmp = await db.SaleDetailTmps. Where(sdt => sdt.CustomerId == customer.CustomerId && sdt.ProductId == product.ProductId). FirstOrDefaultAsync(); if (saleDetailTmp == null) { saleDetailTmp = new SaleDetailTmp { CustomerId = customer.CustomerId, Name = product.Name, PercentDiscount = 0, Price = product.Price, ProductId = product.ProductId, Quantity = 1, }; db.SaleDetailTmps.Add(saleDetailTmp); } else { saleDetailTmp.Quantity++; db.Entry(saleDetailTmp).State = EntityState.Modified; } if (saleDetailTmp.Quantity >= product.QuantityDiscount) { saleDetailTmp.PercentDiscount = product.PercentDiscount; } await db.SaveChangesAsync(); return(RedirectToAction("Index2")); }
public async Task <ActionResult> AddNewToCar() { ViewBag.ProductId = new SelectList(await this.GetProducts(), "ProductId", "Name"); var view = new SaleDetailTmp { Quantity = 1 }; return(View(view)); }
public async Task <ActionResult> AddNewToCar(SaleDetailTmp saleDetailTmp) { if (ModelState.IsValid) { var customer = await db.Customers. Where(c => c.Email.ToLower().Equals(User.Identity.Name.ToLower())). FirstOrDefaultAsync(); if (customer == null) { return(HttpNotFound()); } var saleDetailTmpOld = await db.SaleDetailTmps. Where(sdt => sdt.CustomerId == customer.CustomerId && sdt.ProductId == saleDetailTmp.ProductId). FirstOrDefaultAsync(); var product = await db.Products.FindAsync(saleDetailTmp.ProductId); if (saleDetailTmpOld == null) { saleDetailTmp.CustomerId = customer.CustomerId; saleDetailTmp.Name = product.Name; saleDetailTmp.Price = product.Price; if (saleDetailTmp.Quantity >= product.QuantityDiscount) { saleDetailTmp.PercentDiscount = product.PercentDiscount; } db.SaleDetailTmps.Add(saleDetailTmp); } else { saleDetailTmpOld.Quantity += saleDetailTmp.Quantity; if (saleDetailTmpOld.Quantity >= product.QuantityDiscount) { saleDetailTmpOld.PercentDiscount = product.PercentDiscount; } db.Entry(saleDetailTmpOld).State = EntityState.Modified; } await db.SaveChangesAsync(); return(RedirectToAction("ShowCar")); } ViewBag.ProductId = new SelectList(await this.GetProducts(), "ProductId", "Name"); return(View(saleDetailTmp)); }
public ActionResult AddProduct(AddProductView view) { var user = db.Users.Where(u => u.UserName == User.Identity.Name).FirstOrDefault(); if (ModelState.IsValid) { var SaleDetailTmp = db.SaleDetailTmps.Where(sdt => sdt.UserName == User.Identity.Name && sdt.ProductId == view.ProductId).FirstOrDefault(); if (SaleDetailTmp == null) { var product = db.Products.Find(view.ProductId); SaleDetailTmp = new SaleDetailTmp { Description = product.Description, Price = product.Price, ProductId = product.ProductId, Quantity = view.Quantity, TaxRate = product.Tax.Rate, UserName = User.Identity.Name, }; db.SaleDetailTmps.Add(SaleDetailTmp); } else { SaleDetailTmp.Quantity += view.Quantity; db.Entry(SaleDetailTmp).State = EntityState.Modified; } try { db.SaveChanges(); return(RedirectToAction("Create")); } catch (Exception ex) { ModelState.AddModelError(string.Empty, ex.Message); } } ViewBag.ProductId = new SelectList(CombosHelper.GetProducts(user.CompanyId), "ProductId", "Description"); return(PartialView()); }
public static Response SaleFromOrder(int orderId, string userName) { using (var transaccion = db.Database.BeginTransaction()) { try { var user = db.Users.Where(u => u.UserName == userName).FirstOrDefault(); var details = db.OrderDetails.Where(od => od.OrderId == orderId).ToList(); var orderDetails = db.Orders.Where(o => o.OrderId == orderId).FirstOrDefault(); if (details == null || details.Count == 0 || orderDetails == null) { return(new Response { Succeeded = false, Message = "Can not get the details of this order." }); } // If user has temp details, delete them var userOldDetails = db.SaleDetailTmps.Where(sdt => sdt.UserName == userName).ToList(); foreach (var oldDetails in userOldDetails) { db.SaleDetailTmps.Remove(oldDetails); } // NOTE: This could be unnecessary foreach (var detail in details) { var saleDetailTmp = new SaleDetailTmp { Description = detail.Description, Price = detail.Price, ProductId = detail.ProductId, Quantity = detail.Quantity, TaxRate = detail.TaxRate, UserName = userName, OrderId = orderId, }; db.SaleDetailTmps.Add(saleDetailTmp); } db.SaveChanges(); transaccion.Commit(); return(new Response { Succeeded = true, CustomerId = orderDetails.CustomerId, Date = orderDetails.Date, Remarks = orderDetails.Remarks }); } catch (Exception ex) { transaccion.Rollback(); if (ex.InnerException != null && ex.InnerException.InnerException != null) { return(new Response { Succeeded = false, Message = ex.InnerException.InnerException.Message }); } else if (ex.InnerException != null) { return(new Response { Succeeded = false, Message = ex.InnerException.Message }); } else { return(new Response { Succeeded = false, Message = ex.Message }); } } } }