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

Problemas com o webservice

Boa noite professor tudo bem ? Estou tendo um problema com o webservice, toda vez que eu realizo um agendamento o servidor acaba caindo... me devolvendo essa mensagem de erro:

$ npm start

> api@1.0.0 start C:\dev\workspace\aluracar-webservice
> node server.js

Servidor rodando em http://localhost:8080
Agendamento recebido: {"nomeCliente":"Jorge","enderecoCliente":"Rua Teste","emailCliente":"teste@gmail.com","modeloCarro":"Onix 1.6","precoTotal":35000}
C:\dev\workspace\aluracar-webservice\api.js:67
        const agendamentoId = agendamento.emailCliente + agendamento.data.substr(0, 10);
                                                                          ^

TypeError: Cannot read property 'substr' of undefined
    at enviaNotificacao (C:\dev\workspace\aluracar-webservice\api.js:67:75)
    at Timeout.setTimeout [as _onTimeout] (C:\dev\workspace\aluracar-webservice\api.js:46:30)
    at ontimeout (timers.js:475:11)
    at tryOnTimeout (timers.js:310:5)
    at Timer.listOnTimeout (timers.js:270:5)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! api@1.0.0 start: `node server.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the api@1.0.0 start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\jorge.pinto\AppData\Roaming\npm-cache\_logs\2018-03-01T22_31_32_833Z-debug.log

jorge.pinto@SPCBR475 MINGW64 /c/dev/workspace/aluracar-webservice

cadastro.ts

import { Component } from '@angular/core';
import { IonicPage, NavController, NavParams, AlertController, Alert } from 'ionic-angular';
import { Carro } from '../../modelos/carro';
import { AgendamentosServiceProvider } from '../../providers/agendamentos-service/agendamentos-service';
import { HomePage } from '../home/home';

@IonicPage()
@Component({
  selector: 'page-cadastro',
  templateUrl: 'cadastro.html',
})
export class CadastroPage {

  public carro: Carro;
  public precoTotal: number;

  public nome: string = '';
  public endereco: string = '';
  public email: string = '';
  public data: string = new Date().toISOString();

  private _alerta: Alert;

  constructor(
    public navCtrl: NavController,
    public navParams: NavParams,
    private _agendamentosService: AgendamentosServiceProvider,
    private _alertCtrl: AlertController) {

    this.carro = this.navParams.get('carroSelecionado');
    this.precoTotal = this.navParams.get('precoTotal');

  }

  agenda() {
    console.log(this.nome);
    console.log(this.endereco);
    console.log(this.email);
    console.log(this.carro.nome);
    console.log(this.precoTotal);

    let agendamento = {
      nomeCliente: this.nome,
      enderecoCliente: this.endereco,
      emailCliente: this.email,
      modeloCarro: this.carro.nome,
      precoTotal: this.precoTotal
    }

    this._alerta = this._alertCtrl.create({
      title: 'Aviso',
      buttons: [
        {
          text: 'Ok',
          handler: () => {
            this.navCtrl.setRoot(HomePage);
          }
        }
      ]
    });

    this._agendamentosService.agenda(agendamento)
      .subscribe(
        () => {
          this._alerta.setSubTitle('Agedamento realizado !');
          this._alerta.present();
        },
        () => {
          this._alerta.setSubTitle('Falha ao realizar o agendamento, tente novamente mais tarde !');
          this._alerta.present();
        }
      );
  }
}

cadastro.html

<ion-header>

  <ion-navbar>
    <ion-title>Cadastro</ion-title>
  </ion-navbar>

</ion-header>


<ion-content padding>

  <h2>{{carro.nome}}</h2>
  <p>R$ {{precoTotal}}</p>

  <form (ngSubmit)="agenda()" #formulario="ngForm">

    <ion-item>
      <ion-label stacked>Nome:</ion-label>
      <ion-input name="nome" [(ngModel)]="nome"></ion-input>
    </ion-item>
    <ion-item>
      <ion-label stacked>Endereço:</ion-label>
      <ion-input name="endereco" [(ngModel)]="endereco"></ion-input>
    </ion-item>
    <ion-item>
      <ion-label stacked>E-mail:</ion-label>
      <ion-input name="email" [(ngModel)]="email"></ion-input>
    </ion-item>
    <ion-item>
      <ion-label stacked>Data:</ion-label>
      <ion-datetime name="data" displayFormat="DD/MM/YY" [(ngModel)]="data"></ion-datetime>
    </ion-item>

  </form>

  <ion-fab top right edge>
    <button ion-fab (click)="formulario.ngSubmit.emit()">
      <ion-icon name="send"></ion-icon>
    </button>
  </ion-fab>

</ion-content>
7 respostas
solução!

Boa noite, Jorge! Vou mto bem, obrigado! E vc como vai? Está gostando do curso?

O Bruno teve um problema igual ao seu e eu o resolvi nesse tópico aqui! Veja lá a solução!

Grande abraço e bons estudos, meu aluno!

Boa noite Professor, estou ótimo, obrigado !

Aproveitando, o curso está SENSACIONAL !!!! Parabéns pelo conteúdo, didática e MUITO OBRIGADO por prover esses conhecimentos iluminados !

No meu caso está sendo de grande valia, estou em um projeto que utiliza o ionic e esses ensimentos serão completamente aproveitados !!!

O que estou achando mais legal são os "pulos do gato", esses detalhes fazem plenamente a diferença e é um dos motivos que me mantém motivado a continuar estudando !!!

Show de bola !

Obrigado pelo feedback, Jorge!

Só pra avisar, a parte 2 do curso já foi lançada e lá tem muitas outras coisas bacanas! Se vc está num projeto de Ionic, então vai curtir bastante o conteúdo! Segue o link do curso:

https://cursos.alura.com.br/course/ionic3-recursos-build-nativos

Grande abraço e bons estudos!

Nas palavras do Rolando Lero, Iluminado mestre rsrsr, voltei aqui por que eu revisei toda a aula 6, e lá nós não estamos enviando a data do agendamento (propositalmente), os demais dados são enviados normalmente

Agendamento recebido: {"nomeCliente":"Jorge","enderecoCliente":"Rua Teste","emailCliente":"teste@gmail.com","modeloCarro":"Onix 1.6","precoTotal":35000}

Só que eu não achei em nenhum momento nos vídeos da aula 6, onde é mostrado como enviar a data do agendamento.... então o problema continua... Será que estou cometendo algum outro erro ?

Grato

Oi, Jorge!

Se vc quiser, pode colocar a data do agendamento para parar de dar o erro.

Mas vc vai ver que no vídeo https://cursos.alura.com.br/course/ionic3-parte1/task/33247 aos 3:00, eu aviso sobre o problema e digo que mais pra frente a gente vai resolver e eu vou mostrar pq o Typescript é legal!

E aí, eu só resolvo o problema na aula 7, aos 2:40 desse outro vídeo aqui https://cursos.alura.com.br/course/ionic3-parte1/task/33255.

Qualquer coisa é só falar!

Grande abraço!

Hahahah SHOW DE BOLA Mestre !!!! Realmente aos 3:00 há o aviso eu só não sabia onde estava a solução, mas agora vejo a luz !!!

Novamente parabéns pelo curso e muito obrigado pelo atenção !!!

Ótimo, Jorge!

Grande abraço e bons estudos, meu aluno!