1
resposta

Desafio do Cancelamento

Consegui resolver o problema por mim mesmo, porem achei a explicacao muito confusa.

Foi adicionado DTO DadosCancelamentoConsultas, enum Motivo cancelamento, entre outras funções como cancelamento que não são explicadas como foram feitas. A alteração existsByMedicoIdAndDataAndMotivoCancelamentoIsNull não é só alterar nome, coisas precisam ser alteradas. Acho que para futuras pessoas que vierem fazer esse curso seria uma boa idea das uma revisada nessa resolucao passando o passo a passo mais detalhado e nao jogando informacoes.

Muito obrigado,

Matricule-se agora e aproveite até 50% OFF

O maior desconto do ano para você evoluir com a maior escola de tecnologia

QUERO APROVEITAR
1 resposta

Olá, Flavio! Como vai?

Vou te ajudar com um resumo de como você pode abordar a implementação do cancelamento de consultas no Spring Boot.

  1. DTO DadosCancelamentoConsultas: Este é um objeto de transferência de dados que você pode usar para encapsular as informações necessárias para cancelar uma consulta. Ele pode incluir campos como o ID da consulta, o motivo do cancelamento, entre outros.

  2. Enum MotivoCancelamento: Este enum pode ser usado para definir os diferentes motivos pelos quais uma consulta pode ser cancelada. Isso ajuda a manter o código organizado e evita erros de digitação, já que os motivos são padronizados.

  3. Método existsByMedicoIdAndDataAndMotivoCancelamentoIsNull: Este método é uma consulta personalizada que verifica se existe uma consulta para um determinado médico e data que ainda não foi cancelada. A ideia é garantir que você não cancele uma consulta que já foi cancelada anteriormente. Para implementá-lo, você precisa adicionar essa lógica ao seu repositório, geralmente uma interface que estende JpaRepository.

  4. Função de Cancelamento: Esta função deve receber o DTO de cancelamento, validar as condições necessárias (como verificar se a consulta existe e não está cancelada) e, em seguida, atualizar o estado da consulta para cancelada, registrando o motivo.

Um exemplo prático seria:

public void cancelarConsulta(DadosCancelamentoConsultas dados) {
    Consulta consulta = consultaRepository.findById(dados.getId())
        .orElseThrow(() -> new EntityNotFoundException("Consulta não encontrada"));

    if (consulta.getMotivoCancelamento() != null) {
        throw new IllegalStateException("Consulta já cancelada");
    }

    consulta.setMotivoCancelamento(dados.getMotivo());
    consultaRepository.save(consulta);
}

Espero que essas dicas ajudem a esclarecer o processo. É sempre bom ter um passo a passo mais detalhado, e sua sugestão de revisão é muito válida.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.