96 Eliminar Reservas de Citas Medicas en el Calendario del Sistema con LARAVEL(PHP-MySql) FullStack

Duración: 17 min
Módulo: 🗓️ Reserva de Citas y FullCalendar Lección 11 de 14

Descripción

🗑️❌ Lección 96: Eliminación Segura de Reservas de Citas Médicas

Esta lección aborda la implementación de la funcionalidad de Eliminar en el listado de reservas del usuario. El objetivo es proporcionar una experiencia de usuario robusta y segura, utilizando confirmación visual y respetando los protocolos de seguridad de Laravel.

1. 🖥️ Frontend: Confirmación con SweetAlert2

Para mejorar la experiencia del usuario y prevenir eliminaciones accidentales, la acción se implementa a través de un formulario que se envía solo después de la confirmación en una alerta de SweetAlert2.

A. Estructura HTML y JS [01:58]

  1. Formulario Único: El botón de eliminar se envuelve en una etiqueta <form> con el método POST. Se le asigna un ID único concatenando la palabra "formulario" con el ID del evento (formulario-{{ $evento->id }}).
  2. Activación de Alerta: El botón tiene un evento onclick que llama a una función de JavaScript llamada preguntar({{ $evento->id }}) [06:22].

B. Función preguntar(id) (JavaScript) [07:02]

Esta función utiliza SweetAlert2 para mostrar una ventana de diálogo personalizada:

  • Título: "¿Está seguro de eliminar este registro de reserva?" [08:20].
  • Texto Descriptivo: Advierte que "si elimina este registro, otro usuario podrá reservar en este mismo horario" [09:06].
  • Icono: Se utiliza el ícono de question (pregunta) [09:41].
  • Acción de Confirmación: Si el usuario hace clic en el botón "Eliminar" (confirmación en español), se recupera el formulario único mediante el ID (formulario-${id}) y se ejecuta el envío: form.submit() [10:41].

2. 🛡️ Backend: Seguridad y Eliminación (Laravel)

El proceso de eliminación requiere seguir las convenciones de Laravel para el método DELETE a través de un formulario.

A. Configuración del Formulario

Para que Laravel procese la solicitud correctamente, se deben añadir dos directivas esenciales dentro del formulario [16:02]:

  1. Protección CSRF: @csrf (Necesario para cualquier formulario POST).
  2. Método DELETE: @method('DELETE') (Spoofing para simular una petición DELETE ya que los formularios HTML solo soportan GET y POST) [16:16].

B. Lógica del EventController@destroy [13:09]

  1. Ruta: Se utiliza la ruta destroy del recurso de eventos (admin/eventos/{id}).
  2. Eliminación: La función destroy recibe el ID del evento y utiliza el método estático Event::destroy($id) para eliminar el registro de la tabla events [13:33].
  3. Respuesta: Tras la eliminación, se redirige a la vista anterior (back()) y se envía un mensaje de éxito con SweetAlert2: "Se eliminó la reserva de la manera correcta" [14:01].

Este proceso asegura que las reservas puedan ser canceladas de forma segura y liberando inmediatamente el horario para otros usuarios [16:32].