using InventoryManager.Data; using Microsoft.AspNetCore.Mvc; using System.Collections.Generic; using System; using InventoryManager.Models; using System.Linq; using Microsoft.EntityFrameworkCore; using InventoryManager.Interfaces; using InventoryManager.Tools; using Microsoft.AspNetCore.Authorization; namespace InventoryManager.Controllers { [Authorize] public class ColorsController : Controller { private readonly IColors _repo; public ColorsController(IColors repo) { _repo = repo; } public IActionResult Index(string sortExpression = "", string SearchText = "",int pg = 1, int pageSize = 5) { SortModel sortModel = new SortModel(); sortModel.AddColumn("name"); sortModel.AddColumn("description"); sortModel.ApplySort(sortExpression); ViewData["sortModel"] = sortModel; ViewBag.SearchText = SearchText; PaginatedList<Colors> items = _repo.GetItems(sortModel.SortedProperty, sortModel.SortedOrder, SearchText, pg, pageSize); var pager = new PagerModel(items.TotalRecords, pg, pageSize); pager.SortExpression = sortExpression; this.ViewBag.Pager = pager; TempData["CurrentPage"] = pg; return View(items); } public IActionResult Create() { Colors item = new Colors(); return View(item); } [HttpPost] public IActionResult Create(Colors item) { bool bolret = false; string errMessage = ""; try { if (item.Description.Length < 4 || item.Description == null) errMessage = "Description Must be at least 4 Characters"; if (_repo.IsItemUnique(item.Name) == true) errMessage += " Sorry I Already Exist"; if (errMessage == "") { item = _repo.Create(item); bolret = true; } } catch(Exception ex) { errMessage += " " + ex.Message; } if (bolret == false) { TempData["ErrorMessage"] = errMessage; ModelState.AddModelError("", errMessage); return View(item); } else { TempData["SuccessMessage"] = item.Name + " Created Successfully"; return RedirectToAction(nameof(Index)); } } public IActionResult Details(int id) { Colors item = _repo.GetItem(id); return View(item); } [HttpGet] public IActionResult Edit(int id) { Colors item = _repo.GetItem(id); TempData.Keep("CurrentPage"); return View(item); } [HttpPost] public IActionResult Edit(Colors item) { bool bolret = false; string errMessage = ""; try { if(item.Description.Length < 4 || item.Description == null) errMessage = "Description Must be at least 4 Characters"; if (_repo.IsItemUnique(item.Name, item.Id) == true) errMessage = errMessage + "Sorry I Already Exist"; if (errMessage == "") { item = _repo.Edit(item); TempData["SuccessMessage"] = item.Name + " Updated Successfully"; bolret = true; } } catch(Exception ex) { errMessage = errMessage = " " + ex.Message; } int currentPage = 1; if (TempData["CurrentPage"] != null) currentPage = (int)TempData["CurrentPage"]; if(bolret == false) { TempData["ErrorMessage"] = errMessage; ModelState.AddModelError("", errMessage); return View(item); } else { TempData["SuccessMessage"] = item.Name + " Saved Successfully"; return RedirectToAction(nameof(Index), new { pg = currentPage }); } } [HttpGet] public IActionResult Delete(int id) { Colors item = _repo.GetItem(id); TempData.Keep("CurrentPage"); return View(item); } [HttpPost] public IActionResult Delete(Colors item) { try { item = _repo.Delete(item); } catch(Exception ex) { string errMessage = ex.Message; TempData["ErrorMessage"] = errMessage; ModelState.AddModelError("", errMessage); return View(item); } int currentPage = 1; if (TempData["CurrentPage"] != null) currentPage = (int)TempData["CurrentPage"]; TempData["SuccessMessage"] = item.Name + " Deleted Successfully"; return RedirectToAction(nameof(Index), new { pg = currentPage }); } } }