using System; using System.Collections.Generic; using System.Linq; using System.Net.Http; using System.Threading.Tasks; using GreenTree.Strohrmann.ERP.Core.Domain.Business; using GreenTree.Strohrmann.ERP.Core.Helper; using GreenTree.Strohrmann.ERP.Domain.Model; using GreenTree.Strohrmann.ERP.Services.Geolocator; using GreenTree.Strohrmann.ERP.Web.Extension; using GreenTree.Strohrmann.ERP.Web.Models.Business; using GreenTree.Strohrmann.ERP.Web.Models.Rights.User; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; namespace GreenTree.Strohrmann.ERP.Web.Controllers { public class MaterialController : Controller { #region DI fields // The global DbContext private readonly ERPDbContext _eRPDbContext; #endregion #region Ctor /// /// Initializes a new instance of the MaterialController class /// /// Global DbContext. public MaterialController(ERPDbContext eRPDbContext) { _eRPDbContext = eRPDbContext; } #endregion #region Actions // GET: MaterialController public ActionResult Index() { var materials = _eRPDbContext.Materials .ToList() .Select(c => new MaterialModel(c)); return View(materials); } // GET: MaterialController/Details/5 public ActionResult Details(int id) { var material = _eRPDbContext.Materials .FirstOrDefault(c => c.Id == id); var materialModel = new MaterialModel(material); return View(materialModel); } // GET: MaterialController/Create public ActionResult Create() { ViewData.AddSelectList("AvailableUnits", _eRPDbContext.Units .OrderBy(u => u.Name), m => m.Id, m => String.Format("{0} ({1})", m.Name, m.ShortName)); ViewData.AddSelectList("AvailableSuppliers", _eRPDbContext.Suppliers, m => m.Id, m => m.Name); return View(); } // POST: MaterialController/Create [HttpPost] [ValidateAntiForgeryToken] public ActionResult Create(MaterialModel model) { if (!ModelState.IsValid) { ViewData.AddSelectList("AvailableUnits", _eRPDbContext.Units .OrderBy(u => u.Name), m => m.Id, m => String.Format("{0} ({1})", m.Name, m.ShortName)); ViewData.AddSelectList("AvailableSuppliers", _eRPDbContext.Suppliers, m => m.Id, m => m.Name); return View(model); } var material = new Material { Name = model.Name, Description = model.Description, ItemNumber = model.ItemNumber, NetValue = Convert.ToDecimal(model.NetValue), Height = model.Height, Width = model.Width, Depth = model.Depth, DefaultUnit = _eRPDbContext.Units.Find(model.DefaultUnit.Id), PackageSize = model.PackageSize, Supplier = _eRPDbContext.Suppliers.Find(model.Supplier.Id), CreatedBy = User.Identity.Name, CreatedOn = DateTime.Now }; _eRPDbContext.Materials.Add(material); _eRPDbContext.SaveChanges(); return RedirectToAction(nameof(Index)); } // GET: MaterialController/Edit/5 public ActionResult Edit(int id) { ViewData.AddSelectList("AvailableUnits", _eRPDbContext.Units .OrderBy(u => u.Name), m => m.Id, m => String.Format("{0} ({1})", m.Name, m.ShortName)); ViewData.AddSelectList("AvailableSuppliers", _eRPDbContext.Suppliers, m => m.Id, m => m.Name); var material = _eRPDbContext.Materials .FirstOrDefault(c => c.Id == id); var materialModel = new MaterialModel(material); return View(materialModel); } // POST: MaterialController/Edit/5 [HttpPost] [ValidateAntiForgeryToken] public ActionResult Edit(int id, MaterialModel model) { if (!ModelState.IsValid) { ViewData.AddSelectList("AvailableUnits", _eRPDbContext.Units .OrderBy(u => u.Name), m => m.Id, m => String.Format("{0} ({1})", m.Name, m.ShortName)); ViewData.AddSelectList("AvailableSuppliers", _eRPDbContext.Suppliers, m => m.Id, m => m.Name); return View(model); } var material = _eRPDbContext.Materials .FirstOrDefault(u => u.Id == id); material.Name = model.Name; material.Description = model.Description; material.ItemNumber = model.ItemNumber; material.NetValue = Convert.ToDecimal(model.NetValue); material.Height = model.Height; material.Width = model.Width; material.Depth = model.Depth; material.DefaultUnit = _eRPDbContext.Units.Find(model.DefaultUnit.Id); material.PackageSize = model.PackageSize; material.Supplier = _eRPDbContext.Suppliers.Find(model.Supplier.Id); material.ChangedBy = User.Identity.Name; material.ChangedOn = DateTime.Now; _eRPDbContext.SaveChanges(); return RedirectToAction(nameof(Index)); } // POST: MaterialController/Delete/5 [HttpPost] [ValidateAntiForgeryToken] public ActionResult Delete(int id, IFormCollection collection) { var material = _eRPDbContext.Materials .FirstOrDefault(c => c.Id == id); _eRPDbContext.Materials.Remove(material); _eRPDbContext.SaveChanges(); return RedirectToAction(nameof(Index)); } #endregion } }