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 ActionResult SaveOrder(MerchandiseOrder model) { bool retValue = true; if (model != null) { using (MTCDbContext db = new MTCDbContext()) { MerchandiseOrder order = db.MerchandiseOrders.Find(model.Id); if (order != null) { AuditMerchandiseOrder(order); order.ContactName = model.ContactName; order.ContactNumber = model.ContactNumber; order.PickupDate = model.PickupDate; order.PickupTime = model.PickupTime; order.ReceivedBy = model.ReceivedBy; order.ReceivedOn = model.ReceivedOn; order.Comment = model.Comment; order.ModifiedBy = HttpContext.User.Identity.Name; order.ModifiedOn = DateTime.Now; db.SaveChanges(); SendEmails(order, true); } } } return(Json(retValue, JsonRequestBehavior.AllowGet)); }
public async Task <ActionResult <Merchandise> > PostMerchandiseOrder(MerchandiseOrder merchandiseOrder) { m_context.MerchandiseOrders.Add(merchandiseOrder); await m_context.SaveChangesAsync(); return(CreatedAtAction("GetMerchandiseOrder", new { id = merchandiseOrder.Id }, merchandiseOrder)); }
private void AuditMerchandiseOrder(MerchandiseOrder order) { using (MTCDbContext db = new MTCDbContext()) { db.MerchandiseOrderAudits.Add(new MerchandiseOrderAudit(order, DateTime.Now, HttpContext.User.Identity.Name)); db.SaveChanges(); } }
public ActionResult FulFillOrder(int orderId) { bool retValue = true; using (MTCDbContext db = new MTCDbContext()) { MerchandiseOrder order = db.MerchandiseOrders.Find(orderId); if (order != null) { AuditMerchandiseOrder(order); order.MerchandiseOrderStatus = MerchandiseOrderStatus.OrderFilled; order.ModifiedBy = HttpContext.User.Identity.Name; order.ModifiedOn = DateTime.Now; db.SaveChanges(); SendEmails(order, true); } } return(Json(retValue, JsonRequestBehavior.AllowGet)); }
private void SendEmails(MerchandiseOrder order, bool isUpdate) { var contractCompanyName = string.Empty; using (MTCDBEntities db = new MTCDBEntities()) { contractCompanyName = db.Contractors.FirstOrDefault(p => p.ContractorID == order.ContractorId).ContractCompanyName; } var emailBody = EmailManager.BuildMerchandiseOrderEmailBody(order, isUpdate); var recipientSubject = contractCompanyName + " " + (isUpdate ? " Order Change" : " Order Confirmation"); var mtcSubject = contractCompanyName + " " + (isUpdate ? " Order Change Confirmation" : " New Merchandise Order"); MTCEmailRecipient toRecipient = new MTCEmailRecipient { Email = order.CreatedBy, Name = "" }; List <MTCEmailRecipient> toRecipients = new List <MTCEmailRecipient> { toRecipient }; EmailManager.SendEmail(toRecipients, recipientSubject, emailBody, null); //One email to main MTC recipient using (MTCDbContext db = new MTCDbContext()) { MTCEmailRecipient mtcRecipient = new MTCEmailRecipient { Email = Utilities.GetApplicationSettingValue("MerchandiseOrderFormRecipient"), Name = Utilities.GetApplicationSettingValue("MerchandiseOrderFormRecipientName") }; List <MTCEmailRecipient> mtcRecipients = new List <MTCEmailRecipient> { mtcRecipient }; EmailManager.SendEmail(mtcRecipients, mtcSubject, 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)); }
public static string BuildMerchandiseOrderEmailBody(MerchandiseOrder order, bool isUpdate) { using (MTCDBEntities db = new MTCDBEntities()) { var sb = new StringBuilder(); var contractCompanyName = db.Contractors.FirstOrDefault(p => p.ContractorID == order.ContractorId).ContractCompanyName; #region sb.Append("<h3>Merchandise Order Summary</h3>"); if (isUpdate) { sb.Append("<h4>Your original order has been changed</h4>"); } sb.Append("<table>"); sb.Append("<tr>"); sb.Append("<td>Order ID</td>"); sb.Append("<td>" + order.Id + "</td>"); sb.Append("</tr>"); sb.Append("<tr>"); sb.Append("<td>Contractor</td>"); sb.Append("<td>" + contractCompanyName + "</td>"); sb.Append("</tr>"); sb.Append("<tr>"); sb.Append("<td>Contact Name</td>"); sb.Append("<td>" + order.ContactName + "</td>"); sb.Append("</tr>"); sb.Append("<tr>"); sb.Append("<td>Contact Number</td>"); sb.Append("<td>" + order.ContactNumber + "</td>"); sb.Append("</tr>"); sb.Append("<tr>"); sb.Append("<td>Pick-up Date</td>"); sb.Append("<td>" + order.PickupDate.ToShortDateString() + "</td>"); sb.Append("</tr>"); //sb.Append("<tr>"); //sb.Append("<td>Pick-up Time</td>"); //sb.Append("<td>" + (order.PickupTime == "911" ? "9-11 AM" : "1-5 PM") + "</td>"); //sb.Append("</tr>"); sb.Append("<tr>"); sb.Append("<td>Pick-up Time</td>"); var amOrPm = "PM"; if (order.PickupTime == "9" || order.PickupTime == "10" || order.PickupTime == "11") { amOrPm = "AM"; } sb.Append("<td>" + order.PickupTime + " " + amOrPm + "</td>"); sb.Append("</tr>"); sb.Append("<tr>"); sb.Append("<td>Payment</td>"); sb.Append("<td>" + (order.PayByCheck ? "Check" : "Deduct from Invoice") + "</td>"); sb.Append("</tr>"); sb.Append("<tr>"); sb.Append("<td>Order Status</td>"); if (order.MerchandiseOrderStatus == MerchandiseOrderStatus.OrderCancelled) { sb.Append("<td>Cancelled</td>"); } else if (order.MerchandiseOrderStatus == MerchandiseOrderStatus.OrderDeclined) { sb.Append("<td>Decline</td>"); } else if (order.MerchandiseOrderStatus == MerchandiseOrderStatus.OrderFilled) { sb.Append("<td>Filled</td>"); } else if (order.MerchandiseOrderStatus == MerchandiseOrderStatus.OrderSubmitted) { sb.Append("<td>Submitted</td>"); } sb.Append("</tr>"); sb.Append("<tr>"); sb.Append("<td>Comments</td>"); sb.Append("<td>" + order.Comment + "</td>"); sb.Append("</tr>"); sb.Append("</table>"); sb.Append("</br>"); #endregion using (MTCDbContext d = new MTCDbContext()) { sb.Append("For details of this order, please click <a href='" + d.MTCApplicationSettings.Where(p => p.Name == "WebRoot").FirstOrDefault().Value + "/Merchandise/OrderHistory' target='_blank'>here</a>."); } return(sb.ToString()); } }