using Microsoft.EntityFrameworkCore; using OOO_WriteAndClear.DBModels; using OOO_WriteAndClear.MVP.Models.ProductsUserControlModel; using OOO_WriteAndClear.MVP.MVPInterfaces; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace OOO_WriteAndClear.MVP.Models { public class OrdersUserControlModel : IOrdersUserControlContract.Model { public OrdersUserControlModel() { _orders = new List(); _ordersFromDB = new List(); } public ICollection Orders => _orders; public void UpdateOrdersFromDB() { using(VorobiewTradeContext db = new VorobiewTradeContext()) { _ordersFromDB = db.Orders.Include(a => a.OrderProducts) .ThenInclude(a => a.ProductArticleNumberNavigation) .Include(a => a.OrderPickupPoint) .Include(a => a.OrderStatus) .ToList(); } } public void FilterAndSorting(FilterByDiscountParameters filterParams, string sortingParams) { _orders = SortOrders(FiltOrders(_ordersFromDB, filterParams), sortingParams); } private ICollection _orders; private ICollection _ordersFromDB; private ICollection FiltOrders(ICollection orders, FilterByDiscountParameters parameters) { return orders.Where(a => decimal.ToDouble(a.OrderDiscountPercent * 100) >= parameters.From && decimal.ToDouble(a.OrderDiscountPercent * 100) < parameters.Before ).ToList(); } private ICollection SortOrders(ICollection orders, string sortVarients) { switch(sortVarients) { case "По возрастанию": return orders.OrderBy(a => a.OrderCost).ToList(); case "По убыванию": return orders.OrderByDescending(a => a.OrderCost).ToList(); default: return orders; } } } }