Problem IonViewDidEnter "Promise" ionic 2


#1

I am trying to load 3 methods inside the ionViewDidEnter but always the first method after this.carregacarrinho() does not run. Why ?

ionViewDidEnter() {
      this.carregaCarrinho()
      .then((data) => {
        console.log("ok");
      }, (error) => {
        this.database.presentToast("Não foi possível carregar o carrinho");
      })

      this.database.buscaTipoeCliente()
          .then((data) => {
            this.tipovenda = data[0].tipovenda;
            this.cliente = data[0].cliente;
            this.codigo = data[0].codigo;
            this.database.presentToast(this.tipovenda);
            this.database.presentToast(this.cliente);
            this.database.presentToast(this.codigo);
          }, (error) => {
            this.database.presentToast("Não possível carregar Condição de venda, cliente e código");
          })


      this.database.buscaUsuario()
      .then((user) => { 
        this.usuario = user;
        this.database.presentToast(this.usuario);
      });
    }

#2

any error in console logs


#3

Do I need to put these methods inside the constructor?


#4

you can but it is not a issue i think


#5

here my methods

this.carregacarrinho()

public carregaCarrinho(){
      return new Promise((resolve, reject) => {
      this.storage = new SQLite();
      this.storage.openDatabase({name: "infosysDB.db", location: "default"})
      .then(
        (success) => {
          this.storage.executeSql("SELECT * FROM carrinho", [])
          .then(
            (data) => {
              this.itens = [];
              this.totalqtd = [];
              if(data.rows.length > 0){
                  this.valortotalorcamento = 0;
                for(let i = 0; i < data.rows.length; i++){
                  this.codigo = data.rows.item(i)['codigo'];
                  this.item = data.rows.item(i)['item'];
                  this.valorvenda = data.rows.item(i)['valorvenda'];
                  this.valortotal = data.rows.item(i)['valortotal'];
                  this.estoque = data.rows.item(i)['estoque'];
                  this.quantidade = data.rows.item(i)['quantidade'];
                  this.valortotalorcamento += parseFloat(this.valortotal);
                  this.quantidadedeitens = parseInt(data.rows.length);
                  this.valortotalcdesc = this.valortotalorcamento;
                  
                  this.objeto = {codigo: this.codigo, item: this.item, valorvenda: this.valorvenda, valortotal: this.valortotal, estoque: this.estoque, quantidade: this.quantidade}
                  this.itens.push(this.objeto);
                }
                  if(this.tipo == "Percentual"){
                    this.desconto = (this.valortotalorcamento * this.valor) / 100;
                    this.desconto = Math.floor(this.desconto * 100) / 100;
                    this.desconto = this.desconto.toFixed(2);
                    this.valortotalcdesc = this.valortotalorcamento - this.desconto;
                  }else if(this.tipo == "Valor"){
                    this.desconto = this.valor;
                    this.desconto = Math.floor(this.desconto * 100) / 100;
                    this.desconto = this.desconto.toFixed(2);
                    this.valortotalcdesc = this.valortotalorcamento - this.desconto;
                  }else{
                    this.desconto = 0;
                    this.valor = 0;
                  }
                  resolve(data)
              }else{
                this.desconto = 0;
                this.valor = 0;
                this.valortotalorcamento = 0;
                this.valortotalcdesc = 0;
                this.database.presentToast("Nenhum item adicionado no carrinho");
              }
            },
            (error) => {
              reject(error);
              this.database.presentToast("Não foi possível abrir a tabela." + error);
            });
            },
            (error) => {
              this.database.presentToast("Não foi possível abrir a base de dados." + error);
        });
      })
    }

this.database.buscaTipoeCliente;

public buscaTipoeCliente(){
      return new Promise((resolve, reject) => {
      this.storage = new SQLite();
      this.storage.openDatabase({name: "infosysDB.db", location: "default"})
      .then(
        (success) => {
          this.storage.executeSql("SELECT * FROM preferencias", [])
          .then((data) => {
              if(data.rows.length > 0 ){
                data = [{"tipovenda": data.rows.item(0)['tipo'], "cliente": data.rows.item(0)['cliente'], "codigo": data.rows.item(0)['codigo'] }]
                resolve(data);
              }else if(data.rows.length <= 0){
                data = "avista";
              }
            },
            (error) => {
              reject(error)
              this.presentToast("não foi possivel carregar a tabela preferencias.");
          })
        },
        (error) => {
          this.presentToast("Não foi possível abrir a base de dados!");
        });
        
      });
    }

this.database.buscaUsuario()

public buscaUsuario(){
    return new Promise((resolve, reject) => {
    this.storage = new SQLite();
    this.storage.openDatabase({name: "infosysDB.db", location: "default"})
      .then(
        (success) => {
          this.storage.executeSql("SELECT * FROM usuarioapp", [])
          .then(
            (data) => {
              if(data.rows.length >= 1 ){
                data = data.rows.item(0)['codigo'];
                resolve(data);
              }else{
                reject();
                this.presentToast("Usuário não encontrado...");
                return 0;
              }
            },
            (error) => {
              this.presentToast("Não possível carregar a tabela: USUARIOAPP!");
            });
        },
        (error) => {
          this.presentToast("Não foi possível abrir a base de dados!");
        });
      });
    }

#6

i solved it with:

ionViewDidEnter() {
      this.carregaCarrinho()
      .then((data) => {
        return this.database.buscaTipoeCliente()
          .then((data) => {
            this.tipovenda = data[0].tipovenda;
            this.cliente = data[0].cliente;
            this.codigo = data[0].codigo;
            this.database.presentToast(this.tipovenda);
            this.database.presentToast(this.cliente);
            this.database.presentToast(this.codigo);
            this.database.buscaUsuario()
            .then((user) => { 
              this.usuario = user;
              this.database.presentToast(this.usuario);
           });
          }, (error) => {
            this.database.presentToast("Não possível carregar Condição de venda, cliente e código");
          })
      }, (error) => {
        this.database.presentToast("Não foi possível carregar o carrinho");
      })
    }