// GET: INV_ItemConfiguration/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            INV_ItemConfigurationViewModal iNV_ItemConfigurationViewModal = new INV_ItemConfigurationViewModal();
            INV_ItemConfiguration          iNV_ItemConfiguration          = db.INV_ItemConfiguration.Find(id);

            if (iNV_ItemConfiguration != null)
            {
                iNV_ItemConfiguration.Remarks  = "";
                iNV_ItemConfigurationViewModal = new INV_ItemConfigurationViewModal()
                {
                    ItemConfigurationID = iNV_ItemConfiguration.ItemConfigurationID,
                    MainItemID          = iNV_ItemConfiguration.MainItemID,
                    SubItemID           = iNV_ItemConfiguration.SubItemID,
                    Qunatity            = iNV_ItemConfiguration.Qunatity,
                    UserID   = iNV_ItemConfiguration.UserID,
                    Created  = iNV_ItemConfiguration.Created,
                    Modified = iNV_ItemConfiguration.Modified,
                    Remarks  = iNV_ItemConfiguration.Remarks
                };
                iNV_ItemConfigurationViewModal.SubItems = db.INV_ItemConfiguration.Where(ic => ic.MainItemID == iNV_ItemConfiguration.MainItemID).ToList();
            }

            if (iNV_ItemConfigurationViewModal == null)
            {
                return(HttpNotFound());
            }
            var items =
                db.INV_Item
                .Where(i => i.IsLock == true && i.IsConfigurable == true)
                .Select(s => new
            {
                ItemID   = s.ItemID,
                ItemName = s.ItemName + " - " + s.ItemCode
            })
                .ToList();

            ViewBag.MainItemID = new SelectList(items, "ItemID", "ItemName", iNV_ItemConfiguration.MainItemID);
            ViewBag.SubItemID  = new SelectList(db.INV_Item.Where(i => i.IsLock == true), "ItemID", "ItemName");
            ViewBag.UserID     = new SelectList(db.SEC_User, "UserID", "UserName", iNV_ItemConfiguration.UserID);
            return(View(iNV_ItemConfigurationViewModal));
        }
        // GET: INV_ItemConfiguration/Create
        public ActionResult Create()
        {
            var items =
                db.INV_Item
                .Where(i => i.IsLock == true && i.IsConfigurable == true)
                .Select(s => new
            {
                ItemID   = s.ItemID,
                ItemName = s.ItemName + " - " + s.ItemCode
            })
                .ToList();

            ViewBag.MainItemID = new SelectList(items, "ItemID", "ItemName");
            ViewBag.SubItemID  = new SelectList(db.INV_Item.Where(i => i.IsLock == true), "ItemID", "ItemName");
            ViewBag.UserID     = new SelectList(db.SEC_User, "UserID", "UserName");
            INV_ItemConfigurationViewModal _iNV_ItemConfigurationViewModal = new INV_ItemConfigurationViewModal();

            ViewData["errorConfig"] = TempData["errorConfig"];
            return(View("Edit", _iNV_ItemConfigurationViewModal));
        }
        public ActionResult Create(INV_ItemConfiguration iNV_ItemConfiguration)
        {
            //if (db.INV_ItemConfiguration.Where(I => I.MainItemID == iNV_ItemConfiguration.MainItemID).Count() > 0)
            //{
            //    ModelState.AddModelError("ItemNameDuplicate", "Selected item is already configured.");
            //}

            if (iNV_ItemConfiguration.ItemConfigurationID > 0)
            {
                if (iNV_ItemConfiguration.Remarks == null || iNV_ItemConfiguration.Remarks == "")
                {
                    var items =
                        db.INV_Item
                        .Where(i => i.IsLock == true && i.IsConfigurable == true)
                        .Select(s => new
                    {
                        ItemID   = s.ItemID,
                        ItemName = s.ItemName + " - " + s.ItemCode
                    })
                        .ToList();
                    iNV_ItemConfiguration.INV_Items = db.INV_ItemConfiguration.Where(ic => ic.MainItemID == iNV_ItemConfiguration.MainItemID).ToList();
                    ViewBag.MainItemID = new SelectList(items, "ItemID", "ItemName", iNV_ItemConfiguration.MainItemID);
                    ViewBag.SubItemID  = new SelectList(db.INV_Item.Where(i => i.IsLock == true), "ItemID", "ItemName");
                    ViewBag.UserID     = new SelectList(db.SEC_User, "UserID", "UserName", iNV_ItemConfiguration.UserID);
                    ModelState.AddModelError("", "Enter Remarks");
                    return(View(iNV_ItemConfiguration));
                }
            }

            if (iNV_ItemConfiguration.INV_Items != null)
            {
                if (ModelState.IsValid)
                {
                    iNV_ItemConfiguration.Modified = DateTime.Now;
                    if (Session["UserID"] != null)
                    {
                        iNV_ItemConfiguration.UserID = Convert.ToInt16(Session["UserID"].ToString());
                    }
                    var ToRemovedbINV_ItemConfiguration = db.INV_ItemConfiguration.Where(i => i.MainItemID == iNV_ItemConfiguration.MainItemID).ToList();
                    db.INV_ItemConfiguration.RemoveRange(ToRemovedbINV_ItemConfiguration);
                    db.SaveChanges();
                    String Err = "";
                    List <INV_ItemConfiguration> newINV_ItemConfiguration = new List <INV_ItemConfiguration>();
                    foreach (var item in iNV_ItemConfiguration.INV_Items)
                    {
                        if (item.Qunatity <= 0)
                        {
                            INV_Item _Subitem = db.INV_Item.Find(item.SubItemID);
                            if (_Subitem != null)
                            {
                                if (Err == "")
                                {
                                    Err = "Enter Valid Quantity for " + _Subitem.ItemName;
                                }
                                else
                                {
                                    Err += ", Enter Valid Quantity for " + _Subitem.ItemName;
                                }
                            }
                        }
                        INV_ItemConfiguration new_INV_InvoiceItem = new INV_ItemConfiguration();
                        new_INV_InvoiceItem.MainItemID = iNV_ItemConfiguration.MainItemID;
                        new_INV_InvoiceItem.SubItemID  = item.SubItemID;
                        new_INV_InvoiceItem.Qunatity   = item.Qunatity;
                        new_INV_InvoiceItem.Created    = DateTime.Now;
                        new_INV_InvoiceItem.Modified   = DateTime.Now;
                        new_INV_InvoiceItem.UserID     = iNV_ItemConfiguration.UserID;
                        new_INV_InvoiceItem.Remarks    = iNV_ItemConfiguration.Remarks;
                        newINV_ItemConfiguration.Add(new_INV_InvoiceItem);
                    }
                    if (Err != "")
                    {
                        var items =
                            db.INV_Item
                            .Where(i => i.IsLock == true && i.IsConfigurable == true)
                            .Select(s => new
                        {
                            ItemID   = s.ItemID,
                            ItemName = s.ItemName + " - " + s.ItemCode
                        })
                            .ToList();

                        ViewBag.MainItemID      = new SelectList(items, "ItemID", "ItemName");
                        ViewBag.SubItemID       = new SelectList(db.INV_Item.Where(i => i.IsLock == true), "ItemID", "ItemName");
                        ViewBag.UserID          = new SelectList(db.SEC_User, "UserID", "UserName");
                        TempData["errorConfig"] = Err;
                        return(View(iNV_ItemConfiguration));
                    }

                    db.INV_ItemConfiguration.AddRange(newINV_ItemConfiguration);
                    db.SaveChanges();
                }
            }
            var itemsa =
                db.INV_Item
                .Where(i => i.IsLock == true && i.IsConfigurable == true)
                .Select(s => new
            {
                ItemID   = s.ItemID,
                ItemName = s.ItemName + " - " + s.ItemCode
            })
                .ToList();

            ViewBag.MainItemID = new SelectList(itemsa, "ItemID", "ItemName");
            ViewBag.SubItemID  = new SelectList(db.INV_Item.Where(i => i.IsLock == true), "ItemID", "ItemName");
            ViewBag.UserID     = new SelectList(db.SEC_User, "UserID", "UserName");
            INV_ItemConfigurationViewModal iNV_ItemConfigurationViewModal = new INV_ItemConfigurationViewModal();

            ViewData["errorConfig"] = TempData["errorConfig"];
            return(View("Edit", iNV_ItemConfigurationViewModal));
        }
        public ActionResult Edit(INV_ItemConfigurationViewModal iNV_ItemConfigurationViewModal)
        {
            if (iNV_ItemConfigurationViewModal.ItemConfigurationID > 0)
            {
                if (iNV_ItemConfigurationViewModal.Remarks == null || iNV_ItemConfigurationViewModal.Remarks == "")
                {
                    var items =
                        db.INV_Item
                        .Where(i => i.IsLock == true && i.IsConfigurable == true)
                        .Select(s => new
                    {
                        ItemID   = s.ItemID,
                        ItemName = s.ItemName + " - " + s.ItemCode
                    })
                        .ToList();
                    iNV_ItemConfigurationViewModal.SubItems = db.INV_ItemConfiguration.Where(ic => ic.MainItemID == iNV_ItemConfigurationViewModal.MainItemID).ToList();
                    ViewBag.MainItemID = new SelectList(items, "ItemID", "ItemName", iNV_ItemConfigurationViewModal.MainItemID);
                    ViewBag.SubItemID  = new SelectList(db.INV_Item.Where(i => i.IsLock == true), "ItemID", "ItemName");
                    ViewBag.UserID     = new SelectList(db.SEC_User, "UserID", "UserName", iNV_ItemConfigurationViewModal.UserID);
                    ModelState.AddModelError("", "Enter Remarks");
                    return(View(iNV_ItemConfigurationViewModal));
                }
            }

            if (iNV_ItemConfigurationViewModal.SubItems.Count > 0)
            {
                if (ModelState.IsValid)
                {
                    INV_ItemConfiguration iNV_ItemConfiguration = db.INV_ItemConfiguration.Find(iNV_ItemConfigurationViewModal.ItemConfigurationID);

                    db.Entry(iNV_ItemConfiguration).State = EntityState.Modified;
                    iNV_ItemConfiguration.Modified        = DateTime.Now;
                    if (Session["UserID"] != null)
                    {
                        iNV_ItemConfiguration.UserID = Convert.ToInt16(Session["UserID"].ToString());
                    }
                    String Err = "";
                    TempData["errorIssue"] = "";
                    List <INV_ItemConfiguration> newINV_ItemConfiguration = new List <INV_ItemConfiguration>();
                    foreach (var item in iNV_ItemConfiguration.INV_Items)
                    {
                        if (item.Qunatity <= 0)
                        {
                            INV_Item _Subitem = db.INV_Item.Find(item.SubItemID);
                            if (_Subitem != null)
                            {
                                if (Err == "")
                                {
                                    Err = "Enter Valid Quantity for " + _Subitem.ItemName;
                                }
                                else
                                {
                                    Err += ", Enter Valid Quantity for " + _Subitem.ItemName;
                                }
                            }
                        }
                        INV_ItemConfiguration new_INV_InvoiceItem = new INV_ItemConfiguration();
                        new_INV_InvoiceItem.MainItemID = iNV_ItemConfiguration.MainItemID;
                        new_INV_InvoiceItem.SubItemID  = item.SubItemID;
                        new_INV_InvoiceItem.Qunatity   = item.Qunatity;
                        new_INV_InvoiceItem.Created    = DateTime.Now;
                        new_INV_InvoiceItem.Modified   = DateTime.Now;

                        INV_ItemConfiguration dbINV_ItemConfiguration = db.INV_ItemConfiguration.Where(i => i.MainItemID == item.MainItemID & i.SubItemID == item.SubItemID).FirstOrDefault();
                        if (dbINV_ItemConfiguration == null)
                        {
                            newINV_ItemConfiguration.Add(new_INV_InvoiceItem);
                        }
                    }
                    if (Err != "")
                    {
                        var items =
                            db.INV_Item
                            .Where(i => i.IsLock == true && i.IsConfigurable == true)
                            .Select(s => new
                        {
                            ItemID   = s.ItemID,
                            ItemName = s.ItemName + " - " + s.ItemCode
                        })
                            .ToList();

                        ViewBag.MainItemID      = new SelectList(items, "ItemID", "ItemName");
                        ViewBag.SubItemID       = new SelectList(db.INV_Item.Where(i => i.IsLock == true), "ItemID", "ItemName");
                        ViewBag.UserID          = new SelectList(db.SEC_User, "UserID", "UserName");
                        TempData["errorConfig"] = Err;
                        return(View(iNV_ItemConfiguration));
                    }
                    db.INV_ItemConfiguration.AddRange(newINV_ItemConfiguration);
                    db.SaveChanges();
                    return(RedirectToAction("Index"));
                }
            }

            ViewBag.MainItemID = new SelectList(db.INV_Item.Where(i => i.IsLock == true && i.IsConfigurable == true), "ItemID", "ItemName");
            ViewBag.SubItemID  = new SelectList(db.INV_Item.Where(i => i.IsLock == true), "ItemID", "ItemName");
            ViewBag.UserID     = new SelectList(db.SEC_User, "UserID", "UserName", iNV_ItemConfigurationViewModal.UserID);
            return(RedirectToAction("Index"));
        }