public IEnumerable <ChamadoOcorrencia> ListarProblemaSolucao(ChamadoFiltro filtro, string texto, int idUsuario, EnumChamado tipo)
        {
            var    usuarioADO = new UsuarioADO();
            string permissao  = usuarioADO.UsuarioCliente(idUsuario);

            var sb = new StringBuilder();

            sb.AppendLine(" SELECT ");
            sb.AppendLine("   ChOco_Chamado,");
            sb.AppendLine("   ChOco_Data,");
            sb.AppendLine("   ChOco_HoraInicio,");
            sb.AppendLine("   ChOco_HoraFim,");
            sb.AppendLine("   ChOco_DescricaoSolucao,");
            sb.AppendLine("   ChOco_DescricaoTecnica,");
            sb.AppendLine("   Usu_Nome");
            sb.AppendLine(" FROM Chamado_Ocorrencia");
            sb.AppendLine("   INNER JOIN Chamado ON ChOco_Chamado = Cha_Id");
            sb.AppendLine("   INNER JOIN Cliente ON Cha_Cliente = Cli_Id");
            sb.AppendLine("   INNER JOIN Usuario ON ChOco_Usuario = Usu_Id	");
            sb.AppendLine(" WHERE ((ChOco_DescricaoTecnica LIKE " + texto + ") OR (ChOco_DescricaoSolucao LIKE " + texto + "))");
            sb.AppendLine(permissao);

            if (tipo == EnumChamado.Chamado)
            {
                sb.AppendLine(" AND cha_TipoMovimento = 1");
            }
            else
            {
                sb.AppendLine(" AND cha_TipoMovimento = 2");
            }

            if (filtro.IdCliente != "")
            {
                sb.AppendLine(" AND Cha_Cliente IN " + filtro.IdCliente);
            }

            sb.AppendLine(" ORDER BY ChOco_Data");

            var lista = new List <ChamadoOcorrencia>();

            using (var db = new BancoADO())
            {
                db.RetornoReader(sb.ToString());

                while (db.Read())
                {
                    var model = new ChamadoOcorrencia();
                    model.ChamadoId        = db.CampoInt32("ChOco_Chamado");
                    model.Data             = db.CampoData("ChOco_Data");
                    model.HoraInicio       = TimeSpan.Parse(db.CampoData("ChOco_HoraInicio").ToShortTimeString());
                    model.HoraFim          = TimeSpan.Parse(db.CampoData("ChOco_HoraFim").ToShortTimeString());
                    model.DescricaoSolucao = db.CampoStr("ChOco_DescricaoSolucao");
                    model.DescricaoTecnica = db.CampoStr("ChOco_DescricaoTecnica");
                    model.Usuario.Nome     = db.CampoStr("Usu_Nome");
                    lista.Add(model);
                }
                db.CloseReader();
            }
            return(lista);
        }
        private string RetornarSQLQuadro(int idUsuario, int idRevenda, int codigoParametro, string campoQuadro, EnumChamado tipo)
        {
            var    usuario   = new UsuarioADO();
            string sConsulta = usuario.UsuarioCliente(idUsuario);

            var sb = new StringBuilder();

            sb.AppendLine(" SELECT");
            sb.Append(campoQuadro);
            sb.AppendLine("	Cha_Id as Id,");
            sb.AppendLine("	Cha_DataAbertura as DataAbertura,");
            sb.AppendLine("	Cha_HoraAbertura as HoraAbertura,");
            sb.AppendLine("	Cli_Nome as NomeCliente,");
            sb.AppendLine("	CASE cha_Nivel");
            sb.AppendLine("		WHEN 1 THEN '1-Baixo'");
            sb.AppendLine("		WHEN 2 THEN '2-Normal'");
            sb.AppendLine("		WHEN 3 THEN '3-Alto'");
            sb.AppendLine("		WHEN 4 THEN '4-Crítico'");
            sb.AppendLine("	END as NivelDescricao,");
            sb.AppendLine("  Cha_Nivel as Nivel,");
            sb.AppendLine("  Cha_UsuarioAtendeAtual as UsuarioAtendeAtualId,");
            sb.AppendLine("  Sta_Codigo as CodigoStatus,");
            sb.AppendLine("  Cli_Codigo as CodigoCliente,");
            sb.AppendLine("	Tip_Nome as NomeTipo,");
            sb.AppendLine("  UltimaHora = dbo.Func_Chamado_BuscarUltimaHoraOcorrencia (Cha_Id),");
            sb.AppendLine("	cha_HoraAtendeAtual as HoraAtendeAtual,");
            sb.AppendLine("  (");
            sb.AppendLine("	   SELECT TOP(1) MAX(CHAO.ChOco_Data) FROM dbo.Chamado_Ocorrencia AS CHAO");
            sb.AppendLine("		WHERE CHAO.ChOco_Chamado = dbo.Chamado.Cha_Id");
            sb.AppendLine(" 	) AS UltimaData,");
            sb.AppendLine("  Par_Codigo as CodigoParametro,");
            sb.AppendLine("	Usu_Nome as NomeUsuario");
            sb.AppendLine("FROM Chamado");
            sb.AppendLine("	INNER JOIN Cliente ON Cha_Cliente = Cli_Id");
            sb.AppendLine("	INNER JOIN Tipo ON Cha_Tipo = Tip_Id");
            sb.AppendLine("	INNER JOIN Status ON Cha_Status = Sta_Id");
            sb.AppendLine(" LEFT JOIN Usuario ON Cha_UsuarioAtendeAtual = Usu_Id");
            sb.AppendLine("	LEFT JOIN Parametros ON Sta_Codigo = COALESCE(Par_Valor, 0)");

            sb.AppendLine("WHERE par_Codigo = " + codigoParametro);
            sb.AppendLine(sConsulta);

            if (idRevenda > 0)
            {
                sb.AppendLine("AND (Cli_Revenda = " + idRevenda + ")");
            }

            sb.AppendLine(" --=============================================================================");

            if (tipo == EnumChamado.Chamado)
            {
                if (codigoParametro < 8)
                {
                    sb.AppendLine(" UNION ");
                }
            }
            else
            {
                if (codigoParametro < 30)
                {
                    sb.AppendLine(" UNION ");
                }
            }
            return(sb.ToString());



            //var usuario = new UsuarioADO();
            //string sConsulta = usuario.UsuarioCliente(idUsuario);

            //var sb = new StringBuilder();

            //sb.AppendLine(" SELECT");
            //sb.Append(campoQuadro);
            //sb.AppendLine("	Cha_Id,");
            //sb.AppendLine("	Cha_DataAbertura,");
            //sb.AppendLine("	Cha_HoraAbertura,");
            //sb.AppendLine("	Cli_Nome,");
            //sb.AppendLine("	CASE cha_Nivel");
            //sb.AppendLine("		WHEN 1 THEN '1-Baixo'");
            //sb.AppendLine("		WHEN 2 THEN '2-Normal'");
            //sb.AppendLine("		WHEN 3 THEN '3-Alto'");
            //sb.AppendLine("		WHEN 4 THEN '4-Crítico'");
            //sb.AppendLine("	END AS Cha_Nivel,");
            //sb.AppendLine("  Cha_Nivel as Nivel,");
            //sb.AppendLine("  Cha_UsuarioAtendeAtual,");
            //sb.AppendLine("  Sta_Codigo,");
            //sb.AppendLine("  Cli_Codigo,");
            //sb.AppendLine("	Tip_Nome,");
            //sb.AppendLine("  UltimaHora = dbo.Func_Chamado_BuscarUltimaHoraOcorrencia (Cha_Id),");
            //sb.AppendLine("	cha_HoraAtendeAtual,");
            //sb.AppendLine("  (");
            //sb.AppendLine("	   SELECT MAX(CHAO.ChOco_Data) FROM dbo.Chamado_Ocorrencia AS CHAO");
            //sb.AppendLine("		WHERE CHAO.ChOco_Chamado = dbo.Chamado.Cha_Id");
            //sb.AppendLine("   ) AS UltimaData,");
            //sb.AppendLine("  Par_Codigo,");
            //sb.AppendLine("	Usu_Nome");
            //sb.AppendLine("FROM Chamado");
            //sb.AppendLine("	INNER JOIN Cliente ON Cha_Cliente = Cli_Id");
            //sb.AppendLine("	INNER JOIN Tipo ON Cha_Tipo = Tip_Id");
            //sb.AppendLine("	INNER JOIN Status ON Cha_Status = Sta_Id");
            //sb.AppendLine("	INNER JOIN Parametros ON Sta_Codigo = COALESCE(Par_Valor, 0)");
            //sb.AppendLine("  LEFT JOIN Usuario ON Cha_UsuarioAtendeAtual = Usu_Id");
            //sb.AppendLine("WHERE par_Codigo = " + codigoParametro);
            //sb.AppendLine(sConsulta);


            //sb.AppendLine("AND EXISTS(");
            //sb.AppendLine("	SELECT 1 FROM Usuario WHERE ((Cli_Revenda = Usu_Revenda) OR (Usu_Revenda IS NULL))");
            //sb.AppendLine("	AND Usu_Id = " + idUsuario + ")");
            //sb.AppendLine("AND EXISTS(");
            //sb.AppendLine("	SELECT 1 FROM Usuario WHERE ((Cli_Id = Usu_Cliente) OR (Usu_Cliente IS NULL))");
            //sb.AppendLine("	AND Usu_Id = " + idUsuario + ")");

            //if (idRevenda > 0)
            //    sb.AppendLine("AND (Cli_Revenda = " + idUsuario + ")");

            //sb.AppendLine(" --=============================================================================");

            //if (tipo == EnumChamado.Chamado)
            //{
            //    if (codigoParametro < 8)
            //        sb.AppendLine(" UNION ");
            //}
            //else
            //{
            //    if (codigoParametro < 30)
            //        sb.AppendLine(" UNION ");
            //}
            //return sb.ToString();
        }
        public IEnumerable <ChamadoConsulta> Filtrar(ChamadoFiltro filtro, string campo, string texto, int usuarioId, bool contem, EnumChamado tipo)
        {
            var usuarioCliente = new UsuarioADO();
            var sb             = new StringBuilder();

            string sTexto = "";

            sTexto = "'" + texto + "%'";
            if (contem)
            {
                sTexto = "'%" + texto + "%'";
            }

            sb.AppendLine("  SELECT");
            sb.AppendLine(" Cha_Id as Id,");
            sb.AppendLine(" Cha_Descricao as Descricao,");
            sb.AppendLine(" Cha_DataAbertura as DataAbertura,");
            sb.AppendLine(" Cha_HoraAbertura as HoraAbertura,");
            sb.AppendLine(" Sta_Nome as NomeStatus,");
            sb.AppendLine(" Cha_Status as IdStatus,");
            sb.AppendLine(" Tip_Nome as NomeTipo,");
            sb.AppendLine(" Cli_Nome as RazaoSocial,");
            sb.AppendLine(" Cli_Fantasia as Fantasia,");
            sb.AppendLine(" CASE Cha_Nivel");
            sb.AppendLine("   WHEN 1 THEN '1-Baixo'");
            sb.AppendLine("   WHEN 2 THEN '2-Normal'");
            sb.AppendLine("   WHEN 3 THEN '3-Alto'");
            sb.AppendLine("   WHEN 4 THEN '4-Crítico'");
            sb.AppendLine(" END AS Nivel,");
            sb.AppendLine(" Usu_Nome as NomeUsuario");
            sb.AppendLine(" FROM Chamado");
            sb.AppendLine("	INNER JOIN Status  ON Cha_Status = Sta_Id");
            sb.AppendLine("	INNER JOIN Tipo    ON Cha_Tipo = Tip_Id");
            sb.AppendLine(" INNER JOIN Cliente ON Cha_Cliente = Cli_Id");
            sb.AppendLine("	INNER JOIN Usuario ON Cha_UsuarioAbertura = Usu_Id");
            sb.AppendLine(" LEFT JOIN Revenda ON Cli_Revenda = Rev_Id");

            if (!string.IsNullOrWhiteSpace(texto))
            {
                sb.AppendLine(" WHERE " + campo + " LIKE " + sTexto);
            }
            else
            {
                sb.AppendLine("WHERE Cha_Id > 0");
            }

            if (filtro.Id > 0)
            {
                sb.AppendLine(" AND Cha_Id = " + filtro.Id);
            }

            if (tipo == EnumChamado.Chamado)
            {
                sb.AppendLine(" AND Cha_TipoMovimento = 1");
            }
            else
            {
                sb.AppendLine(" AND Cha_TipoMovimento = 2");
            }

            sb.AppendLine(usuarioCliente.UsuarioCliente(usuarioId));

            if ((!string.IsNullOrWhiteSpace(filtro.DataInicial)) && (filtro.DataInicial.Trim() != "/  /"))
            {
                sb.AppendLine(" AND Cha_DataAbertura >=" + Funcoes.DataIngles(filtro.DataInicial));
            }

            if ((!string.IsNullOrWhiteSpace(filtro.DataFinal)) && (filtro.DataFinal.Trim() != "/  /"))
            {
                sb.AppendLine(" AND Cha_DataAbertura <=" + Funcoes.DataIngles(filtro.DataFinal));
            }

            if (!string.IsNullOrWhiteSpace(filtro.IdCliente))
            {
                sb.AppendLine(" AND Cha_Cliente IN " + filtro.IdCliente);
            }

            if (!string.IsNullOrWhiteSpace(filtro.idTipo))
            {
                sb.AppendLine(" AND Cha_Tipo IN " + filtro.idTipo);
            }

            if (!string.IsNullOrWhiteSpace(filtro.IdStatus))
            {
                sb.AppendLine(" AND Cha_Status IN " + filtro.IdStatus);
            }

            if (!string.IsNullOrWhiteSpace(filtro.IdModulo))
            {
                sb.AppendLine(" AND Cha_Modulo IN " + filtro.IdModulo);
            }

            if (!string.IsNullOrWhiteSpace(filtro.IdRevenda))
            {
                sb.AppendLine(" AND Cha_Revenda IN " + filtro.IdRevenda);
            }

            if (!string.IsNullOrWhiteSpace(filtro.IdUsuarioAbertura))
            {
                sb.AppendLine(" AND Cha_UsuarioAbertura IN " + filtro.IdUsuarioAbertura);
            }

            if (filtro.clienteFiltro.UsuarioId > 0)
            {
                sb.AppendLine(" AND Cli_Usuario IN " + filtro.clienteFiltro.UsuarioId);
            }

            var lista = new List <ChamadoConsulta>();

            using (var db = new BancoADO())
            {
                db.RetornoReader(sb.ToString());

                while (db.Read())
                {
                    var model = new ChamadoConsulta
                    {
                        //DataAbertura = db.CampoStr("DataAbertura"),
                        Descricao = db.CampoStr("Descricao"),
                        Fantasia  = db.CampoStr("Fantasia"),
                        //HoraAbertura = db.CampoStr("HoraAbertura"),
                        Id          = db.CampoInt32("Id"),
                        IdStatus    = db.CampoInt32("IdStatus"),
                        Nivel       = db.CampoStr("Nivel"),
                        NomeStatus  = db.CampoStr("NomeStatus"),
                        NomeTipo    = db.CampoStr("NomeTipo"),
                        NomeUsuario = db.CampoStr("NomeUsuario"),
                        RazaoSocial = db.CampoStr("RazaoSocial")
                    };
                    lista.Add(model);
                }
                db.CloseReader();
            }
            return(lista);
        }