InventoryManager / Repositories / UnitRepo.cs
UnitRepo.cs
Raw
using InventoryManager.Data;
using InventoryManager.Interfaces;
using InventoryManager.Models;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using System.Collections.Generic;
using System.Linq;
using InventoryManager.Tools;
using Microsoft.CodeAnalysis.CSharp.Syntax;

namespace InventoryManager.Repositories
{
    public class UnitRepo : IUnit
    {
        private readonly InventoryContext _context;

        public UnitRepo(InventoryContext context)
        {
            _context = context;
        }

        public Unit Create(Unit unit)
        {
            _context.Units.Add(unit);
            _context.SaveChanges();
            return unit;
        }

        public Unit Delete(Unit unit)
        {
            _context.Units.Attach(unit);
            _context.Entry(unit).State = EntityState.Deleted;
            _context.SaveChanges();
            return unit;
        }

        public Unit Edit(Unit unit)
        {
            _context.Units.Attach(unit);
            _context.Entry(unit).State = EntityState.Modified;
            _context.SaveChanges();
            return unit;
        }

        private List<Unit> Sort(List<Unit> units, string SortProperty, SortOrder sortOrder)
        {
            if (SortProperty.ToLower() == "name")
            {
                if (sortOrder == SortOrder.Ascending)
                    units = units.OrderBy(n => n.Name).ToList();
                else
                    units = units.OrderByDescending(n => n.Name).ToList();
            }
            else
            {
                if (sortOrder == SortOrder.Ascending)
                    units = units.OrderBy(d => d.Description).ToList();
                else
                    units = units.OrderByDescending(d => d.Description).ToList();
            }
            return units;
        }

        public PaginatedList<Unit> GetItems(string SortProperty, SortOrder sortOrder, string SearchText = "", int pageIndex=1, int pageSize=5)
        {
            List<Unit> units = _context.Units.ToList();

            if (SearchText != "" && SearchText != null)
            {
                units = _context.Units.Where(n => n.Name.Contains(SearchText) || n.Description.Contains(SearchText)).ToList();
            }
            else
                units = _context.Units.ToList();


            units = Sort(units, SortProperty, sortOrder);

            PaginatedList<Unit> retUnits = new PaginatedList<Unit>(units, pageIndex, pageSize);

            return retUnits;
        }

        public Unit GetUnit(int id)
        {
            Unit unit = _context.Units.Where(u => u.Id == id).FirstOrDefault();
            return unit;
        }


        public bool IsUnitUnique(string name)
        {
            int ct = _context.Units.Where(n => n.Name.ToLower() == name.ToLower()).Count();
            if(ct > 0)
                return true;
            else return false;
        }

        public bool IsUnitUnique(string name, int id)
        {
            int ct = _context.Units.Where(n => n.Name.ToLower() == name.ToLower() && n.Id!=id).Count();
            if (ct > 0)
                return true;
            else return false;
        }

        public List<Unit> GetNameList()
        {
            List<Unit> items = _context.Units.ToList();
            return items;

        }

    }
}