/*public MonthlySales Create(Region region, double sales) * { * return new MonthlySales() * { * Label = region.ToString(), * Sales = sales * }; * }*/ public CrossTableAgentRegionModel CreateCross(List <InputItem> list, int length = 15) { AgentRegionSalesCrossModel agentCross = new AgentRegionSalesCrossModel(); CrossTableAgentRegionModel result = new CrossTableAgentRegionModel(); foreach (var item in list) { if (item.Label != agentCross.AgentName) { if (agentCross.AgentName != null) { result.agents.Add(agentCross); } agentCross = new AgentRegionSalesCrossModel(); agentCross.AgentName = item.Label; } agentCross.AgentSales[Convert.ToInt32(item.Index) - 1] = item.Value; agentCross.AgentTurnover += item.Value; result.regionSales[Convert.ToInt32(item.Index) - 1] += item.Value; } if (agentCross.AgentName != null) { result.agents.Add(agentCross); } return(result); }
public void CrossAgentRegionContentModel() {//1 Initializing(); GetReady(); RequestModel request = new RequestModel() { Id = 1, StartDate = new DateTime(2016, 1, 1), EndDate = new DateTime(2017, 12, 31) }; var actRes = controller.Post(request); var response = actRes.ExecuteAsync(CancellationToken.None).Result; Assert.IsNotNull(response.Content); UnitOfWork unit = new UnitOfWork(); SetOfReports report = new SetOfReports(unit); CrossTableAgentRegionModel model = report.CrossTableAgentRegion.Report(request); Assert.AreEqual(model.agents.Count, 1); Assert.AreEqual(model.regionSales.Length, 10); Assert.AreEqual(model.GrandTotal, 2609.83); }
public CrossTableAgentRegionModel Report(RequestModel Request) { List <Invoice> Invoices = UnitOfWork.Invoices.Get().Where(x => x.Date >= Request.StartDate && x.Date <= Request.EndDate).ToList(); double grandTotal = Invoices.Sum(x => x.Total); CrossTableAgentRegionModel result = new CrossTableAgentRegionModel(); List <InputItem> query = Invoices.OrderBy(x => x.Agent.Id) .GroupBy(x => new { x.Agent.Name, x.Customer.Town.Region }) .Select(x => new InputItem { Label = x.Key.Name, Index = Convert.ToInt32(x.Key.Region), Value = x.Sum(y => (y.Total)) }).ToList(); result = Factory.CreateCross(query, Helper.RegionCount); result.StartDate = Request.StartDate; result.EndDate = Request.EndDate; result.GrandTotal = grandTotal; return(result); }