Example #1
0
        // GET: Invoices/SelectItems
        public ActionResult SelectItems(int?id, int?Quantity)
        {
            var invoiceItems = new List <Lineitem>();

            // load items from session
            if (Session["InvoiceItems"] != null)
            {
                invoiceItems = (List <Lineitem>)Session["InvoiceItems"];
            }

            if (id != null)
            {
                if (invoiceItems.SingleOrDefault(ii => ii.product_inventory_id == id) == null)
                {
                    if (Quantity > db.Product_Inventory.Find(id).unit_quantity)
                    {
                        return(RedirectToAction("Index", "SelectProductInventory", new { actionName = "SelectItems", controllerName = "Invoices", message = "Quantity requested is not available." }));
                    }
                    var li = new Lineitem();
                    li.lineitem_unit_quantity = Convert.ToInt32(Quantity);
                    li.CalculateTotal(Convert.ToInt32(id));                                         // assign product id and calculate total
                    li.ProductInventory.Product = db.Products.Find(li.ProductInventory.product_id); // assign product
                    invoiceItems.Add(li);
                }
                else
                {
                    var li = invoiceItems.SingleOrDefault(ii => ii.product_inventory_id == id);
                    if (li != null)
                    {
                        if ((Quantity + li.lineitem_unit_quantity) > db.Product_Inventory.Find(id).unit_quantity)
                        {
                            return(RedirectToAction("Index", "SelectProductInventory", new { actionName = "SelectItems", controllerName = "Invoices", message = "Quantity requested is not available." }));
                        }
                        li.lineitem_unit_quantity += Convert.ToInt32(Quantity);
                        li.CalculateTotal(Convert.ToInt32(id));
                        li.ProductInventory.Product = db.Products.Find(li.ProductInventory.product_id);
                    }
                }
            }

            Session["InvoiceItems"] = invoiceItems;

            ViewBag.ActionTitle = "Select Items for  ";
            return(View(invoiceItems));
        }