/**
         * 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 RetornoPortabilidade SolicitarPortabilidadeNumerica(ModeloCanonico.Custumer custumer)
        {
            RetornoPortabilidade retorno = new RetornoPortabilidade();

            retorno.Bilhete = "1234567890";
            retorno.Janela = DateTime.Now.AddHours(2).ToLongTimeString();
            retorno.CodigoErro = "0";
            retorno.DataErro = DateTime.Now;
            retorno.Motivo = "Criação do bilhete efetuada com sucesso.";

            //[validação se já existe um ticket aberto para essa pessoa]
            if (custumer.Cpf.Equals("04986491644"))
            {
                retorno.CodigoErro = "1";
                retorno.DataErro = DateTime.Now;
                retorno.Motivo = "Já existe um processo de portabilidade em aberto para o CPF "+custumer.Cpf;
            }

            //[validação se existe uma portabilidade não finalizada corretamente(com pendencias)]
            if (custumer.Cpf.Equals("05666561677"))
            {
                retorno.CodigoErro = "2";
                retorno.DataErro = DateTime.Now;
                retorno.Motivo = "Existe uma portabilidade (Número do bilhete: 0987654321) com pendencias para o CPF " + custumer.Cpf;
            }

            return retorno;
        }
 public static ServiceReferenceYUM.Custumer criarObjetoCustomerYUM(ModeloCanonico.Custumer customer)
 {
     ServiceReferenceYUM.Custumer novoCustomer = new ServiceReferenceYUM.Custumer();
     novoCustomer.Cpf = customer.Cpf;
     novoCustomer.Nome = customer.Nome;
     novoCustomer.EnderecoCompleto = customer.EnderecoCompleto;
     return novoCustomer;
 }
        public RetornoPortabilidade SolicitarPortabilidadeNumerica(ModeloCanonico.Custumer custumer)
        {
            RetornoPortabilidade retorno = new RetornoPortabilidade();

            retorno.Bilhete = "1234567890";
            retorno.CodigoErro = "0";
            retorno.DataErro = DateTime.Now;
            retorno.Motivo = "Portabilidade efetuada com sucesso.";

            if (custumer.Nome.Equals("Lucas"))
            {
                retorno.CodigoErro = "1";
                retorno.DataErro = DateTime.Now;
                retorno.Motivo = "Cliente inválido.";
            }

            return retorno;
        }
        /**
         * Metodo chamado da tela.
         *
         * */
        public RetornoChamada SolicitaPortabilidade(ModeloCanonico.Custumer custumer)
        {
            /**
             * Chamada ao YUM*/

            /**
             * Caso chamada ao YUM retorno verdadeiro vamos chamar o KGB/*
             * */
            throw new NotImplementedException();

            /*
             * Depois de chamar o kbg chamamos o APT

             * Caso nao falhe:
             * Chamar o APT SolicitarBilhetePortabilidade

             Pegar o numero do Bilhete que o APT vai me cdevolver e colocar num array custumer e bilhete.
            Manda emnsagem de pedido enviado
            /**/
        }
        /**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 string SolicitarBilhetePortabilidade(ModeloCanonico.Custumer custumer, ModeloCanonico.Acount acount)
 {
     throw new NotImplementedException();
 }
 public static Acount obterDadosContaKGB(ModeloCanonico.Custumer customer)
 {
     ServiceReferenceKGB.KgbServiceClient client = new ServiceReferenceKGB.KgbServiceClient();
     return client.ObterDadosConta(customer);
 }
 public static void atualizarClienteYUM(ModeloCanonico.Custumer customer)
 {
     ServiceReferenceYUM.YUMServiceSoapClient client = new ServiceReferenceYUM.YUMServiceSoapClient();
     client.UpdateCustomer(criarObjetoCustomerYUM(customer));
 }
 /**
  * Recebe a resposta do APT
  * */
 public RetornoChamada ReceberRespostaAnatel(ModeloCanonico.Custumer custumer)
 {
 }