Desafio de Administração da Agenda de um Consultório Odontológico
- insira: npm install no terminal
- insira no terminal: node index.js
Desenvolver uma aplicação console em Javascript para administrar a agenda de um consultório odontológico. As funcionalidades da aplicação estão definidas a seguir e os layouts da interface com o usuário estão definidos no final deste documento.
- CPF deve ser válido (vide Anexo A).
- O nome do usuário deve ter pelo menos 5 caracteres.
- A data de nascimento deve ser fornecida no formato DD/MM/AAAA.
- Caso algum dado seja inválido, deve ser apresentada uma mensagem de erro e o dado deve ser solicitado novamente.
- Não podem existir dois pacientes com o mesmo CPF.
- O dentista não atende crianças, logo o paciente deve ter 13 anos ou mais no momento do cadastro (data atual).
- Um paciente com uma consulta agendada futura não pode ser excluído.
- Se o paciente tiver uma ou mais consultas agendadas passadas, ele pode ser excluído. Nesse caso, os respectivos agendamentos também devem ser excluídos.
Agendamento de uma consulta: são necessários CPF do paciente, data da consulta, hora inicial e hora final.
- CPF deve existir no cadastro.
- A data da consulta deve ser fornecida no formato DD/MM/AAAA.
- Hora inicial e final devem ser fornecidos no formato HHMM (padrão brasileiro).
- O agendamento deve ser para um período futuro: data da consulta > data atual ou (data da consulta = data atual e hora inicial > hora atual).
- Hora final > hora inicial.
- Cada paciente só pode realizar um agendamento futuro por vez (os agendamentos passados não podem ser usados nessa verificação).
- Não pode haver agendamentos sobrepostos.
- As horas inicial e final são definidas sempre de 15 em 15 minutos. Assim, são válidas horas como 1400, 1730, 1615, 1000 e 0715. Por outro lado, não são válidas horas como 1820, 1235, 0810 e 1950.
- O horário de funcionamento do consultório é das 8:00h às 19:00h, logo os horários de agendamento não podem sair desses limites.
- A listagem de pacientes deve ser apresentada conforme o layout definido no final desse documento e pode estar ordenada de forma crescente por CPF ou nome, à escolha do usuário.
- Se o paciente possuir um agendamento futuro, os dados do agendamento devem ser apresentados abaixo dos dados do paciente.
- A listagem da agenda deve ser apresentada conforme o layout definido no final desse documento e deve estar ordenada de forma crescente por data e hora inicial.
- O usuário pode listar toda a agenda ou a agenda de um período. Nesse último caso, deve ser solicitada a data inicial e final (formato DD/MM/AAAA).
- Todas as datas e horas fornecidas pelo usuário devem ser válidas. Caso não sejam, deve ser apresentada uma mensagem de erro e o dado deve ser solicitado novamente.
- Nas listagens, os dados devem estar formatados e alinhados conforme os layouts definidos no final deste documento.