Estou tomando esse erro na linha .forEach(negociacao => this._listaNegociacoes.adiciona(negociacao));
Voltei a instrução para Promise normal ... e roda.
Estou tomando esse erro na linha .forEach(negociacao => this._listaNegociacoes.adiciona(negociacao));
Voltei a instrução para Promise normal ... e roda.
Oi, Alexandre, tudo bem?
Você verificou como está declarada a propriedade data? O erro nos indica que ela não está definida, assim, não tem como ser lida. Faz uma varredura no código e onde a propriedade data comparando com o do instrutor. Pode colocar aqui também o seu código para que possamos te ajudar melhor :}
`
class Negociacao {
constructor(data, quantidade, valor) {
this._data = new Date(data.getTime());
this._quantidade = quantidade;
this._valor = valor;
Object.freeze(this);
}
get volume() {
return this._quantidade * this._valor;
}
get data() {
return new Date(this._data.getTime());
}
get quantidade() {
return this._quantidade;
}
get valor() {
return this._valor;
}
}
class ListaNegociacoes {
constructor() {
this._negociacoes = [];
}
adiciona(negociacao) {
this._negociacoes.push(negociacao);
}
get negociacoes() {
return [].concat(this._negociacoes);
}
esvazia() {
this._negociacoes = [];
}
get volumeTotal() {
return this._negociacoes.reduce((total, n) => total + n.volume, 0.0);
}
}
class NegociacaoController {
constructor() {
let $ = document.querySelector.bind(document);
this._inputData = $('#data');
this._inputQuantidade = $('#quantidade');
this._inputValor = $('#valor');
this._listaNegociacoes = new Bind(
new ListaNegociacoes(),
new NegociacoesView($('#negociacoesView')),
'adiciona', 'esvazia');
this._mensagem = new Bind(
new Mensagem(), new MensagemView($('#mensagemView')),
'texto');
}
adiciona(event) {
event.preventDefault();
this._listaNegociacoes.adiciona(this._criaNegociacao());
this._mensagem.texto = 'Negociação adicionada com sucesso';
this._limpaFormulario();
}
apaga() {
this._listaNegociacoes.esvazia();
this._mensagem.texto = 'Negociações apagadas com sucesso';
}
_criaNegociacao() {
return new Negociacao(
DateHelper.textoParaData(this._inputData.value),
this._inputQuantidade.value,
this._inputValor.value);
}
_limpaFormulario() {
this._inputData.value = '';
this._inputQuantidade.value = 1;
this._inputValor.value = 0.0;
this._inputData.focus();
}
importaNegociacoes() {
let service = new NegociacaoService();
Promise.all([,
service.obterNegociacoesDaSemana(),
service.obterNegociacoesDaSemanaAnterior(),
service.obterNegociacoesDaSemanaRetrasada()]
).then(negociacoes => {
//console.log(negociacoes);
negociacoes
.reduce((arrayachatado, array) => arrayachatado.concat(array), [])
.forEach(negociacao => this._listaNegociacoes.adiciona(negociacao));
this._mensagem.texto = 'Negociações importadas com sucesso';
})
.catch (error => console.log(error));
//.catch(error => this._mensagem.texto = error);
}