Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Quando tento com a data do dia atual da erro

Bom dia, realizei alguns testes no meu código, seguindo o padrão feito na aula, porém quando testo com a data atual da erro, ele só aceita a partir do dia 20. Segue o código:

const conexao = require ('../infraestrutura/conexao')
const moment = require ('moment');

class Atendimento
{

    adiciona (atendimento, res) //Ele vai adicionar os atendimentos a nossa base de banco de dados, precisa receber os dados de algum lugar
    {
        const dataCriacao = moment().format('YYYY-MM-DD HH:MM:SS')
        const data = moment(atendimento.data, 'DD/MM/YYYY').format('YYYY-MM-DD HH:MM:SS') 

        const dataEhValida = moment (data).isSameOrAfter (dataCriacao)
        const clienteEhValido = atendimento.cliente.length >= 5

        const validações = 
        [
            {
                nome: 'data',
                valido: dataEhValida,
                mensagem: 'Data deve ser maior ou igual a data atual'
            },
            {
                nome: 'cliente',
                valido: clienteEhValido,
                mensagem: 'Cliente deve ter pelo menos 5 caracteres'
            }
        ]

        const erros = validações.filter(campo => !campo.valido) //vai verificar se existem erros.
        const existemErros = erros.length //Caso existam erros, vamos saber pela quantidade de caractéres. Caso seja 0, vai ser false, caso tenha mais de 1, vai ser verdadeiro.

        if(existemErros)
        {
            res.status(400).json(erros)
        }
        else
        {
            const atendimentoDatado = {...atendimento, dataCriacao, data} // tudo que tiver dentro do atendimento e uma data de criaçào.

            const sql = 'INSERT INTO Atendimentos SET ?'

            conexao.query (sql, atendimentoDatado, (erro, resultados) =>
            {
                if (erro)
                {
                    res.status(400).json (erro); 
                }
                else
                {
                    res.status(201).json(resultados); 

                }
            })
        }

    }
}
module.exports = new Atendimento;
1 resposta
solução!

Olá Arderlan, tudo bem ?

O erro de cadastrar a data atual acontece pq data registra o dia DD/MM/YYYY com as horas 00:00:00 e a dataCriacao com horario atual, logo data e menor que o horario atual. Afinal dia 02/01/2020 as 00:00:00(data) e MENOR 12:35:00( dataCriacao).

E por isso que oerro acontece

Como resolver?

Na sua Classe Atendimento no metodo "adiciona", insira hora:minuto :segundo no tratamento de data como abaixo:

const data = moment(atendimento.data, 'DD/MM/YYYY HH:mm:ss').format('YYYY-MM-DD HH:mm:ss')

Apartir desse ajuste, voce deve passar data no postman addim, DD/MM/YY + 15:30:00(horario da data que quer agendar).

Resultado:

Agora ao comparar data com dataCriação, ira ser verificado se data tem um horario maior que dataCriação, claro que, quando o horario de data for maior que a dataCriação, ira salvar com sucesso, mas, se tentar agendar um horario no mesmo dia com o horari anterior ao horario que esta sendo realizado o agendamento(dataCriação), sua api retornara um erro que o horario precisa ser maior que horario atual.

Abaixo um exemplo da Class Atendimento

class Atendimento {
  adiciona(atendimento, res) {
    const dataCriacao = moment().format("YYYY-MM-DD HH:mm:ss");
    const data = moment(atendimento.data, "DD/MM/YYYY HH:mm:ss").format(
      "YYYY-MM-DD HH:mm:ss"
    );

    const dataEhValido = moment(data).isSameOrAfter(dataCriacao);
    const clienteEhValido = atendimento.cliente.length >= 5;

    const validacoes = [
      {
        nome: "data",
        valido: dataEhValido,
        menssagem: "Data deve ser maior ou igual a data atual",
      },
      {
        nome: "cliente",
        valido: clienteEhValido,
        menssagem: "Cliente deve ter pelomenos cinco caracteres",
      },
    ];

    const errors = validacoes.filter((campo) => !campo.valido);
    const existemErros = errors.length;

    if (existemErros) {
      res.status(400).json(errors);
    } else {
      const atendimentoDatado = { ...atendimento, dataCriacao, data };
      const sql = "INSERT INTO Atendimentos SET ?";

      conexao.query(sql, atendimentoDatado, (erro, resultados) => {
        if (erro) {
          res.status(400).json(erro);
        }
        res.status(201).json(resultados);
      });
    }
  }
}

module.exports = new Atendimento();

Hipster Abraços!