4
respostas

Rota pra cancelar um pagamento

código pagamentos.js app.delete('/pagamentos/pagamento/:id', function(req, res){ var pagamento = {}; var id = req.params.id;

    pagamento.id = id;
    pagamento.status = 'CANCELADO';

    var connection = app.persistencia.connectionFactory();
    var pagamentoDao = new app.persistencia.PagamentoDao(connection);
    pagamentoDao.atualiza(pagamento, function(){

//--> NESTE COMANDO NÃO TERIA QUE CRIAR //--> pagamentoDao.cancela(pagamento, function(){ if (erro){ res.status(500).send(erro); return; } res.status(204).send(pagamento); }) });

e no código de pagamentoDAO.js

PagamentoDao.prototype.cancela = function(pagamento,callback){ this._connection.query('delet pagamento set status ? where id = ?', [pagamento.status, pagamento.id],callback); }

4 respostas

Desculpe, não entendi a sua pergunta.

NO CÓDIGO pagamentos.js PARA ATUALIZA O BANCO DE DADOS É CHAMADO: app.put('/pagamentos/pagamento/:id', function(req, res){

E DENTRO DELE É FEITO O SEGUINTE COMANDO pagamentoDao.atualiza(pagamento, function(){ if (erro){ res.status(500).send(erro); return; } res.send(pagamento); })

COMANDO DETRO DO pagamentoDao.atualiza PagamentoDao.prototype.atualiza = function(pagamento,callback){ this._connection.query('update pagamento set status ? where id = ?', [pagamento.status, pagamento.id],callback); }

PARA CANCELAMENTO É CHAMADOapp.delete('/pagamentos/pagamento/:id', function(req, res){

SÓ QUE A CHAMADA DO DAO É O MESMO DO ATUALIZAR pagamentoDao.atualiza(pagamento, function(){ if (erro){ res.status(500).send(erro); return; } res.status(204).send(pagamento);

Deixa eu ver se eu entendi. Você está falando que o código da aula está errada porque a chamada do DAO é a mesma chamada de atualizar? Se sim por gentileza abra um chamado em https://suporte.alura.com.br relatando o problema pro pessoal do administrativo arrumar.

Pelo que eu entendi do seu código, para atualizar e cancelar se utiliza o mesmo método do DAO. Isso ocorre porque o cancelar altera o status. Perceba que as rotas possuem o mesmo endereço, mas são acessadas através de métodos diferentes (PUT e DELETE). Além disso, elas retornam status diferentes.

Você poderia criar um método específico para isso, mas, o comportamento dele seria o mesmo do atualizar (alterar o status). Por isso que o método de atualizar foi usado das duas rotas. Um método exclusivo seria necessário se o comportamento fosse diferente (ex: excluir o registro).