public RegionSalesModel Create(List <Invoice> Invoices, string Region, double Sales) { double GrandTotal = Invoices.Sum(x => x.SubTotal); RegionSalesModel region = new RegionSalesModel() { Name = Region, Total = Sales, Percent = Math.Round(100 * Sales / GrandTotal, 2) }; region.Agents = Invoices.Where(x => x.Customer.Town.Region.ToString() == Region) .GroupBy(x => new { id = x.Agent.Id, name = x.Agent.Name }) .Select(x => new AgentSalesModel() { Id = x.Key.id, Name = x.Key.name, Total = Math.Round(x.Sum(y => y.Total), 2), RegionPercent = Math.Round(100 * x.Sum(y => y.Total) / Sales, 2), TotalPercent = Math.Round(100 * x.Sum(y => y.Total) / GrandTotal, 2) }) .ToList(); return(region); }
public RegionSalesModel Create(List <Database.Invoice> Invoices, string Region, double Sales) { double GrandTotal = Invoices.Sum(x => x.SubTotal); RegionSalesModel region = new RegionSalesModel() { RegionName = Region, RegionTotal = Sales, RegionPercent = Math.Round(100 * Sales / GrandTotal, 2) }; var q1 = Invoices.Where(x => x.Customer.Town.Region.ToString() == Region); var q2 = q1.GroupBy(x => new { id = x.Agent.Id, name = x.Agent.Name }); var q3 = q2.Select(x => new AgentSalesModel() { AgentId = x.Key.id, AgentName = x.Key.name, AgentTotal = x.Sum(y => y.Total), RegionPercent = 100 * x.Sum(y => y.Total) / Sales, TotalPercent = 100 * x.Sum(y => y.Total) / GrandTotal }); region.Agents = q3.ToList(); return(region); }