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

namespace InventoryManager.Repositories
{
    public class ColorsRepo : IColors
    {
        private readonly InventoryContext _context;

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

        public Colors Create(Colors collection)
        {
            _context.Colors.Add(collection);
            _context.SaveChanges();
            return collection;
        }

        public Colors Delete(Colors collection)
        {
            _context.Colors.Attach(collection);
            _context.Entry(collection).State = EntityState.Deleted;
            _context.SaveChanges();
            return collection;
        }

        public Colors Edit(Colors collection)
        {
            _context.Colors.Attach(collection);
            _context.Entry(collection).State = EntityState.Modified;
            _context.SaveChanges();
            return collection;
        }

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

        public PaginatedList<Colors> GetItems(string SortProperty, SortOrder sortOrder, string SearchText = "", int pageIndex=1, int pageSize=5)
        {
            List<Colors> items;

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


            items = Sort(items, SortProperty, sortOrder);

            PaginatedList<Colors> retItems = new PaginatedList<Colors>(items, pageIndex, pageSize);

            return retItems;
        }

        public Colors GetItem(int id)
        {
            Colors item = _context.Colors.Where(u => u.Id == id).FirstOrDefault();
            return item;
        }


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

        public bool IsItemUnique(string name, int id)
        {
            int ct = _context.Colors.Where(n => n.Name.ToLower() == name.ToLower() && n.Id!=id).Count();
            if (ct > 0)
                return true;
            else return false;
        }
        public List<Colors> GetNameList()
        {
            List<Colors> items = _context.Colors.ToList();
            return items;

        }
    }
}