Files
StockMan/StockManMVC/Controllers/ItemsController.cs
T

248 lines
8.0 KiB
C#

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;
namespace StockManMVC.Controllers
{
public class ItemsController : Controller
{
private StockManEntities db = new StockManEntities();
/// <summary>
/// Selezione
/// </summary>
/// <param name="SearchVal"></param>
/// <returns></returns>
public static IEnumerable<Item> Select(string SearchVal)
{
StockManEntities db = new StockManEntities();
var answ = db.Item.Where(s => s.Descr.Contains(SearchVal)
|| s.DescrExt.Contains(SearchVal)
|| s.ItemFamilyID.Contains(SearchVal)
|| s.ItemFamily.Descr.Contains(SearchVal)
|| s.CodInt.Contains(SearchVal)
|| s.CodExt.Contains(SearchVal)
);
return answ;
}
/// <summary>
/// Ricerca con selezione parametri
/// </summary>
/// <param name="SearchVal"></param>
/// <param name="OrderBy"></param>
/// <param name="Sort"></param>
/// <returns></returns>
public static IEnumerable<Item> Order(string SearchVal, string OrderBy, string Sort)
{
IEnumerable<Item> answ = Select(SearchVal);
switch (OrderBy)
{
case "codint":
if (Sort == "dsc")
{
answ = answ.OrderByDescending(x => x.CodInt);
}
else
{
answ = answ.OrderBy(x => x.CodInt);
}
break;
case "codext":
if (Sort == "dsc")
{
answ = answ.OrderByDescending(x => x.CodExt);
}
else
{
answ = answ.OrderBy(x => x.CodExt);
}
break;
case "descrext":
if (Sort == "dsc")
{
answ = answ.OrderByDescending(x => x.DescrExt);
}
else
{
answ = answ.OrderBy(x => x.DescrExt);
}
break;
case "family":
if (Sort == "dsc")
{
answ = answ.OrderByDescending(x => x.ItemFamilyID);
}
else
{
answ = answ.OrderBy(x => x.ItemFamilyID);
}
break;
case "descr":
default:
if (Sort == "dsc")
{
answ = answ.OrderByDescending(x => x.Descr);
}
else
{
answ = answ.OrderBy(x => x.Descr);
}
break;
}
return answ;
//return Select(SearchVal).OrderBy(x => x.Descr);
}
/// <summary>
/// Ricerca con paginazione
/// </summary>
/// <param name="SearchVal"></param>
/// <param name="OrderBy"></param>
/// <param name="Sort"></param>
/// <param name="startRowIndex"></param>
/// <param name="maximumRows"></param>
/// <returns></returns>
public static IEnumerable<Item> SelectPage(string SearchVal, string OrderBy, string Sort, int startRowIndex, int maximumRows)
{
return Order(SearchVal, OrderBy, Sort).Skip(startRowIndex * maximumRows).Take(maximumRows);
}
/// <summary>
/// calcolo num risultati
/// </summary>
/// <param name="SearchVal"></param>
/// <returns></returns>
public static int SelectCount(string SearchVal)
{
return Select(SearchVal).Count();
}
// GET: Items
public ActionResult Index()
{
var item = db.Item.Include(i => i.ItemFamily);
return View(item.ToList());
}
public ActionResult Grid()
{
var item = db.Item.Include(i => i.ItemFamily);
return View(item.ToList());
}
// GET: Items/Details/5
public ActionResult Details(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Item item = db.Item.Find(id);
if (item == null)
{
return HttpNotFound();
}
return View(item);
}
// GET: Items/Create
public ActionResult Create()
{
ViewBag.ItemFamilyID = new SelectList(db.ItemFamily, "ID", "Descr");
return View();
}
// POST: Items/Create
// To protect from overposting attacks, please enable the specific properties you want to bind to, for
// more details see http://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "ID,Descr,CodInt,ItemFamilyID,CodExt,DescrExt,QtaMin,QtaBatch,CurrValue")] Item item)
{
if (ModelState.IsValid)
{
db.Item.Add(item);
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.ItemFamilyID = new SelectList(db.ItemFamily, "ID", "Descr", item.ItemFamilyID);
return View(item);
}
// GET: Items/Edit/5
public ActionResult Edit(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Item item = db.Item.Find(id);
if (item == null)
{
return HttpNotFound();
}
ViewBag.ItemFamilyID = new SelectList(db.ItemFamily, "ID", "Descr", item.ItemFamilyID);
return View(item);
}
// POST: Items/Edit/5
// To protect from overposting attacks, please enable the specific properties you want to bind to, for
// more details see http://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit([Bind(Include = "ID,Descr,CodInt,ItemFamilyID,CodExt,DescrExt,QtaMin,QtaBatch,CurrValue")] Item item)
{
if (ModelState.IsValid)
{
db.Entry(item).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.ItemFamilyID = new SelectList(db.ItemFamily, "ID", "Descr", item.ItemFamilyID);
return View(item);
}
// GET: Items/Delete/5
public ActionResult Delete(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Item item = db.Item.Find(id);
if (item == null)
{
return HttpNotFound();
}
return View(item);
}
// POST: Items/Delete/5
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public ActionResult DeleteConfirmed(int id)
{
Item item = db.Item.Find(id);
db.Item.Remove(item);
db.SaveChanges();
return RedirectToAction("Index");
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
db.Dispose();
}
base.Dispose(disposing);
}
}
}