using Demo2703.Context;
using Demo2703.Models;
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Demo2703
{
    public static class Helper
    {
        public static User19Context DBContext = new User19Context();

        public static List<Product> allProducts
        {
            get => DBContext.Products.Include(a => a.Manufacturer).ToList();
        }

        public static List<Productsale> SaleProduct
        {
            get => DBContext.Productsales.Include(b => b.Product).OrderByDescending(y => y.Saledate).ToList();
        }
        
        //заполняем лист
        public static List<Product> Producty = allProducts;

        //количество продуктов на экране
        public static string KolichProd
        {
            get => $"{Producty.Count()}/{allProducts.Count()}";
        }

        //вывод в комбобокс по Фильтрации по производителю всех производителей
        public static List<Manufacturer> ManufacturerList = new List<Manufacturer>(DBContext.Manufacturers.ToList())
            .Concat( new List<Manufacturer> () { new Manufacturer() { Id = 0, Name = "Все элементы" } }).OrderBy(m => m.Id).ToList();


        public static void IzmenaProductov (string Search, int Sort, int Manufack)
        {
            Producty.Clear();
            //перезапись листа и перезаписываем данные
            List<Product> newProducts = allProducts;

            //сортировка по цене
            if (Sort == 1)
            {  //это по убыванию, OrderByDescending сортирует от большего к меньшему
                newProducts = newProducts.OrderByDescending( a => a.Cost).ToList();
            }
             if ( Sort == 2)
            {   //это по возрастанию, просто Ордер бай от меньшего к большему
                newProducts = newProducts.OrderBy( a => a.Cost).ToList(); 
            }

             
            //поиск
            //условие Если не Нул и не Пустой поиск, тогда выполняем фильтрацию в поиске
            if (!string.IsNullOrEmpty(Search))
            {
                newProducts = newProducts.Where(a => a.Title.Contains(Search)).ToList();
            }


            if (Manufack != 0) 
            {
                newProducts = newProducts.Where(m => m.Manufacturerid == Manufack).ToList();
            }
            Producty = newProducts;
        }
    }


}
