InventoryManager / Controllers / CollectionsController.cs
CollectionsController.cs
Raw
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 CollectionsController : Controller
    {

        private readonly ICollections _repo;

        public CollectionsController(ICollections 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<Collections> 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()
        {
            Collections item = new Collections();
            return View(item);
        }

        [HttpPost]
        public IActionResult Create(Collections 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)
        {
            Collections item = _repo.GetItem(id);
            return View(item);
        }

        [HttpGet]
        public IActionResult Edit(int id)
        {
            Collections item = _repo.GetItem(id);
            TempData.Keep("CurrentPage");
            return View(item);
        }

        [HttpPost]
        public IActionResult Edit(Collections 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)
        {
            Collections item = _repo.GetItem(id);
            TempData.Keep("CurrentPage");
            return View(item);
        }

        [HttpPost]
        public IActionResult Delete(Collections 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 });

        }





    }
}