private bool UndoOrder(int orderId, MerchandiseOrderStatus status) { bool retValue = true; using (MTCDbContext db = new MTCDbContext()) { MerchandiseOrder order = db.MerchandiseOrders.Find(orderId); if (order != null) { AuditMerchandiseOrder(order); order.MerchandiseOrderStatus = status; order.ModifiedBy = HttpContext.User.Identity.Name; order.ModifiedOn = DateTime.Now; //re-stock inventory var orderProducts = db.MerchandiseOrderDetails.Where(p => p.MerchandiseOrderId == orderId).ToList(); foreach (var orderProduct in orderProducts) { MerchandiseProduct dbproduct = db.MerchandiseProducts.Find(orderProduct.MerchandiseProductId); if (dbproduct != null) { dbproduct.UnitsInStock += orderProduct.Quantity; } } db.SaveChanges(); SendEmails(order, true); } } return(retValue); }
public static string BuildMerchandiseProductLowInventoryEmailBody(MerchandiseProduct product) { var sb = new StringBuilder(); sb.Append("<h3>Low inventory for " + product.DisplayName + "</h3>"); sb.Append("<table>"); sb.Append("<tr>"); sb.Append("<td>Product ID</td>"); sb.Append("<td>" + product.Id + "</td>"); sb.Append("</tr>"); sb.Append("<tr>"); sb.Append("<td>Display Name</td>"); sb.Append("<td>" + product.DisplayName + "</td>"); sb.Append("</tr>"); sb.Append("<tr>"); sb.Append("<td>Current Inventory Level</td>"); sb.Append("<td>" + product.UnitsInStock + "</td>"); sb.Append("</tr>"); sb.Append("</table>"); using (MTCDbContext d = new MTCDbContext()) { sb.Append("For further details of this product, please click <a href='" + d.MTCApplicationSettings.Where(p => p.Name == "WebRoot").FirstOrDefault().Value + "/MerchandiseProducts/Edit?id=" + product.Id + "' target='_blank'>here</a>."); } return(sb.ToString()); }
public async Task <ActionResult> MoveDown(int id) { //Product2 OrderNumber = 3 //Product1 OrderNumber = 4 MerchandiseProduct Product2 = await db.MerchandiseProducts.FindAsync(id); MerchandiseProduct Product1 = null; var counter = 0; var newOrderValue = Product2.OrderNumber; do { counter++; newOrderValue = newOrderValue + counter; Product1 = await db.MerchandiseProducts.FirstOrDefaultAsync(p => p.OrderNumber == newOrderValue); } while (Product1 == null); Product1.OrderNumber = Product2.OrderNumber; Product2.OrderNumber = newOrderValue; await db.SaveChangesAsync(); this.FixOrderNumbers(); return(Json(true, JsonRequestBehavior.AllowGet)); }
public async Task <ActionResult> Delete(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } MerchandiseProduct merchandiseProduct = await db.MerchandiseProducts.FindAsync(id); if (merchandiseProduct == null) { return(HttpNotFound()); } return(View(merchandiseProduct)); }
public async Task <ActionResult> Edit([Bind(Include = "Id,DisplayName,Description,UnitCost,UnitsInStock,MerchandiseProductSizeId,CreatedOn,CreatedBy,OrderNumber")] MerchandiseProduct merchandiseProduct) { if (ModelState.IsValid) { merchandiseProduct.ModifiedBy = HttpContext.User.Identity.Name; merchandiseProduct.ModifiedOn = DateTime.Now; db.Entry(merchandiseProduct).State = EntityState.Modified; await db.SaveChangesAsync(); return(RedirectToAction("IndexNG")); } ViewBag.Sizes = new SelectList(db.MerchandiseProductSizes, "Id", "Size", merchandiseProduct.MerchandiseProductSizeId); return(View(merchandiseProduct)); }
public async Task <ActionResult> Edit(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } MerchandiseProduct merchandiseProduct = await db.MerchandiseProducts.FindAsync(id); if (merchandiseProduct == null) { return(HttpNotFound()); } ViewBag.Sizes = new SelectList(db.MerchandiseProductSizes, "Id", "Size", merchandiseProduct.MerchandiseProductSizeId); return(View(merchandiseProduct)); }
private void SendLowInventoryNotificationEmail(MerchandiseProduct product) { using (MTCDbContext db = new MTCDbContext()) { var emailBody = EmailManager.BuildMerchandiseProductLowInventoryEmailBody(product); var subject = product.DisplayName + " Low Inventory Notification"; MTCEmailRecipient mtcRecipient = new MTCEmailRecipient { Email = Utilities.GetApplicationSettingValue("MerchandiseOrderFormRecipient"), Name = Utilities.GetApplicationSettingValue("MerchandiseOrderFormRecipientName") }; List <MTCEmailRecipient> mtcRecipients = new List <MTCEmailRecipient> { mtcRecipient }; EmailManager.SendEmail(mtcRecipients, subject, emailBody, null); } }
public ActionResult SubmitOrder(MerchandiseOrderViewModel model) { int retValue = 0; //Update Inventory Level //Send Email //Persist data if (model != null) { if (model.Products != null && model.Products.Any()) { using (MTCDbContext db = new MTCDbContext()) { MerchandiseOrder order = new MerchandiseOrder(); order.ContactName = model.ContactName; order.ContactNumber = model.ContactNumber; order.ContractorId = model.ContractorId; order.CreatedBy = HttpContext.User.Identity.Name; order.CreatedOn = DateTime.Now; order.PickupDate = model.PickupDate; order.PickupTime = model.PickupTime; order.MerchandiseOrderStatus = MerchandiseOrderStatus.OrderSubmitted; if (model.PaymentType == "check") { order.PayByCheck = true; } else { order.DeductFromInvoice = true; } db.MerchandiseOrders.Add(order); db.SaveChanges(); foreach (var product in model.Products) { MerchandiseOrderDetail orderDetail = new MerchandiseOrderDetail(); orderDetail.MerchandiseOrderId = order.Id; orderDetail.MerchandiseProductId = product.Id; orderDetail.Quantity = product.Quantity; orderDetail.UnitCost = product.UnitCost; db.MerchandiseOrderDetails.Add(orderDetail); //update inventory levels MerchandiseProduct dbproduct = db.MerchandiseProducts.Find(product.Id); if (dbproduct != null) { dbproduct.UnitsInStock -= product.Quantity; } db.SaveChanges(); CheckInventoryLevels(product.Id); } retValue = order.Id; SendEmails(order, false); } } } return(Json(retValue.ToString().PadLeft(8, "0"[0]), JsonRequestBehavior.AllowGet)); }