Beispiel #1
0
        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);
        }
Beispiel #2
0
        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));
        }
Beispiel #4
0
 private void AuditMerchandiseOrder(MerchandiseOrder order)
 {
     using (MTCDbContext db = new MTCDbContext())
     {
         db.MerchandiseOrderAudits.Add(new MerchandiseOrderAudit(order, DateTime.Now, HttpContext.User.Identity.Name));
         db.SaveChanges();
     }
 }
Beispiel #5
0
        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));
        }
Beispiel #6
0
        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);
            }
        }
Beispiel #7
0
        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));
        }
Beispiel #8
0
        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());
            }
        }