public async Task <List <ItemRanking> > Ranking()
        {
            List <Produto>     produtos;
            List <ItemRanking> ranking;

            try
            {
                ranking  = new List <ItemRanking>();
                produtos = await service.Ranking();

                foreach (var produto in produtos)
                {
                    ItemRanking item = new ItemRanking();
                    item.IdProduto = produto.Id;
                    item.Nome      = produto.Nome;
                    item.Valor     = produto.Valor;
                    item.Imagem    = Aplicacao.ConverteImagem(produto.Imagem);

                    ranking.Add(item);
                }

                return(ranking);
            }
            catch (Exception ex)
            {
                new ApplicationException(string.Format("Erro ao montar o Raking.\n{0}", ex.Message));
                return(new List <ItemRanking>());
            }
        }
        protected void btnGerar_Click(object sender, EventArgs e)
        {
            this.pnlMain.Visible = false;

            this.lblAviso.Text = string.Empty;
            //verifica as datas
            if (cboDtFim.Value == null || cboDtInicio.Value == null)
            {
                this.lblAviso.Text = "Favor selecionar as datas";
                return;
            }

            if (cboDtInicio.Date > cboDtFim.Date)
            {
                this.lblAviso.Text = "A data início não pode ser superior a data fim";
                return;
            }

            if (cboDtFim.Date.Subtract(cboDtInicio.Date).TotalDays > 365)
            {
                this.lblAviso.Text = "Intervalo muito grande, não é possível realizar a consulta";
                return;
            }


            //Produtividade
            List <Produtividade> dtProd = Produtividade.GetEvolucaoMensalPorFuncionario(cboDtInicio.Date, cboDtFim.Date);

            this.chartTop.DataSource  = dtProd;
            chartTop.SeriesDataMember = "Periodo";
            chartTop.SeriesTemplate.ArgumentDataMember = "Funcionario";
            chartTop.SeriesTemplate.ValueDataMembers.AddRange(new string[] { "qtdRecs" });
            chartTop.DataBind();
            foreach (DevExpress.XtraCharts.Series serie in chartTop.Series)
            {
                serie.LabelsVisibility             = DevExpress.Utils.DefaultBoolean.True;
                serie.Label.LineVisible            = true;
                serie.LegendPointOptions.PointView = DevExpress.XtraCharts.PointView.Values;
            }

            XYDiagram diagram = (XYDiagram)chartTop.Diagram;

            diagram.EnableAxisXScrolling = true;



            //Evolução Geral
            List <Produtividade> dtEvolucao = Produtividade.GetEvolucaoMensal(cboDtInicio.Date, cboDtFim.Date);

            this.chartRight.DataSource       = dtEvolucao;
            this.chartRight.SeriesDataMember = "Funcionario";
            this.chartRight.SeriesTemplate.ArgumentDataMember = "Periodo";
            this.chartRight.SeriesTemplate.ValueDataMembers.AddRange(new string[] { "qtdRecs" });
            this.chartRight.DataBind();

            foreach (DevExpress.XtraCharts.Series serie in chartRight.Series)
            {
                serie.LabelsVisibility             = DevExpress.Utils.DefaultBoolean.True;
                serie.Label.LineVisible            = true;
                serie.LegendPointOptions.PointView = DevExpress.XtraCharts.PointView.Values;
            }



            //Evolução Diaria
            List <Produtividade> dtEvolucaoDiaria = Produtividade.GetEvolucaoDiaria(cboDtInicio.Date, cboDtFim.Date);



            for (DateTime d = this.cboDtInicio.Date; d < cboDtFim.Date; d = d.AddDays(1))
            {
                if (dtEvolucaoDiaria.Find(f => f.Periodo == d.ToString("yyyy-MM-dd")) == null)
                {
                    dtEvolucaoDiaria.Add(new Produtividade
                    {
                        Funcionario      = "Evolucao",
                        Periodo          = d.ToString("yyyy-MM-dd hh:mm:ss"),
                        PeriodoFormatado = d.ToString("dd/MMM"),
                        id_usuario       = "Evolucao",
                        qtdRecs          = 0
                    });
                }
            }



            this.chrEvolDiaria.DataSource  = dtEvolucaoDiaria.OrderBy(f => f.Periodo).ToList();
            chrEvolDiaria.SeriesDataMember = "Funcionario";
            chrEvolDiaria.SeriesTemplate.ArgumentDataMember = "PeriodoFormatado";
            chrEvolDiaria.SeriesTemplate.ValueDataMembers.AddRange(new string[] { "qtdRecs" });
            chrEvolDiaria.DataBind();
            foreach (DevExpress.XtraCharts.Series serie in chrEvolDiaria.Series)
            {
                serie.LabelsVisibility             = DevExpress.Utils.DefaultBoolean.True;
                serie.Label.LineVisible            = true;
                serie.LegendPointOptions.PointView = DevExpress.XtraCharts.PointView.Values;
            }



            //Painel BSC
            List <ItemRanking> objRanking = ItemRanking.GeraRanking(cboDtInicio.Date, cboDtFim.Date);

            rptBscItens.DataSource = objRanking;
            rptBscItens.DataBind();

            this.pnlMain.Visible = true;
        }