using System; using System.Collections.Generic; using System.Data; using System.Data.Entity; using System.Linq; using System.Net; using System.Web; using System.Web.Mvc; using StockManMVC.Models; using System.Threading.Tasks; using System.Web.Configuration; namespace StockManMVC.Controllers { public class MagStatusController : Controller { private StockManEntities db = new StockManEntities(); // GET: MagStatus public ActionResult Index(string LocationID_SX, string LocationID_DX) { var vLocationVal = db.vLocationVal.Include(v => v.Location); if (LocationID_SX == null) LocationID_SX = ""; if (LocationID_DX == null) LocationID_DX = ""; ViewBag.SelSX = LocationID_SX; ViewBag.SelDX = LocationID_DX; // i 2 selettori... ViewBag.LocationID_SX = new SelectList(db.Location.Where(o => o.LocType.IsStock), "ID", "Descr", LocationID_SX); ViewBag.LocationID_DX = new SelectList(db.Location.Where(o => o.LocType.IsStock), "ID", "Descr", LocationID_DX); // url del report... ViewBag.UrlReportGiacenza = string.Format("{0}{1}", WebConfigurationManager.AppSettings["RepServUrl"], WebConfigurationManager.AppSettings["UrlGiacMag"]); ViewBag.UrlReportOut = string.Format("{0}{1}", WebConfigurationManager.AppSettings["RepServUrl"], WebConfigurationManager.AppSettings["UrlOutMag"]); ViewBag.UrlReportMov = string.Format("{0}{1}", WebConfigurationManager.AppSettings["RepServUrl"], WebConfigurationManager.AppSettings["UrlMovMag"]); return View(vLocationVal.ToList()); } // GET: MagStatus/StockByLocation public ActionResult StockByLocation(string LocationID, string LocationIDTo, bool? ShowMove) { var CurrStock = db.ItemStock .Where(s => s.QtyConf > 0 && s.LocationID == LocationID) .Include(v => v.Location) .Include(s => s.Item); if (ShowMove == null) ShowMove = false; ViewBag.LocationID = LocationID; ViewBag.LocationIDTo = LocationIDTo; ViewBag.ShowMove = ShowMove; return PartialView("_StockByLocation", CurrStock.ToList()); } [HttpGet] // GET: MagStatus/MoveConfirm public ActionResult MoveConfirm(int ID, string LocationID, string LocationIDTo) { ItemStock itemStock = db.ItemStock.Find(ID); ViewBag.LocationID = LocationID; ViewBag.LocationIDTo = LocationIDTo; return PartialView("_confirmMove", itemStock); } [HttpPost] [ValidateAntiForgeryToken] public ActionResult MoveConfirm(int ID, string LocationID, string LocationIDTo, [Bind(Include = "QtyConf")] ItemStock itemSt) { // recupero operatore... IEnumerable listOper = OperatorsController.Select(User.Identity.Name); string currOperID = "ND"; if (listOper.Count() == 1) { currOperID = listOper.First().ID; } // chiamo la stored x il move int rowMod = 0; using (var ctx = new StockManEntities()) { // recupero itemStock riferimento ItemStock itmStock = ctx.ItemStock.Find(ID); // se ho quantità != completa --> uso altra stored... if (itemSt.QtyConf != itmStock.QtyConf) { // esegue stored procedure come function che cambia e sposta qta paziali rowMod = ctx.stp_ItemStockMove_New(ID, LocationID, LocationIDTo, currOperID, itemSt.QtyConf); } else { // esegue stored procedure come function, sposta TUTTO rowMod = ctx.stp_ItemStockMove(ID, LocationID, LocationIDTo, currOperID); } } // appoggio variabili string SelSX = LocationID; string SelDX = LocationIDTo; // restituisco la view principale... return RedirectToAction("Index", new { LocationID_SX = SelSX, LocationID_DX = SelDX }); } protected override void Dispose(bool disposing) { if (disposing) { db.Dispose(); } base.Dispose(disposing); } } }