public SalesCustomersCategoriesModel Report(DateTime start, DateTime end, int page = 0) { SalesCustomersCategoriesModel result = new SalesCustomersCategoriesModel(start, end); List <Customer> Customers = _unitOfWork.Customers.Get().ToList(); List <InputCross> CustomersByCategories = _unitOfWork.Items.Get() .Where(x => (x.Invoice.Date >= start && x.Invoice.Date <= end)).ToList() .GroupBy(x => new { CustomerName = x.Invoice.Customer.Name, CategoryName = x.Product.Category.Name }) .Select(x => new InputCross { Row = x.Key.CustomerName, Column = x.Key.CategoryName, Value = x.Sum(y => y.SubTotal) }) .OrderByDescending(x => x.Value) .ToList(); result.Customers = _factory.CreateCat(CustomersByCategories, Customers, _unitOfWork.Categories.Get().ToList()); result.Categories = _factory.CreateReverseCat(CustomersByCategories, _unitOfWork.Categories.Get().ToList()); result.GrandTotal = result.Customers.Sum(x => x.Turnover); return(result); }
public void InitReport() { DateTime start = new DateTime(2016, 1, 1); DateTime end = new DateTime(2016, 12, 31); result = report.Report(start, end); }