/**
         * Metodo chamado da tela.
         *
         * */
        public RetornoChamada SolicitaPortabilidade(ModeloCanonico.Custumer customer)
        {
            Acount conta = null;
            string cpf = customer.Cpf;
            /**
             * Chamada ao YUM*/
            customer = InovixUtil.obterClienteYUM(cpf);

            /**
             * Caso chamada ao YUM não encontre o cliente, chamando o kgb
             * */
            if (customer == null)
            {
                customer = InovixUtil.obterClienteKGB(cpf);
                //incluindo o cliente na base do yum
                InovixUtil.atualizarClienteYUM(customer);
            }

            conta = InovixUtil.obterDadosContaKGB(customer);

            customerGlobal = customer;
            contaGlobal = conta;

            object state = conta;

            var task = Task<RetornoChamada>.Factory.FromAsync(BeginObterRespostaAnatel, EndReceberRespostaAnatel, customer, conta, state);
            return task.Result;
        }
        public Portability SolicitarBilhetePortabilidade(Custumer custumer, Acount acount)
        {
            //[chamando o webservice do módulo Anatel]
            Anatel.IAnatel client;
            TcpChannel channel = new TcpChannel();
            ChannelServices.RegisterChannel(channel);
            client = (Anatel.IAnatel)Activator.GetObject(typeof(Anatel.IAnatel), "tcp://localhost:8091/SolicitarPortabilidadeNumerica");

            //[obtendo resposta da Anatel para a portabilidade]
            RetornoPortabilidade retorno = client.SolicitarPortabilidadeNumerica(custumer);

            //[verificar as validacoes retornadas pela anatel]
            if (!retorno.CodigoErro.Equals("0"))
            {
                PortabilidadeFault falha = new PortabilidadeFault();
                falha.CodigoErro = retorno.CodigoErro;
                falha.DataErro = retorno.DataErro;
                falha.Motivo = retorno.Motivo;
                throw new FaultException<PortabilidadeFault>(falha);
            }

            //[obtendo o numero do bilhete da Anatel]
            Portability portabilidade = new Portability();
            portabilidade.Bilhete = retorno.Bilhete;

            return portabilidade;
        }
 private void button_Click(object sender, RoutedEventArgs e)
 {
     ModeloCanonico.Custumer custumer = new ModeloCanonico.Custumer();
     custumer.Cpf = "88888888888";
     ModeloCanonico.Acount acount = new ModeloCanonico.Acount();
     acount.Number = "122345";
     ModeloCanonico.Portability portabilidade = apt.SolicitarBilhetePortabilidade(custumer, acount);
     textBoxSucesso.Text = "Sucesso na chamada ao APT. Número do bilhete: "+portabilidade.Bilhete;
 }
        private void button1_Click(object sender, RoutedEventArgs e)
        {
            ServiceReferenceApt.AptServiceClient apt = new ServiceReferenceApt.AptServiceClient();

            ModeloCanonico.Custumer custumer = new ModeloCanonico.Custumer();
            custumer.Nome = "Custumer apt";
            ModeloCanonico.Acount acount = new ModeloCanonico.Acount();
            acount.Number = "122345";
            ModeloCanonico.Portability portabilidade = apt.SolicitarBilhetePortabilidade(custumer, acount);
            textBox1.Text = portabilidade.Bilhete;
        }
        public Portability SolicitarBilhetePortabilidade(Custumer custumer, Acount acount)
        {
            //[chamando o webservice do módulo Anatel]
            Anatel.IAnatel client;
            TcpChannel channel = new TcpChannel();
            ChannelServices.RegisterChannel(channel);
            client = (Anatel.IAnatel)Activator.GetObject(typeof(Anatel.IAnatel), "tcp://localhost:8091/SolicitarPortabilidadeNumerica");

            //[obtendo resposta da Anatel para a portabilidade]
            RetornoPortabilidade retorno = client.SolicitarPortabilidadeNumerica(custumer);

            //[TODO gerar numero do bilhete]
            Portability portabilidade = new Portability();
            portabilidade.Bilhete = "123456789";

            return portabilidade;
        }
        public Acount ObterDadosConta(Custumer customer)
        {
            //• Operação que retorna a conta de um cliente
            //• Validar se o dado é válido
            //• Customer obrigatório
            //• Usar WCF
            validarCliente(customer.Cpf);

            validarConta(customer);

            Acount conta = new Acount();
            conta.Number = "88433503";
            conta.Valor = 10;
            conta.DataUltimoVencimento = new DateTime(2015, 1, 1);
            conta.Paga = false;

            return conta;
        }
 private void buttonErro02_Click(object sender, RoutedEventArgs e)
 {
     ModeloCanonico.Custumer custumer = new ModeloCanonico.Custumer();
     custumer.Cpf = "05666561677";
     ModeloCanonico.Acount acount = new ModeloCanonico.Acount();
     acount.Number = "122345";
     try
     {
         ModeloCanonico.Portability portabilidade = apt.SolicitarBilhetePortabilidade(custumer, acount);
         textBoxErro02.Text = "Não lançou exceção corretamente.";
     }
     catch (FaultException<PortabilidadeFault> erro)
     {
         textBoxErro02.Text = "Erro " + erro.Detail.CodigoErro + ": " + erro.Detail.Motivo;
     }
     catch (Exception erroGenerico)
     {
         textBoxErro02.Text = "Erro de chamada ao webservice: " + erroGenerico;
     }
 }
        /**Recebe a resposta de erro, chamado se houver erro na chamada do APT
         * ***/
        public IAsyncResult BeginObterRespostaAnatel(ModeloCanonico.Custumer customer, Acount contam, AsyncCallback callback, object state)
        {
            var task = Task<RetornoChamada>.Factory.StartNew(SolicitarBilheteApt, state);

            return task.ContinueWith(res => callback(task));
        }
 public Portability SolicitarBilhetePortabilidade(Custumer custumer, Acount acount)
 {
     throw new NotImplementedException();
 }