// GET: EntrySlipItems/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            EntrySlipItem entrySlipItem = db.EntrySlipItems.Find(id);

            if (entrySlipItem == null)
            {
                return(HttpNotFound());
            }
            return(View(entrySlipItem));
        }
        // GET: EntrySlipItems/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            EntrySlipItem entrySlipItem = db.EntrySlipItems.Find(id);

            if (entrySlipItem == null)
            {
                return(HttpNotFound());
            }
            ViewBag.EntrySlipId = new SelectList(db.EntrySlips, "Id", "Name", entrySlipItem.EntrySlipId);
            ViewBag.ProductId   = new SelectList(db.Products, "Id", "Name", entrySlipItem.ProductId);
            return(View(entrySlipItem));
        }
        public ActionResult DeleteConfirmed(int id)
        {
            EntrySlipItem entrySlipItem = db.EntrySlipItems.Find(id);

            db.EntrySlipItems.Remove(entrySlipItem);

            var stockitem = db.StockItems.Where(x => x.ProductId == entrySlipItem.ProductId)
                            .FirstOrDefault();

            stockitem.Quantity -= entrySlipItem.Quantity;
            db.SaveChanges();

            db.Entry(stockitem).State = EntityState.Modified;
            db.SaveChanges();

            return(RedirectToAction("Index"));
        }
        public ActionResult Create(
            [Bind(Include = "Id,Quantity,Price,Description,RpsId,ProductId")] EntrySlipItem entrySlipItem,
            FormCollection collection)
        {
            if (ModelState.IsValid)
            {
                #region Conticue Click
                if (Request.Form["btnContinue"] != null)
                {
                    GetEntrySlipId();
                    entrySlipItem.EntrySlipId = int.Parse(Session["EntrySlipId"].ToString());
                    DoStock(entrySlipItem);

                    return(RedirectToAction("Create"));
                }
                #endregion

                #region Save Click
                if (Request.Form["btnSave"] != null)
                {
                    GetEntrySlipId();
                    entrySlipItem.EntrySlipId = int.Parse(Session["EntrySlipId"].ToString());
                    DoStock(entrySlipItem);
                    return(RedirectToAction("Edit", "EntrySlips",
                                            new { Id = int.Parse(Session["EntrySlipId"].ToString()) }));
                }
                #endregion

                #region Cancel Click
                if (Request.Form["btnCancel"] != null)
                {
                    Session["EntrySlipId"] = null;
                    return(RedirectToAction("Index", "EntrySlips"));
                }
                #endregion
            }

            ViewBag.EntrySlipId = new SelectList(db.EntrySlips, "Id", "CreatedDate", entrySlipItem.EntrySlipId);
            ViewBag.ProductId   = new SelectList(db.Products, "Id", "Name", entrySlipItem.ProductId);
            return(View(entrySlipItem));
        }
        public ActionResult Edit([Bind(Include = "Id,Quantity,Price,Description,EntrySlipId,RpsId,ProductId")] EntrySlipItem entrySlipItem)
        {
            if (ModelState.IsValid)
            {
                db.Entry(entrySlipItem).State = EntityState.Modified;

                int dif = entrySlipItem.Quantity - db.EntrySlipItems.
                          Where(x => x.Id == entrySlipItem.Id)
                          .Select(x => x.Quantity).FirstOrDefault();

                db.SaveChanges();

                var stockitem = db.StockItems.
                                FirstOrDefault(x => x.ProductId == entrySlipItem.ProductId);
                stockitem.Quantity       += dif;
                db.Entry(stockitem).State = EntityState.Modified;
                db.SaveChanges();

                return(RedirectToAction("Index"));
            }
            ViewBag.EntrySlipId = new SelectList(db.EntrySlips, "Id", "Name", entrySlipItem.EntrySlipId);
            ViewBag.ProductId   = new SelectList(db.Products, "Id", "Name", entrySlipItem.ProductId);
            return(View(entrySlipItem));
        }
        private void DoStock(EntrySlipItem entrySlipItem)
        {
            db.EntrySlipItems.Add(entrySlipItem);
            db.SaveChanges();

            var stockItem = db.StockItems.Where(x => x.ProductId == entrySlipItem.ProductId).FirstOrDefault();

            if (stockItem != null)
            {
                stockItem.Quantity       += entrySlipItem.Quantity;
                db.Entry(stockItem).State = EntityState.Modified;
                db.SaveChanges();
            }
            else
            {
                StockItem st = new StockItem()
                {
                    ProductId = entrySlipItem.ProductId,
                    Quantity  = entrySlipItem.Quantity
                };
                db.StockItems.Add(st);
                db.SaveChanges();
            }
        }