Пример #1
0
        public SalesPerProduct[] GetSalesPerProduct(int[] productList, DateTime?begin, DateTime?end)
        {
            VerifyPeriod(ref begin, ref end);

            using (Forever16DBEntities DB = new Forever16DBEntities())
            {
                var query = from sale in DB.Sales
                            join saleItem in DB.SaleItems on sale.Id equals saleItem.SaleId
                            join product in DB.Products on saleItem.ProductId equals product.Id
                            join store in DB.Stores on sale.StoreId equals store.Id
                            where productList.Contains(product.Id) &&
                            sale.Date >= begin && sale.Date <= end
                            group saleItem.Quantity by new
                {
                    Store   = store.Name,
                    Product = product.Name
                }
                into salesPerProduct
                    select new SalesPerProduct
                {
                    Store   = salesPerProduct.Key.Store,
                    Product = salesPerProduct.Key.Product,
                    Total   = salesPerProduct.Sum()
                };

                return(query.ToArray());
            }
        }
Пример #2
0
        public SalesPerAgeAndGender[] GetSalesPerAgeAndGender(DateTime?begin, DateTime?end)
        {
            VerifyPeriod(ref begin, ref end);

            using (Forever16DBEntities DB = new Forever16DBEntities())
            {
                var query = from sale in DB.Sales
                            join item in DB.SaleItems on sale.Id equals item.SaleId
                            join store in DB.Stores on sale.StoreId equals store.Id
                            join client in DB.Clients on sale.ClientId equals client.Id
                            where sale.Date >= begin && sale.Date <= end
                            group item.Quantity by new
                {
                    Store  = store.Name,
                    Gender = client.gender,
                    Age    = (int)(SqlFunctions.DateDiff("day", client.DateOfBirth, sale.Date) / 365)
                }
                into salesAgeGender
                    select new SalesPerAgeAndGender()
                {
                    Age      = (int)salesAgeGender.Key.Age,
                    Store    = salesAgeGender.Key.Store,
                    Gender   = salesAgeGender.Key.Gender,
                    Quantity = salesAgeGender.Sum()
                };

                return(query.ToArray());
            }
        }
Пример #3
0
        public SalesPerStore[] GetSalesPerStore(int initialYear, int endYear)
        {
            using (Forever16DBEntities DB = new Forever16DBEntities())
            {
                var query = from store in DB.Stores
                            join sale in DB.Sales on store.Id equals sale.StoreId
                            join item in DB.SaleItems on sale.Id equals item.SaleId
                            join product in DB.Products on item.ProductId equals product.Id
                            where sale.Date.Year >= initialYear && sale.Date.Year <= endYear
                            group product.Price * item.Quantity by new
                {
                    Store = store.Name,
                    Year  = sale.Date.Year
                }
                into salesPerItem
                    select new SalesPerStore
                {
                    Store = salesPerItem.Key.Store,
                    Year  = salesPerItem.Key.Year,
                    Total = salesPerItem.Sum()
                };

                return(query.ToArray());
            }
        }
Пример #4
0
 public TotalSalesPerStore[] PercentageSalesPerStore(DateTime begin, DateTime end)
 {
     using (Forever16DBEntities DB = new Forever16DBEntities())
     {
         var query = from saleItem in DB.SaleItems
                     join sale in DB.Sales on saleItem.SaleId equals sale.Id
                     join product in DB.Products on saleItem.ProductId equals product.Id
                     join store in DB.Stores on sale.StoreId equals store.Id
                     where sale.Date >= begin && sale.Date <= end
                     group saleItem.Quantity * product.Price by new
         {
             Store = store.Name
         }
         into percentageSalesPerStore
             select new TotalSalesPerStore
         {
             Store      = percentageSalesPerStore.Key.Store,
             TotalSales = percentageSalesPerStore.Sum()
         };
         return(query.ToArray());
     }
 }