Files
ProductiveAspNetMvc/Ch03/03_Challenge/Common/Models/HPlusSportsDbContext.cs
Jess Chadwick 20458e435e Exercise Files
2018-06-07 00:03:24 -04:00

56 lines
1.7 KiB
C#

using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using HPlusSports.Models;
namespace HPlusSports
{
public class HPlusSportsDbContext : DbContext
{
public DbSet<Category> Categories { get; set; }
public DbSet<Image> Images { get; set; }
public DbSet<Product> Products { get; set; }
public DbSet<Review> Reviews { get; set; }
public DbSet<ShoppingCart> ShoppingCarts { get; set; }
public DbSet<ShoppingCartItem> ShoppingCartItems { get; set; }
public HPlusSportsDbContext()
: this("HPlusSports")
{
}
public HPlusSportsDbContext(string connectionName)
: base(connectionName)
{
}
public Product FindProductBySku(string sku)
=> Products.FirstOrDefault(x => x.SKU == sku);
public ProductRating GetProductRating(string sku)
{
var reviews = Reviews.Where(x => x.SKU == sku);
return new ProductRating
{
SKU = sku,
Rating = reviews.Average(x => (double?)x.Rating),
ReviewCount = reviews.Count(),
};
}
public IQueryable<ProductRating> GetProductRatings(IEnumerable<string> skus)
{
return
Reviews
.Where(x => skus.Distinct().Contains(x.SKU))
.GroupBy(x => x.SKU)
.Select(reviews => new ProductRating
{
SKU = reviews.Key,
Rating = reviews.Average(x => x.Rating),
ReviewCount = reviews.Count(),
});
}
}
}