public void TestGrandTotalEqualsCustomerSum() { RequestModel requestModel = new RequestModel() { StartDate = new DateTime(2015, 1, 1), EndDate = new DateTime(2018, 1, 1) }; CrossCustomerByCategoryModel model = set.CrossCustomersByCategoryReport.Report(requestModel); double sum = 0; foreach (var item in model.CusRevenue) { sum += item.CustomerTurnover; } Assert.AreEqual(model.GrandTotal, sum); }
public CrossCustomerByCategoryModel Report(RequestModel Request) { List <Item> Items = UnitOfWork.Items.Get().Where(x => x.Invoice.Date >= Request.StartDate && x.Invoice.Date <= Request.EndDate).ToList(); CrossCustomerByCategoryModel result = new CrossCustomerByCategoryModel() { StartDate = Request.StartDate, EndDate = Request.EndDate, GrandTotal = Items.Sum(x => x.SubTotal) }; result.CatRevenue = Items.GroupBy(x => x.Product.Category.Name) .Select(x => Factory.Create(x.Key, x.Sum(y => y.SubTotal))) .ToList(); var Catquery = result.CatRevenue; int number = result.CatRevenue.Count; result.CusRevenue = Items.GroupBy(x => x.Invoice.Customer.Name) .Select(x => Factory.Create(x.Key, x.Sum(y => y.SubTotal), Items, number, Catquery, Request)) .ToList(); return(result); }