Solucionado (ver solução)
Solucionado
(ver solução)
11
respostas

Quando seleciono um carro para o agendamento e da erro de conexao, esse agendamento nao esta aparecendo no agendamento.

Quando seleciono um carro para o agendamento e da erro de conexao, esse agendamento não esta aparecendo no agendamento. Esse erro esta acontecendo apenas no iphone, eu testei usando o ionicview.

11 respostas

Oi Felipe.

Quando vc está escolhendo um carro e depois volta e está preenchido, é pq o data-model já está populado. Se vc limpar ele, ele não vai estar marcado com os valores que vc escolheu antes.

para limpar ele precisa fazer desse jeito, variavel = {} . A duvida é onde que eu faço isso ? teria que fazer isso no controller?

testei no navegador do chrome e esta funcionando, mas no android nao esta. Foi por isso que cheguei ate essa parte com erro. Sobre as mensagens de erro tentei deixar uma mensagem de erro que tinha antes mas esta vindo as duas mensagens de erro : https://cursos.alura.com.br/forum/topico-popup-para-saber-se-o-usuario-digito-todas-as-informacoes-33842 -> eu alterei o finalizarPedido.controller.js para ve se era esse o erro, mas nao deu certo ainda. Segue como ele fico : finalizarPedido.controller.js

angular.module('starter')
.controller('FinalizarPedidoController', function($stateParams, $scope, $ionicPopup, $state, 
    CarroService, $ionicHistory, ionicDatePicker, DatabaseValues){

    $scope.carroFinalizado = angular.fromJson($stateParams.carro);

    $scope.pedido = {};

    $scope.dataSelecionada;

    $scope.abrirPopupCalendario = function(){
        var configuracoes = {

            callback: function(data){
                var dataSelecionada = new Date(data);
                var dataFormatada = ("0" + dataSelecionada.getDate()).substr(-2) + "/"  + ("0" + (dataSelecionada.getMonth() + 1)).substr(-2) + "/" + dataSelecionada.getFullYear();
                $scope.dataSelecionada = dataFormatada;
                //$scope.dataSelecionada = new Date(data); 
             }, 
            /*
            callback : function(data) {
                $scope.dataSelecionada = new Date(data);
            },*/

            weeksList : ['D', 'S', 'T', 'Q', 'Q', 'S', 'S'],
            monthsList: ["Jan", "Fev", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Out", "Nov", "Dez"]

        }

        ionicDatePicker.openDatePicker(configuracoes);
    }

    $scope.finalizarPedido = function(){

        var pedidoFinalizado = {
            params : {
                carro : $scope.carroFinalizado.nome,
                preco : $scope.carroFinalizado.preco,
                nome : $scope.pedido.nome,
                endereco : $scope.pedido.endereco,
                email : $scope.pedido.email
            }
        }

        CarroService.salvarPedido(pedidoFinalizado).then(function(dados){

                $scope.salvarDadosNoBancoDeDados('true');

                $ionicHistory.nextViewOptions({
                    disableBack : true
                })

                $ionicPopup.alert({
                    title: 'Parabens',
                    template: 'Voce acaba de comprar um carro.'
                }).then(function(){
                    $state.go('app.listagem');
                });
        },     function(erro){

                $scope.salvarDadosNoBancoDeDados('false');

                $ionicHistory.nextViewOptions({
                disableBack : true
                })

                $ionicPopup.alert({
                      title: 'Ops',
                      template: 'Servidor com problemas. tente mais tarde.'
                  }).then(function(){
                      $state.go('app.listagem');
                  })

                  $ionicPopup.alert({
                      title: 'Deu erro',
                      template: 'Campos obrigatórios'
                  })

      });

        $scope.salvarDadosNoBancoDeDados = function(confirmado){

                DatabaseValues.setup();
                DatabaseValues.bancoDeDados.transaction(function(transacao){
                    transacao.executeSql('INSERT INTO agendamentos(nome, endereco, email, dataAgendamento, modelo, preco, confirmado) VALUES (?,?,?,?,?,?,?)', [$scope.pedido.nome, $scope.pedido.endereco, $scope.pedido.email, $scope.dataSelecionada, $scope.carroFinalizado.nome, $scope.carroFinalizado.preco, confirmado])
                })

        }
    }

});


/* 
$ionicPopup.alert({
                      title: 'Deu erro',
                      template: 'Campos obrigatórios'
                  });
*/

eu coloquei esse codigo para ver se ele iria para a tela de listagem caso desse erro mas ainda não funciono.

$ionicHistory.nextViewOptions({
        disableBack : true
      })

Oi Felipe.

Vc pode limpar essa variável quando finalizar o pedido, ou quando iniciar um novo pedido, tanto faz. Veja qual melhor lhe atende.

E se algo está funcionando no browser e não está funcionando no celular, deve ser versão do código errada que vc está usando.

Depois de vc arrumar algo no código, vc precisa compilar novamente o código, limpar o celular do código antigo(desinstalar o app) e subir novamente. Tanto no Android como no IOS

eu estou testando no ionic view, estou fazendo do seguinte modo agora altero algo e faço o ionic upload depois disso faço ionic share email. Quando vou abrir o aplicativo no celular eu clico em sync e depois em clean data. No android funciono quando da erro tem que ir para a tela de listagem eu revi a sua aula e adicionei uma parte que só tinha quando não dava erro e funciono. Agora estou esperando para testar no iphone. A unica duvida que fiquei foi que esta funcionando tudo no android agora, no iphone eu ainda nao sei vou tentar testar ainda hj, sabe como é eu nao tenho iphone tenho que ficar pedindo para os amigos testarem.

Essa parte de limpar a variavel nao ira dar problema no aplicativo sendo que no android esta funcionando , mas nao esta funcionando no iphone ? A duvida é pq esta acontecendo isso no iphone e no android esta funcionando perfeitamente ?

isso que voce falo -> E se algo está funcionando no browser e não está funcionando no celular, deve ser versão do código errada que vc está usando.Isso eu não entendi pq esta funcionando no android, mas no iphone não esta. Posso fazer um post colocando meu código novamente para você dar uma olhada nas questão do banco de dados, na mensagem de erro e sobre não esta funcionando no ios eu estou testando ele pelo ionic view no iphone.

Oi Felipe.

Depois que vc fizer a alteração no ionic, vc tem q fazer o processo de deploy completo no IOS e no Android.

IOS:

ionic build ios

Depois pegar o arquivo gerado( arquivo .xcodeproject). Abrir esse arquivo no Xcode. Mandar compilar pro celular.

Se está funcionando no Android e não no IOS, só pode ser a versão diferente entre os dois.

Acabei de testar no iphone, esta parte que voce falo de abrir o arquivo no xcode eu nao consigo fazer, pq eu tenho um mac. Depois que eu testei no iphone com a alteração que eu fiz de ir para a listagem quando der erro, isso esta funcionando corretamente. Agora o unico problema é o de salvar e nao aparecer na listagem de agendamento. Esta fazendo aquilo que falei em outro post quando voce clica no carro que foi escolhido esta mostrando que ele foi populado ou seja quando clica no carro esta mostrando as informaçoes que foram colocadas anteriormente. Passos que preciso fazer como forme voce falo zerar a variavel de salvarpedido depois que essa função é chamada? depois tenho que verificar o agendamento para ver se eles estao aparecendo novamente. Estou correto do que eu preciso fazer ?

solução!

É isso mesmo, Felipe.

E como eu falei no post anterior, quando for testar algo mais complicado vc tem q usar um mac. Vc viu q no curso eu tive que usar, não tem como fugir. Testar no Ionic View vai te limitar e não é o recomendado