public virtual IActionResult AddPrepareProducts(RequestHelper request) { var penultimate = FilteredProductsRepository <T> .LastRequest(); FilteredProductsRepository <T> .AddRequestHistory(request); var RequestHistory = FilteredProductsRepository <T> .GetRequestHistory(); var requestVendorsCount = FilteredProductsRepository <T> .RequestHistory.Count(p => p.Key == "Vendor"); if (penultimate?.Key == request.Key && requestVendorsCount == 0) { var prod = _repository.GetProductsByRequests(request); FilteredProductsRepository <T> .AddRange(prod.Result); } else { var products = _repository.GetProductsByRequests(RequestHistory); FilteredProductsRepository <T> .ClearCache(); FilteredProductsRepository <T> .AddRange(products); } //if (requestVendorsCount == 0) //{ // var prod = _repository.GetProductsByRequests(request); // FilteredProductsRepository<T>.AddRange(prod.Result); //} //else //{ // if (request.Key == "Vendor" && requestVendorsCount > 1) // { // var newRequests = new List<RequestHelper>(RequestHistory.Where(p => p.Key != "Vendor").ToList()) { request }; // var prod = _repository.GetProductsByRequests(newRequests); // FilteredProductsRepository<T>.AddRange(prod); // } // else if (request.Key == "Vendor") // { // var products = _repository.GetProductsByRequests(RequestHistory); // FilteredProductsRepository<T>.AddRange(products); // } // else // { // var prod = new List<T>(); // if (penultimate?.Key == request.Key) // { // var newRequest = new List<RequestHelper>(RequestHistory.Where(p => p.Key == "Vendor").ToList()) { request }; // prod = _repository.GetProductsByRequests(newRequest); // } // else // { // prod = FilteredProductsRepository<T>.GetProductsByRequests(request); // FilteredProductsRepository<T>.ClearCache(); // } // FilteredProductsRepository<T>.AddRange(prod); // } //} return(Ok(request)); }
public virtual IActionResult RemovePrepareProducts(RequestHelper request) { FilteredProductsRepository <T> .RemoveRange(request); var RequestHistory = FilteredProductsRepository <T> .GetRequestHistory().ToArray(); if (RequestHistory.Length == 0) { FilteredProductsRepository <T> .ClearCache(); } else { FilteredProductsRepository <T> .Clear(); foreach (var requestItem in RequestHistory) { AddPrepareProducts(requestItem); } } return(Ok(request)); }
public virtual void ClearFilteredProducts() => FilteredProductsRepository <T> .Clear();
public virtual int GetFilteredProductsCount() => (FilteredProductsRepository <T> .ContainsProducts()) ? FilteredProductsRepository <T> .Count() : GetProductsCount();