//[return: XmlRoot(ElementName = "testeteste")]
        public Entidades.Cadastral.SISCOM.Response PesquisaPF(string loginUsuario, string senhaUsuario, string numeroCPF)
        {
            try
            {
                //Limpando pontos, barras e espaços do CPF
                numeroCPF = numeroCPF.Replace(".", "").Replace(".", "").Replace("-", "").Replace("/", "");
                numeroCPF = numeroCPF.Trim();
                numeroCPF = numeroCPF.PadLeft(11, '0');

                Entidades.Cadastral.SISCOM.Response retResponse = new Entidades.Cadastral.SISCOM.Response();

                #region Parametros de Entrada

                retResponse.Input = new List <Entidades.Cadastral.SISCOM.InputItem>();
                //retResponse.Input.Add(new Entidades.Cadastral.SISCOM.InputItem() { Key = "loginUsuario", Value = loginUsuario });
                //retResponse.Input.Add(new Entidades.Cadastral.SISCOM.InputItem() { Key = "senhaUsuario", Value = senhaUsuario });
                retResponse.Input.Add(new Entidades.Cadastral.SISCOM.InputItem()
                {
                    Key = "CPF", Value = numeroCPF
                });

                #endregion

                #region Controle de Erros

                if (loginUsuario.Trim().Length == 0)
                {
                    retResponse.ResponseError.ErrorCode  = "400";
                    retResponse.ResponseError.Message    = "HTTP/1.1 400 Bad Request";
                    retResponse.ResponseError.StackTrace = "";

                    Entidades.Cadastral.SISCOM.Error Erro = new Entidades.Cadastral.SISCOM.Error();
                    Erro.ErrorCode = "400";
                    Erro.FieldName = "loginUsuario";
                    Erro.Message   = retResponse.ResponseError.Message;

                    if (retResponse.ResponseError.Errors == null)
                    {
                        retResponse.ResponseError.Errors = new List <Entidades.Cadastral.SISCOM.Error>();
                    }

                    retResponse.ResponseError.Errors.Add(Erro);

                    retResponse.Status          = new Entidades.Cadastral.SISCOM.Status();
                    retResponse.Status.Code     = 400;
                    retResponse.Status.DateTime = DataBR;
                    retResponse.Status.Detail   = "O login nao foi informado";
                    retResponse.Status.Message  = Erro.Message;
                    retResponse.Status.Source   = string.Empty;
                    retResponse.Status.Type     = string.Empty;
                }

                if (senhaUsuario.Trim().Length == 0)
                {
                    retResponse.ResponseError.ErrorCode  = "400";
                    retResponse.ResponseError.Message    = "HTTP/1.1 400 Bad Request";
                    retResponse.ResponseError.StackTrace = "";

                    Entidades.Cadastral.SISCOM.Error Erro = new Entidades.Cadastral.SISCOM.Error();
                    Erro.ErrorCode = "400";
                    Erro.FieldName = "senhaUsuario";
                    Erro.Message   = retResponse.ResponseError.Message;

                    if (retResponse.ResponseError.Errors == null)
                    {
                        retResponse.ResponseError.Errors = new List <Entidades.Cadastral.SISCOM.Error>();
                    }

                    retResponse.ResponseError.Errors.Add(Erro);

                    retResponse.Status          = new Entidades.Cadastral.SISCOM.Status();
                    retResponse.Status.Code     = 400;
                    retResponse.Status.DateTime = DataBR;
                    retResponse.Status.Detail   = "A senha nao foi informada";
                    retResponse.Status.Message  = Erro.Message;
                    retResponse.Status.Source   = string.Empty;
                    retResponse.Status.Type     = string.Empty;
                }

                if (numeroCPF.Trim().Length == 0)
                {
                    retResponse.ResponseError.ErrorCode  = "400";
                    retResponse.ResponseError.Message    = "HTTP/1.1 400 Bad Request";
                    retResponse.ResponseError.StackTrace = "";

                    Entidades.Cadastral.SISCOM.Error Erro = new Entidades.Cadastral.SISCOM.Error();
                    Erro.ErrorCode = "400";
                    Erro.FieldName = "numeroCPF";
                    Erro.Message   = retResponse.ResponseError.Message;

                    if (retResponse.ResponseError.Errors == null)
                    {
                        retResponse.ResponseError.Errors = new List <Entidades.Cadastral.SISCOM.Error>();
                    }

                    retResponse.ResponseError.Errors.Add(Erro);

                    retResponse.Status          = new Entidades.Cadastral.SISCOM.Status();
                    retResponse.Status.Code     = 400;
                    retResponse.Status.DateTime = DataBR;
                    retResponse.Status.Detail   = "O CPF nao foi informado";
                    retResponse.Status.Message  = Erro.Message;
                    retResponse.Status.Source   = string.Empty;
                    retResponse.Status.Type     = string.Empty;
                }

                //Validando CPF
                if (!numeroCPF.Equals("00000000000") && (!Util.Format.ValidaCPFCNPJ(numeroCPF, false) || numeroCPF.Length != 11))
                {
                    retResponse.ResponseError.ErrorCode  = "400";
                    retResponse.ResponseError.Message    = "HTTP/1.1 400 Bad Request";
                    retResponse.ResponseError.StackTrace = "";

                    Entidades.Cadastral.SISCOM.Error Erro = new Entidades.Cadastral.SISCOM.Error();
                    Erro.ErrorCode = "400";
                    Erro.FieldName = "numeroCPF";
                    Erro.Message   = retResponse.ResponseError.Message;

                    if (retResponse.ResponseError.Errors == null)
                    {
                        retResponse.ResponseError.Errors = new List <Entidades.Cadastral.SISCOM.Error>();
                    }

                    retResponse.ResponseError.Errors.Add(Erro);

                    retResponse.Status          = new Entidades.Cadastral.SISCOM.Status();
                    retResponse.Status.Code     = 400;
                    retResponse.Status.DateTime = DataBR;
                    retResponse.Status.Detail   = "CPF Invalido";
                    retResponse.Status.Message  = Erro.Message;
                    retResponse.Status.Source   = string.Empty;
                    retResponse.Status.Type     = string.Empty;
                }

                if (retResponse.ResponseError.Errors != null && retResponse.ResponseError.Errors.Count > 0)
                {
                    return(retResponse);
                }

                #endregion

                string NomeInternoProduto = "WEBSERVICE SISCOM PESQUISA PF";

                if (Autenticacao(loginUsuario, senhaUsuario))
                {
                    //Verificando inicialmente se o usuário tem permissão ao produto
                    List <Entidades.Produto> listProd = new List <Entidades.Produto>();
                    listProd = ListarProdutoSolicitadoByUsuario(((Entidades.Usuario)Session["ws_siscom_acesso"]).IdUsuario, NomeInternoProduto);

                    if (listProd == null || listProd.Count == 0)
                    {
                        retResponse.ResponseError.ErrorCode  = "401";
                        retResponse.ResponseError.Message    = "HTTP/1.1 401 Unauthorized";
                        retResponse.ResponseError.StackTrace = "";

                        Entidades.Cadastral.SISCOM.Error Erro = new Entidades.Cadastral.SISCOM.Error();
                        Erro.ErrorCode = "401";
                        Erro.FieldName = "";
                        Erro.Message   = retResponse.ResponseError.Message;

                        if (retResponse.ResponseError.Errors == null)
                        {
                            retResponse.ResponseError.Errors = new List <Entidades.Cadastral.SISCOM.Error>();
                        }

                        retResponse.ResponseError.Errors.Add(Erro);

                        retResponse.Status          = new Entidades.Cadastral.SISCOM.Status();
                        retResponse.Status.Code     = 401;
                        retResponse.Status.DateTime = DataBR;
                        retResponse.Status.Detail   = "Voce nao tem permissao para utilizar este produto";
                        retResponse.Status.Message  = Erro.Message;
                        retResponse.Status.Source   = string.Empty;
                        retResponse.Status.Type     = string.Empty;

                        return(retResponse);
                    }
                    else
                    {
                        if (numeroCPF.Trim().Equals("00000000000"))
                        {
                            return(TestesDeIntegracao());
                        }
                        else
                        {
                            Negocios.Cadastral.WS.SISCOM n = new Negocios.Cadastral.WS.SISCOM();

                            Entidades.Cadastral.SISCOM.Response retorno = new Entidades.Cadastral.SISCOM.Response();

                            retorno = n.SISCOMPesquisaPF(numeroCPF);

                            if (retorno.Output.DadosCadastrais.Nome.Trim().Equals("") && retorno.Output.Emails.Count == 0 && retorno.Output.Enderecos.Count == 0 && retorno.Output.Telefones.Count == 0)
                            {
                                string codigoItemProduto         = listProd.FirstOrDefault().CodigoProduto;
                                Entidades.HistoricoPesquisa hist = SalvarHistoricoPesquisa("N", codigoItemProduto, "", numeroCPF, "CPF");

                                retorno.Input           = retResponse.Input;
                                retorno.ResponseError   = retResponse.ResponseError;
                                retorno.Status          = new Entidades.Cadastral.SISCOM.Status();
                                retorno.Status.Code     = 204;
                                retorno.Status.DateTime = DataBR;
                                retorno.Status.Detail   = "SOLICITACAO PROCESSADA COM SUCESSO";
                                retorno.Status.Message  = "No Content";
                                retorno.Status.Source   = ((Entidades.Usuario)Session["ws_siscom_acesso"]).Cliente.NomeFantasia;
                                retorno.Status.Type     = "Consulta Siscom PF";
                                retorno.Status.Protocol = hist.ProtocoloRetorno;

                                var xns = new XmlSerializerNamespaces();
                                xns.Add(string.Empty, string.Empty);
                                var xs  = new XmlSerializer(retorno.GetType());
                                var xml = new StringWriter();
                                xs.Serialize(xml, retorno, xns);

                                SalvarHistoricoFornecedor("N", hist.IdHistoricoConsulta, xml.ToString(), NomeInternoProduto, "DNA");
                            }
                            else
                            {
                                string codigoItemProduto         = listProd.FirstOrDefault().CodigoItemProduto;
                                Entidades.HistoricoPesquisa hist = SalvarHistoricoPesquisa("S", codigoItemProduto, "", numeroCPF, "CPF");

                                retorno.Input           = retResponse.Input;
                                retorno.ResponseError   = retResponse.ResponseError;
                                retorno.Status          = new Entidades.Cadastral.SISCOM.Status();
                                retorno.Status.Code     = 200;
                                retorno.Status.DateTime = DataBR;
                                retorno.Status.Detail   = "SOLICITACAO PROCESSADA COM SUCESSO";
                                retorno.Status.Message  = "OK";
                                retorno.Status.Source   = ((Entidades.Usuario)Session["ws_siscom_acesso"]).Cliente.NomeFantasia;
                                retorno.Status.Type     = "Consulta Siscom PF";
                                retorno.Status.Protocol = hist.ProtocoloRetorno;

                                var xns = new XmlSerializerNamespaces();
                                xns.Add(string.Empty, string.Empty);
                                var xs  = new XmlSerializer(retorno.GetType());
                                var xml = new StringWriter();
                                xs.Serialize(xml, retorno, xns);

                                SalvarHistoricoFornecedor("S", hist.IdHistoricoConsulta, xml.ToString(), NomeInternoProduto, "DNA");
                            }

                            return(retorno);
                        }
                    }
                }
                else
                {
                    retResponse.ResponseError.ErrorCode  = "401";
                    retResponse.ResponseError.Message    = "HTTP/1.1 401 Unauthorized";
                    retResponse.ResponseError.StackTrace = "";

                    Entidades.Cadastral.SISCOM.Error Erro = new Entidades.Cadastral.SISCOM.Error();
                    Erro.ErrorCode = "401";
                    Erro.FieldName = "";
                    Erro.Message   = "O LOGIN OU A SENHA INSERIDOS ESTAO INCORRETOS.";

                    if (retResponse.ResponseError.Errors == null)
                    {
                        retResponse.ResponseError.Errors = new List <Entidades.Cadastral.SISCOM.Error>();
                    }

                    retResponse.Status          = new Entidades.Cadastral.SISCOM.Status();
                    retResponse.Status.Code     = 401;
                    retResponse.Status.DateTime = DataBR;
                    retResponse.Status.Detail   = string.Empty;
                    retResponse.Status.Message  = Erro.Message;
                    retResponse.Status.Source   = string.Empty;
                    retResponse.Status.Type     = string.Empty;

                    retResponse.ResponseError.Errors.Add(Erro);

                    return(retResponse);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        private Entidades.Cadastral.SISCOM.Response TestesDeIntegracao()
        {
            Entidades.Cadastral.SISCOM.Response ret = new Entidades.Cadastral.SISCOM.Response();

            ret.Input.Add(new Entidades.Cadastral.SISCOM.InputItem()
            {
                Key = "CPF", Value = "00000000000"
            });

            ret.Output.DadosCadastrais.CPF  = "00000000000";
            ret.Output.DadosCadastrais.Nome = "MARIA DA SILVA";
            ret.Output.DadosCadastrais.RG   = "123456789";

            ret.Output.Emails.Add(new Entidades.Cadastral.SISCOM.Email()
            {
                Endereco = "*****@*****.**"
            });
            ret.Output.Emails.Add(new Entidades.Cadastral.SISCOM.Email()
            {
                Endereco = "*****@*****.**"
            });
            ret.Output.Emails.Add(new Entidades.Cadastral.SISCOM.Email()
            {
                Endereco = "*****@*****.**"
            });

            ret.Output.Enderecos.Add(new Entidades.Cadastral.SISCOM.Endereco()
            {
                Bairro = "JARDIM SAO PAULO", CEP = "01234567", Cidade = "SAO PAULO", Complemento = "Casa 02", Logradouro = "RUA JORGE GOUVEIA", Numero = "123", UF = "SP"
            });
            ret.Output.Enderecos.Add(new Entidades.Cadastral.SISCOM.Endereco()
            {
                Bairro = "JARDIM PRIMAVERA", CEP = "12345678", Cidade = "DIADEMA", Complemento = "AP 1 B2", Logradouro = "AV CABRAL XX", Numero = "10", UF = "SP"
            });
            ret.Output.Enderecos.Add(new Entidades.Cadastral.SISCOM.Endereco()
            {
                Bairro = "PARQUE SAO JUDAS TADEU", CEP = "23456789", Cidade = "ITU", Complemento = "", Logradouro = "RUA PRACA DA ARVORE", Numero = "86", UF = "SP"
            });
            ret.Output.Enderecos.Add(new Entidades.Cadastral.SISCOM.Endereco()
            {
                Bairro = "VILA CARIOCA", CEP = "34567890", Cidade = "SAO BERNARDO DO CAMPO", Complemento = "Casa 1", Logradouro = "BECO MARIA BONITA", Numero = "11203", UF = "SP"
            });

            ret.Output.Telefones.Add(new Entidades.Cadastral.SISCOM.Telefone()
            {
                DDD = 11, Numero = 33335555
            });
            ret.Output.Telefones.Add(new Entidades.Cadastral.SISCOM.Telefone()
            {
                DDD = 13, Numero = 23556698
            });
            ret.Output.Telefones.Add(new Entidades.Cadastral.SISCOM.Telefone()
            {
                DDD = 11, Numero = 987156630
            });

            ret.Status.Code     = 200;
            ret.Status.DateTime = DateTime.Now;
            ret.Status.Detail   = "SOLICITACAO PROCESSADA COM SUCESSO";
            ret.Status.Message  = "OK";
            ret.Status.Protocol = Guid.NewGuid().ToString();
            ret.Status.Source   = "DNA CONSULTORIA";
            ret.Status.Type     = "Consulta Siscom PF";

            return(ret);
        }
        public Entidades.Cadastral.SISCOM.Response SISCOMPesquisaPF(string CPF)
        {
            try
            {
                Entidades.Cadastral.SISCOM.Response retResponse = new Entidades.Cadastral.SISCOM.Response();

                DataSet ds = new DataSet();

                Dados.Cadastral.WS.SISCOM neg = new Dados.Cadastral.WS.SISCOM();

                neg.PesquisaPF(CPF, ref ds);

                if (ds != null && ds.Tables.Count > 0)
                {
                    // Tabela 1 -> Dados Cadastrais
                    foreach (DataRow dr in ds.Tables[0].Rows)
                    {
                        retResponse.Output.DadosCadastrais      = new Entidades.Cadastral.SISCOM.DadosCadastrais();
                        retResponse.Output.DadosCadastrais.CPF  = dr["CPF"].ToString();
                        retResponse.Output.DadosCadastrais.Nome = dr["NOME"].ToString();
                        retResponse.Output.DadosCadastrais.RG   = dr["RG"].ToString();
                    }

                    // Tabela 2 -> Dados de Telefones
                    foreach (DataRow dr in ds.Tables[1].Rows)
                    {
                        if (retResponse.Output.Telefones == null)
                        {
                            retResponse.Output.Telefones = new List <Entidades.Cadastral.SISCOM.Telefone>();
                        }

                        Entidades.Cadastral.SISCOM.Telefone tel = new Entidades.Cadastral.SISCOM.Telefone();

                        if (dr["DDD"].ToString().Trim().Equals(""))
                        {
                            tel.DDD    = 0;
                            tel.Numero = 0;
                        }
                        else
                        {
                            try
                            {
                                tel.DDD    = int.Parse(dr["DDD"].ToString());
                                tel.Numero = int.Parse(dr["TELEFONE"].ToString());
                            }
                            catch
                            {
                                tel.DDD    = 0;
                                tel.Numero = 0;
                            }
                        }

                        retResponse.Output.Telefones.Add(tel);
                    }

                    // Tabela 3 -> Dados de Endereços
                    foreach (DataRow dr in ds.Tables[2].Rows)
                    {
                        if (retResponse.Output.Enderecos == null)
                        {
                            retResponse.Output.Enderecos = new List <Entidades.Cadastral.SISCOM.Endereco>();
                        }

                        Entidades.Cadastral.SISCOM.Endereco ende = new Entidades.Cadastral.SISCOM.Endereco();

                        ende.Logradouro  = dr["LOGRADOURO"].ToString();
                        ende.Numero      = dr["NUMERO"].ToString();
                        ende.Complemento = dr["COMPLEMENTO"].ToString();
                        ende.Bairro      = dr["BAIRRO"].ToString();
                        ende.Cidade      = dr["CIDADE"].ToString();
                        ende.UF          = dr["UF"].ToString();
                        ende.CEP         = dr["CEP"].ToString();

                        retResponse.Output.Enderecos.Add(ende);
                    }

                    // Tabela 4 -> Dados de Emails
                    foreach (DataRow dr in ds.Tables[3].Rows)
                    {
                        if (retResponse.Output.Emails == null)
                        {
                            retResponse.Output.Emails = new List <Entidades.Cadastral.SISCOM.Email>();
                        }

                        Entidades.Cadastral.SISCOM.Email email = new Entidades.Cadastral.SISCOM.Email();

                        email.Endereco = dr["EMAIL"].ToString();

                        retResponse.Output.Emails.Add(email);
                    }
                }

                return(retResponse);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }