Пример #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);
        }
Пример #2
0
        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());
        }
Пример #3
0
        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));
        }
Пример #4
0
        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));
        }
Пример #5
0
        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));
        }
Пример #6
0
        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));
        }
Пример #7
0
        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);
            }
        }
Пример #8
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));
        }