public async Task <SaleModel> GetProductBestActiveSale(int SKU)
        {
            DateTime     today   = DateTime.Now;
            ProductModel product = await this.Products.FindAsync(SKU);

            if (product.Brand.Sales != null && product.Brand.Sales.Count != 0)
            {
                SaleModel bestSale = (from s in product.Brand.Sales where s.StartDate <= today && s.EndDate >= today select s).OrderByDescending((SaleModel a) => { return(a.Discount); }).First();
                return(bestSale);
            }

            return(null);
        }
        public async Task <IList <ProductModel> > GetAllProductsInSaleAsync(int SaleID)
        {
            List <ProductModel> products = new List <ProductModel>();
            SaleModel           sale     = await this.Sales.FindAsync(SaleID);

            if (sale == null)
            {
                goto EndLabel;
            }

            foreach (BrandModel b in sale.BrandsOnSale)
            {
                products.AddRange(b.Products.ToList());
            }

EndLabel:

            return(products);
        }