public SuitabilityLavagemInfo ObterSuitabilityLavagem(SuitabilityLavagemInfo pRequest)
        {
            var lRetorno     = new SuitabilityLavagemInfo();
            var lAcessaDados = new AcessaDados();

            lAcessaDados.ConnectionStringName = "RiscoOMS";

            lRetorno.Resultado = new List <SuitabilityLavagemInfo>();

            using (DbCommand lDbCommand = lAcessaDados.CreateCommand(CommandType.StoredProcedure, "prc_cliente_suitability_lavagem_sel2"))
            {
                lAcessaDados.AddInParameter(lDbCommand, "@CodigoCliente", DbType.Int32, pRequest.CodigoCliente);
                lAcessaDados.AddInParameter(lDbCommand, "@DataDe", DbType.DateTime, pRequest.DataDe);
                lAcessaDados.AddInParameter(lDbCommand, "@DataAte", DbType.DateTime, pRequest.DataAte);

                var lDataTable = lAcessaDados.ExecuteDbDataTable(lDbCommand);

                if (lDataTable != null && lDataTable.Rows.Count > 0)
                {
                    for (int i = 0; i < lDataTable.Rows.Count; i++)
                    {
                        DataRow lRow = lDataTable.Rows[i];
                        lRetorno.Resultado.Add(new SuitabilityLavagemInfo()
                        {
                            NomeAssessor      = lRow["NomeAssessor"].ToString(),
                            CodigoAssessor    = int.Parse(lRow["CodigoAssessor"].ToString()),
                            NomeCliente       = lRow["NomeCliente"].ToString(),
                            CodigoCliente     = int.Parse(lRow["CodigoCliente"].ToString()),
                            PercentualVOLxSFP = lRow["PercentualVOLxSFP"].DBToDecimal(),
                            Volume            = lRow["VolumeBovespa"].DBToDecimal(),
                            SFP                = decimal.Parse(lRow["SFP"].ToString()),
                            Data               = DateTime.Parse(lRow["Data"].ToString()),
                            CodigoClienteBmf   = int.Parse(lRow["CodigoClienteBmf"].ToString()),
                            ArquivoCiencia     = lRow["ArquivoCiencia"].ToString(),
                            ArquivoCienciaData = lRow["ArquivoCienciaData"].ToString(),
                            Suitability        = null
                        });
                    }
                }
            }

            EfetuaFiltroSuitabilityLavagem(pRequest, ref lRetorno);

            return(lRetorno);
        }
        private string ResponderBuscarItensParaListagemSimples()
        {
            SuitabilityLavagemDbLib lServico = new SuitabilityLavagemDbLib();

            string lRetorno = string.Empty;

            string lColunas = string.Empty;

            SuitabilityLavagemInfo lRequest = new SuitabilityLavagemInfo();

            TransporteDeListaPaginada lRetornoLista = null;

            if (Session["Usuario"] == null)
            {
                return(string.Empty);
            }

            if (null != this.GetCdCliente)
            {
                lRequest.CodigoCliente = this.GetCdCliente.Value;
            }

            if (null != this.GetCdAssessor)
            {
                lRequest.CodigoAssessor = this.GetCdAssessor.Value;
            }

            if (base.CodigoAssessor != null)
            {
                lRequest.CodigoAssessor = base.CodigoAssessor.Value;
                lRequest.CodigoLogin    = this.UsuarioLogado.Id;
            }

            lRequest.enumVolume = this.GetVOLUME;

            lRequest.enumVOLxSFP = this.GetenumVOLxSFP;

            lRequest.enumEnquadrado = this.GetEnquadrado;

            lRequest.DataDe = this.GetDataDe;

            lRequest.DataAte = this.GetDataAte;

            SuitabilityLavagemInfo lRetornoConsulta = new SuitabilityLavagemInfo();

            lRetornoConsulta = lServico.ObterSuitabilityLavagem(lRequest);

            if (lRetornoConsulta != null && lRetornoConsulta.Resultado != null)
            {
                List <TransporteSuitabilityLavagem> lListaTransporte = new TransporteSuitabilityLavagem().TraduzirLista(lRetornoConsulta.Resultado);

                this.SessaoUltimaConsulta = lListaTransporte;

                this.ResponderFiltrarPorColuna();

                lRetornoLista = new TransporteDeListaPaginada(this.SessaoUltimaConsulta);

                lRetorno = JsonConvert.SerializeObject(lRetornoLista);

                lRetornoLista.TotalDeItens = lRetornoConsulta.Resultado.Count;// this.SessaoUltimaConsulta.Count;

                lRetornoLista.PaginaAtual = 1;

                lRetornoLista.TotalDePaginas = 0;

                return(lRetorno);
            }
            else
            {
                lRetorno = base.RetornarErroAjax("Ocorreu um erro ao processar a requisição");
            }

            return(lRetorno);
        }
        private string ResponderExportarParaExcel()
        {
            string lRetorno = string.Empty;

            var lConteudoArquivo = new StringBuilder();

            SuitabilityLavagemDbLib lServico = new SuitabilityLavagemDbLib();

            lConteudoArquivo.Append("Codigo Cliente\tNome Cliente\tAssessor\tNome Assessor\tVolume\tSFP\t% Vol./SFP\tSuitability\tCodigo Bmf\n");

            SuitabilityLavagemInfo lRetornoConsulta = new SuitabilityLavagemInfo();

            SuitabilityLavagemInfo lRequest = new SuitabilityLavagemInfo();

            if (null != this.GetCdCliente)
            {
                lRequest.CodigoCliente = this.GetCdCliente.Value;
            }

            if (null != this.GetCdAssessor)
            {
                lRequest.CodigoAssessor = this.GetCdAssessor.Value;
            }

            if (base.CodigoAssessor != null)
            {
                lRequest.CodigoAssessor = base.CodigoAssessor.Value;
                lRequest.CodigoLogin    = this.UsuarioLogado.Id;
            }

            lRequest.enumVolume = this.GetVOLUME;

            lRequest.enumVOLxSFP = this.GetenumVOLxSFP;

            lRequest.enumEnquadrado = this.GetEnquadrado;

            lRequest.DataDe = this.GetDataDe;

            lRequest.DataAte = this.GetDataAte;

            lRetornoConsulta = lServico.ObterSuitabilityLavagem(lRequest);

            if (lRetornoConsulta != null && lRetornoConsulta.Resultado != null)
            {
                var lTransporte = new TransporteSuitabilityLavagem().TraduzirLista(lRetornoConsulta.Resultado);

                lTransporte.ForEach
                    (sui =>
                {
                    lConteudoArquivo.AppendFormat("{0}\t{1}\t{2}\t{3}\t{4}\t{5}\t{6}\t{7}\t{8}\n", sui.CodigoCliente, sui.NomeCliente, sui.CodigoAssessor, sui.NomeAssessor, sui.Volume, sui.SFP, sui.PercentualVOLxSFP, sui.Suitability, sui.CodigoClienteBmf);
                });
            }

            this.Response.Clear();

            this.Response.ContentType = "text/xls";

            this.Response.ContentEncoding = Encoding.GetEncoding("iso-8859-1");

            this.Response.Charset = "iso-8859-1";

            this.Response.AddHeader("content-disposition", string.Format("attachment;filename=SuitabilityLavagem_{0}.xls", DateTime.Now.ToString("dd-MM-yyyy_HH-mm")));

            this.Response.Write(lConteudoArquivo.ToString());

            this.Response.End();

            return(base.RetornarSucessoAjax("Sucesso"));
        }
        private void EfetuaFiltroSuitabilityLavagem(SuitabilityLavagemInfo pRequest, ref SuitabilityLavagemInfo lRetorno)
        {
            IEnumerable <SuitabilityLavagemInfo> lRetornoValor;

            switch (pRequest.enumVolume)
            {
            case enumVolume.ABAIXO_500M:
                lRetornoValor = from a in lRetorno.Resultado where a.Volume < 500000 select a;
                break;

            case enumVolume.ENTRE_500M_E_1000M:
                lRetornoValor = from a in lRetorno.Resultado where a.Volume > 500000 && a.Volume < 1000000 select a;
                break;

            case enumVolume.ACIMA_1000M:
                lRetornoValor = from a in lRetorno.Resultado where a.Volume > 1000000 select a;
                break;

            default:
                lRetornoValor = from a in lRetorno.Resultado select a;
                break;
            }

            lRetorno.Resultado = lRetornoValor.ToList();

            switch (pRequest.enumVOLxSFP)
            {
            case enumVOLxSFP.ABAIXO_20:
                lRetornoValor = from a in lRetorno.Resultado where a.PercentualVOLxSFP < 20 select a;
                break;

            case enumVOLxSFP.ENTRE_20_E_50:
                lRetornoValor = from a in lRetorno.Resultado where a.PercentualVOLxSFP > 20 && a.PercentualVOLxSFP < 50 select a;
                break;

            case enumVOLxSFP.ACIMA_50:
                lRetornoValor = from a in lRetorno.Resultado where a.PercentualVOLxSFP > 50 select a;
                break;

            default:
                lRetornoValor = from a in lRetorno.Resultado select a;
                break;
            }

            lRetorno.Resultado = lRetornoValor.ToList();

            if (pRequest.CodigoAssessor.HasValue)
            {
                List <int> lClientes = ClienteDbLib.ReceberListaClientesAssessoresVinculados(pRequest.CodigoAssessor.Value);

                lRetornoValor = from a in lRetornoValor where lClientes.Contains(a.CodigoCliente.Value) select a;

                lRetorno.Resultado = lRetornoValor.ToList();
            }

            SuitabilityClienteDataNaoEnquadrados lRequest = new SuitabilityClienteDataNaoEnquadrados();

            lRequest.DataDe  = pRequest.DataDe.Value;
            lRequest.DataAte = pRequest.DataAte.Value;

            List <SuitabilityClienteDataNaoEnquadrados> lListaSuitability = this.ObterSuitabilityStatusData(lRequest);

            foreach (SuitabilityLavagemInfo info in  lRetorno.Resultado)
            {
                var lSuitability = lListaSuitability.Find(suit => { return(suit.CodigoBovespa == info.CodigoCliente); });

                if (lSuitability != null)
                {
                    info.Suitability = "Não Enquadrado";
                }
                else
                {
                    info.Suitability = "Enquadrado";
                }
            }

            switch (pRequest.enumEnquadrado)
            {
            case enumEnquadrado.Todos:
                lRetornoValor = from a in lRetorno.Resultado select a;
                break;

            case enumEnquadrado.Enquadrado:
                lRetornoValor = from a in lRetorno.Resultado where a.Suitability == "Enquadrado" select a;
                break;

            case enumEnquadrado.NaoEnquadrado:
                lRetornoValor = from a in lRetorno.Resultado where a.Suitability == "Não Enquadrado" select a;
                break;
            }

            lRetorno.Resultado = lRetornoValor.ToList();

            List <int> lstClientesInstitucionais = ObterClientesInstitucionais();

            //lRetorno.Resultado = (from a in lRetornoValor where !lstClientesInstitucionais.Contains(a.CodigoCliente.Value) select a ).ToList();

            List <int> lstClientesInstitucionaisBmf = ObterClientesInstitucionaisBMF();

            lRetorno.Resultado = (from a in lRetorno.Resultado where !lstClientesInstitucionaisBmf.Contains(a.CodigoCliente.Value) && !lstClientesInstitucionais.Contains(a.CodigoCliente.Value) select a).ToList();
        }