Exemplo n.º 1
0
        /*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);
        }
Exemplo n.º 2
0
        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);
        }