Abaixo o método importa() do controller:
importa() {
let service = new NegociacaoService();
Promise.all([
service.obterNegociacoesDaSemana(),
service.obterNegociacoesDaSemanaAnterior(),
service.obterNegociacoesDaSemanaRetrasada()
]).then(negociacoes => {
console.log(negociacoes);
negociacoes
.reduce( (arrayRetorno, array) => arrayRetorno.concat(array), [] )
.forEach( negociacao => this._listaNegociacoes.adiciona(negociacao));
this._mensagem.texto = 'Negociações importadas com sucesso';
}).catch(
erro => this._mensagem.texto = erro
);
}
E a classe NegociacaoService:
class NegociacaoService {
obterNegociacoesDaSemana() {
return new Promise( (resolve, reject) => {
let xhr = new XMLHttpRequest();
xhr.open('GET', 'negociacoes/semana');
xhr.onreadystatechange = () => {
if (xhr.readyState == 4) {
if (xhr.status == 200) {
console.log('Obtendo as negociações da semana');
resolve( JSON.parse(xhr.responseText)
.map( objeto => new Negociacao(new Date(objeto.data), objeto.quantidade, objeto.valor)));
} else {
console.log(xhr.responseText);
reject('Não foi possível obter as negociações da semana');
}
}
}
xhr.send();
});
}
obterNegociacoesDaSemanaAnterior() {
return new Promise( (resolve, reject) => {
let xhr = new XMLHttpRequest();
xhr.open('GET', 'negociacoes/anterior');
xhr.onreadystatechange = () => {
if (xhr.readyState == 4) {
if (xhr.status == 200) {
console.log('Obtendo as negociações da semana anterior');
resolve( JSON.parse(xhr.responseText)
.map( objeto => new Negociacao(new Date(objeto.data), objeto.quantidade, objeto.valor)));
} else {
console.log(xhr.responseText);
reject('Não foi possível obter as negociações da semana anterior');
}
}
}
xhr.send();
});
}
obterNegociacoesDaSemanaRetrasada() {
return new Promise( (resolve, reject) => {
let xhr = new XMLHttpRequest();
xhr.open('GET', 'negociacoes/retrasada');
xhr.onreadystatechange = () => {
if (xhr.readyState == 4) {
if (xhr.status == 200) {
console.log('Obtendo as negociações da semana retrasada');
resolve( JSON.parse(xhr.responseText)
.map( objeto => new Negociacao(new Date(objeto.data), objeto.quantidade, objeto.valor)));
} else {
console.log(xhr.responseText);
reject('Não foi possível obter as negociações da semana retrasada');
}
}
}
xhr.send();
});
}
}