Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Haga lo que hicimos en aula

Implementé la funcionalidad de cancelamiento de consultas siguiendo la estructura vista en clase: creé el método @DeleteMapping en el controller, agregué el DTO DatosCancelamientoConsulta, el enum MotivoCancelamiento, y el método cancelar en el servicio ReservaDeConsultas. También actualicé la entidad Consulta para incluir el motivo de cancelamiento y modifiqué el constructor correspondiente, además de crear la migración para agregar la nueva columna en la base de datos.

1 respuesta

¡Hola Estudiante, espero que estés bien!

Parece que has seguido correctamente los pasos vistos en clase para implementar la funcionalidad de cancelamiento de consultas. Sin embargo, es importante asegurarse de que todos los detalles estén cubiertos para que funcione correctamente. Aquí tienes algunos puntos clave que podrías revisar:

  1. Validación del motivo de cancelamiento: Asegúrate de que el sistema está validando correctamente que el motivo de cancelamiento es uno de los valores permitidos: "paciente desistió", "médico canceló" u "otros". Esto debería estar cubierto por el uso del enum MotivoCancelamiento.

  2. Validación de las 24 horas: No vi en tu descripción cómo se está manejando la regla de negocio que exige que la cancelación se haga con al menos 24 horas de anticipación. Podrías agregar una validación en el método cancelar de la clase ReservaDeConsultas para verificar si la fecha de la consulta es al menos 24 horas después de la fecha actual. Aquí tienes un ejemplo de cómo podrías hacerlo:

    public void cancelar(DatosCancelamientoConsulta datos) {
        if (!consultaRepository.existsById(datos.idConsulta())) {
            throw new ValidacionException("Id de la consulta informado no existe!");
        }
        var consulta = consultaRepository.getReferenceById(datos.idConsulta());
        
        // Validar que la cancelación sea con al menos 24 horas de anticipación
        if (consulta.getFecha().isBefore(LocalDateTime.now().plusHours(24))) {
            throw new ValidacionException("La consulta solo puede ser cancelada con al menos 24 horas de anticipación.");
        }
        
        consulta.cancelar(datos.motivo());
    }
    
  3. Migración de la base de datos: Asegúrate de que la migración para agregar la columna motivo_cancelamiento se ha ejecutado correctamente en tu base de datos. Puedes verificar esto revisando la estructura de la tabla en tu base de datos.

Espero que estos consejos te sean útiles. ¡Buena suerte con tu implementación! Espero haber ayudado y buenos estudios!