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);
        }
Ejemplo n.º 2
0
        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);
        }