Example #1
0
        public void AddNewProducts()
        {
            using (var db = new TestModel.TestModel())
            {
                // Product without new supplier and category.
                var product1         = db.Products.Create();
                var product1Category = "Beverages";
                var product1Supplier = "Exotic Liquids";
                product1.ProductName = "Milk";
                AddProduct(product1, product1Category, product1Supplier, db);

                // Product with new supplier and category.
                var product2 = db.Products.Create();
                product2.ProductName = "Chicken eggs";
                var product2Category = "Animal origin";
                var product2Supplier = "Test company";
                AddProduct(product2, product2Category, product2Supplier, db);

                var products = new List <Product> {
                    product1, product2
                };

                db.Products.AddRange(products);
                db.SaveChanges();
            }
        }
Example #2
0
        public void GetOrdersByCategory()
        {
            using (var db = new TestModel.TestModel())
            {
                var beveragesCategory = db.Categories.First(c => c.CategoryName == "Beverages");
                var orderDetails      = db.OrderDetails;
                var orderInfoGroups   = orderDetails
                                        .ToList()
                                        .Where(d => d.Product.Category == beveragesCategory)
                                        .Select(i => new
                {
                    i.OrderId,
                    i.Product.ProductName,
                    i.UnitPrice,
                    i.Quantity,
                    i.Discount,
                    i.Order.Customer.CompanyName,
                    i.Product.Category
                })
                                        .GroupBy(i => i.OrderId);

                foreach (var orderInfoGroup in orderInfoGroups)
                {
                    Console.WriteLine(orderInfoGroup.Key);
                    foreach (var orderInfo in orderInfoGroup)
                    {
                        Console.WriteLine($"\t{orderInfo}");
                    }
                }
            }
        }
Example #3
0
 public static void Cleanup()
 {
     using (var db = new TestModel.TestModel())
     {
         db.Products.RemoveRange(db.Products.Where(p => p.ProductName == "Milk" ||
                                                   p.ProductName == "Chicken eggs" ||
                                                   p.ProductName == "Cucumber"));
         db.Categories.RemoveRange(db.Categories.Where(c => c.CategoryName == "Animal origin"));
         db.Suppliers.RemoveRange(db.Suppliers.Where(s => s.CompanyName == "Test company"));
         db.SaveChanges();
     }
 }
Example #4
0
        public void AddNewEmployeeWithTerritories()
        {
            using (var db = new TestModel.TestModel())
            {
                var employee    = db.Employees.Create();
                var territories = db.Territories;
                employee.LastName  = "Ivanov";
                employee.FirstName = "Ivan";
                employee.Territories.Add(territories.First(t => t.Id == "01581"));
                employee.Territories.Add(territories.First(t => t.Id == "01730"));
                employee.Territories.Add(territories.First(t => t.Id == "01833"));
                db.Employees.Add(employee);
                db.SaveChanges();

                var newEmployee = db.Employees.First(e => e.Id == employee.Id);
                Assert.AreEqual(employee, newEmployee);
            }
        }
Example #5
0
        public void GetCountOfEmployeesByRegion()
        {
            using (var db = new TestModel.TestModel())
            {
                var regions = db.Regions;

                var regionsWithCountOfEmployees = regions.Select(r => new
                {
                    RegionName     = r.RegionDescription,
                    EmployeesCount = r.Territories.Select(t => t.Employees).Count()
                });

                foreach (var region in regionsWithCountOfEmployees)
                {
                    Console.WriteLine($"{region.RegionName} - {region.EmployeesCount}");
                }
            }
        }
Example #6
0
        public void GetProductListWithCategoryAndSupplier()
        {
            using (var db = new TestModel.TestModel())
            {
                var products = db.Products;

                var productInfo = products.Select(p => new
                {
                    p.ProductName,
                    p.Category.CategoryName,
                    p.Supplier.CompanyName
                });

                foreach (var p in productInfo)
                {
                    Console.WriteLine($"{p.ProductName} - {p.CategoryName} - {p.CompanyName}");
                }
            }
        }
Example #7
0
        public void ChangeCategoryOfProduct()
        {
            using (var db = new TestModel.TestModel())
            {
                var chai              = db.Products.First(p => p.Id == 1);
                var seafoodCategory   = db.Categories.First(c => c.Id == 8);
                var beveragesCategory = db.Categories.First(c => c.Id == 1);

                try
                {
                    chai.Category = seafoodCategory;
                    db.SaveChanges();
                    Assert.AreEqual(seafoodCategory, db.Products.First(p => p.Id == 1).Category);
                }
                finally
                {
                    chai.Category = beveragesCategory;
                    db.SaveChanges();
                }
            }
        }
Example #8
0
        private void AddProduct(Product product, string category, string supplier, TestModel.TestModel db)
        {
            if (db.Categories.Any(c => c.CategoryName == category))
            {
                product.Category = db.Categories.First(c => c.CategoryName == category);
            }
            else
            {
                product.Category = db.Categories.Create();
                product.Category.CategoryName = category;
            }

            if (db.Suppliers.Any(s => s.CompanyName == supplier))
            {
                product.Supplier = db.Suppliers.First(s => s.CompanyName == supplier);
            }
            else
            {
                product.Supplier             = db.Suppliers.Create();
                product.Supplier.CompanyName = supplier;
            }
        }
Example #9
0
        public void GetEmployeesWithRegions()
        {
            using (var db = new TestModel.TestModel())
            {
                var employees = db.Employees;

                var employeesWithRegions = employees.Select(e => new
                {
                    e.FirstName,
                    e.LastName,
                    Regions = e.Territories.Select(t => t.Region).Distinct()
                });

                foreach (var employee in employeesWithRegions)
                {
                    Console.WriteLine($"{employee.FirstName} {employee.LastName}");
                    foreach (var region in employee.Regions)
                    {
                        Console.WriteLine($"    {region.RegionDescription}");
                    }
                }
            }
        }
Example #10
0
        public void GetSuppliersStatsOfEmployees()
        {
            using (var db = new TestModel.TestModel())
            {
                var orders        = db.Orders;
                var supplierStats = orders.ToList()
                                    .GroupBy(o => o.Employee)
                                    .Select(g => new
                {
                    g.Key.FirstName,
                    g.Key.LastName,
                    Companies = g.Select(e => e.Shipper.CompanyName).Distinct()
                });

                foreach (var element in supplierStats)
                {
                    Console.WriteLine($"{element.FirstName} {element.LastName}");
                    foreach (var company in element.Companies)
                    {
                        Console.WriteLine($"    {company}");
                    }
                }
            }
        }