# language: es
# Fuente: album/book/ops-templates/backoffice/01-gestion-solicitudes.md
# Drive: 05. ATC - Operaciones/Procedimientos
# Tests Backend: pytest tests/contracts/solicitudes/test_service_requests.py
# Tests Frontend: npx playwright test admin-requests.spec.ts

Característica: Gestion de solicitudes de servicio

  Como administrador del backoffice
  Quiero gestionar todas las solicitudes del sistema
  Para asegurar que se atiendan correctamente

  Antecedentes:
    Dado que estoy logueado como administrador
    Y estoy en la seccion "Solicitudes" del backoffice

  # ============================================
  # VER Y FILTRAR SOLICITUDES
  # ============================================

  Escenario: Ver listado de todas las solicitudes
    Cuando cargo la pagina de solicitudes
    Entonces deberia ver un listado paginado
    Y cada solicitud deberia mostrar:
      | campo        |
      | ID           |
      | Dueno        |
      | Mascota      |
      | Servicios    |
      | Estado       |
      | Fecha        |

  Esquema del escenario: Filtrar solicitudes por estado
    Cuando filtro por estado "<estado>"
    Entonces solo deberia ver solicitudes con estado "<estado>"

    Ejemplos:
      | estado      |
      | Pendiente   |
      | Coordinado  |
      | Pagado      |
      | Completado  |
      | Cancelado   |

  Escenario: Buscar solicitud especifica
    Cuando busco por email "maria@ejemplo.com"
    Entonces deberia ver solo solicitudes de ese dueno

  Escenario: Filtrar por rango de fechas
    Cuando filtro desde "01/01/2024" hasta "31/01/2024"
    Entonces solo deberia ver solicitudes de enero 2024

  # ============================================
  # ASIGNAR VETERINARIO MANUALMENTE
  # ============================================

  Escenario: Asignar veterinario a solicitud pendiente
    Dado que hay una solicitud pendiente en "Palermo"
    Y no fue aceptada por ningun veterinario
    Cuando abro el detalle de la solicitud
    Y hago click en "Asignar veterinario"
    Entonces deberia ver lista de veterinarios con cobertura en Palermo

    Cuando selecciono "Dra. Garcia"
    Y selecciono fecha "15 de enero" hora "10:00"
    Y confirmo la asignacion
    Entonces la solicitud deberia pasar a estado "Coordinado"
    Y deberia estar asignada a Dra. Garcia
    Y el dueno deberia recibir notificacion
    Y el veterinario deberia recibir notificacion

  Escenario: Ver disponibilidad de veterinarios antes de asignar
    Dado que estoy asignando un veterinario
    Cuando veo la lista de veterinarios disponibles
    Entonces deberia ver para cada uno:
      | informacion          |
      | Nombre               |
      | Disponibilidad       |
      | Visitas del dia      |
      | Distancia a destino  |

  # ============================================
  # CAMBIAR ESTADO MANUALMENTE
  # ============================================

  Escenario: Cambiar estado de solicitud
    Dado que hay una solicitud en estado "Coordinado"
    Y el pago se proceso pero el webhook fallo
    Cuando abro la solicitud
    Y hago click en "Cambiar estado"
    Y selecciono "Pagado"
    Y ingreso motivo "Pago confirmado manualmente - ID MP: 12345"
    Y confirmo el cambio
    Entonces la solicitud deberia pasar a "Pagado"
    Y el cambio deberia registrarse en el historial
    Y deberia quedar mi usuario como responsable del cambio

  Regla: Solo ciertos cambios de estado son validos

    Escenario: No puedo volver a estado anterior
      Dado que hay una solicitud en estado "Completado"
      Cuando intento cambiar el estado a "Pagado"
      Entonces deberia ver error "No se puede volver a un estado anterior"

    Escenario: Puedo cancelar desde cualquier estado
      Dado que hay una solicitud en estado "Coordinado"
      Cuando cambio el estado a "Cancelado"
      Y ingreso motivo de cancelacion
      Entonces la solicitud deberia cancelarse

  # ============================================
  # VER DETALLE COMPLETO
  # ============================================

  Escenario: Ver historial de cambios de una solicitud
    Dado que hay una solicitud con varios cambios de estado
    Cuando abro el detalle de la solicitud
    Y voy a la pestaña "Historial"
    Entonces deberia ver todos los cambios con:
      | campo           |
      | Fecha y hora    |
      | Estado anterior |
      | Estado nuevo    |
      | Usuario         |
      | Motivo          |

  Escenario: Ver informacion de pago
    Dado que hay una solicitud pagada
    Cuando abro el detalle
    Entonces deberia ver seccion "Pago" con:
      | campo              |
      | Monto              |
      | Fecha de pago      |
      | Metodo             |
      | ID operacion MP    |
      | Estado del pago    |

  # ============================================
  # CASOS ESPECIALES
  # ============================================

  Escenario: Reasignar veterinario
    Dado que hay una solicitud asignada a "Dr. Lopez"
    Y Dr. Lopez no puede asistir
    Cuando abro la solicitud
    Y hago click en "Reasignar"
    Y selecciono otro veterinario
    Y confirmo
    Entonces Dr. Lopez deberia ser notificado de la desasignacion
    Y el nuevo vet deberia ser notificado
    Y el dueno deberia ser notificado del cambio

  Escenario: Solicitud sin veterinarios disponibles
    Dado que hay una solicitud pendiente en una zona remota
    Y no hay veterinarios con cobertura en esa zona
    Cuando intento asignar veterinario
    Entonces deberia ver mensaje "No hay veterinarios disponibles"
    Y deberia poder expandir la busqueda a zonas cercanas
