# Registro Pádel — Perfil del Socio

Endpoints para gestión del perfil del socio autenticado en DeportesCam.
Todos los endpoints requieren Bearer token Sanctum.

---

## POST /deportescam/registro-padel/cambiar-password

Actualiza la contraseña del socio autenticado. Se verifica que `password_actual`
coincida con la almacenada antes de aplicar el cambio.
La nueva contraseña debe cumplir: mín. 8 caracteres, al menos una mayúscula,
una minúscula, un número y un carácter especial.  
Bitácora acción **28**.

**Autenticación:** Requerida (`Authorization: Bearer {token}`)  
**Middleware:** `auth:sanctum`, `seguridadFSG`, `throttle:60,1`

### Body (JSON)

| Campo | Tipo | Requerido | Descripción | Ejemplo |
|-------|------|-----------|-------------|---------|
| `password_actual` | string | Sí | Contraseña actual del socio | `MiPass1!` |
| `password` | string | Sí | Nueva contraseña (mín. 8 chars, mayúsculas, minúsculas, número y carácter especial) | `NuevaPass2@` |
| `password_confirmation` | string | Sí | Confirmación de la nueva contraseña | `NuevaPass2@` |

```json
{
  "password_actual": "MiPass1!",
  "password": "NuevaPass2@",
  "password_confirmation": "NuevaPass2@"
}
```

### Respuestas

#### 200 — Contraseña actualizada

```json
{
  "success": true,
  "message": "Contraseña actualizada correctamente."
}
```

#### 422 — Contraseña actual incorrecta

```json
{
  "success": false,
  "message": "La contraseña actual es incorrecta."
}
```

#### 422 — Contraseñas no coinciden

```json
{
  "success": false,
  "status": 422,
  "message": "Tienes errores de validación",
  "errors": {
    "password": ["La confirmación de contraseña no coincide."]
  }
}
```

#### 422 — Nueva contraseña no cumple el formato

```json
{
  "success": false,
  "status": 422,
  "message": "Tienes errores de validación",
  "errors": {
    "password": ["La contraseña debe contener mayúsculas, minúsculas, números y al menos un carácter especial."]
  }
}
```

#### 401 — Token inválido o ausente

```json
{
  "message": "Unauthenticated."
}
```

#### 500 — Error interno

```json
{
  "success": false,
  "message": "Descripción del error interno."
}
```

---

## POST /deportescam/registro-padel/actualizar-contacto

Actualiza el correo electrónico, el número de celular y las preferencias de
notificación del socio autenticado.

- Si `registroPadelNotificacionesCorreo` = `Si`, el campo `registroPadelCorreoElectronico` es obligatorio.
- Si `registroPadelNotificacionesWhatsApp` = `Si`, el campo `registroPadelNumeroCelular` es obligatorio.

Bitácora acción **29**.

**Autenticación:** Requerida (`Authorization: Bearer {token}`)  
**Middleware:** `auth:sanctum`, `seguridadFSG`, `throttle:60,1`

### Body (JSON)

| Campo | Tipo | Requerido | Descripción | Ejemplo |
|-------|------|-----------|-------------|---------|
| `registroPadelNotificacionesCorreo` | string | Sí | Recibir notificaciones por correo. Valores: `Si`, `No` | `Si` |
| `registroPadelNotificacionesWhatsApp` | string | Sí | Recibir notificaciones por WhatsApp. Valores: `Si`, `No` | `No` |
| `registroPadelCorreoElectronico` | string | Condicional | Correo electrónico. Requerido si `notificacionesCorreo` = `Si` | `socio@email.com` |
| `registroPadelNumeroCelular` | string | Condicional | Celular con exactamente 10 dígitos. Requerido si `notificacionesWhatsApp` = `Si` | `5512345678` |

```json
{
  "registroPadelNotificacionesCorreo": "Si",
  "registroPadelNotificacionesWhatsApp": "Si",
  "registroPadelCorreoElectronico": "socio@email.com",
  "registroPadelNumeroCelular": "5512345678"
}
```

### Respuestas

#### 200 — Contacto actualizado

```json
{
  "success": true,
  "message": "Medios de contacto actualizados correctamente."
}
```

#### 422 — Correo requerido pero no enviado

```json
{
  "success": false,
  "status": 422,
  "message": "Tienes errores de validación",
  "errors": {
    "registroPadelCorreoElectronico": ["El correo electrónico es requerido cuando las notificaciones por correo están activas."]
  }
}
```

#### 422 — Celular requerido pero no enviado

```json
{
  "success": false,
  "status": 422,
  "message": "Tienes errores de validación",
  "errors": {
    "registroPadelNumeroCelular": ["El número de celular es requerido cuando las notificaciones por WhatsApp están activas."]
  }
}
```

#### 422 — Formato de correo inválido

```json
{
  "success": false,
  "status": 422,
  "message": "Tienes errores de validación",
  "errors": {
    "registroPadelCorreoElectronico": ["El correo electrónico no tiene un formato válido."]
  }
}
```

#### 422 — Celular con formato inválido

```json
{
  "success": false,
  "status": 422,
  "message": "Tienes errores de validación",
  "errors": {
    "registroPadelNumeroCelular": ["El número de celular debe tener exactamente 10 dígitos."]
  }
}
```

#### 401 — Token inválido o ausente

```json
{
  "message": "Unauthenticated."
}
```

#### 500 — Error interno

```json
{
  "success": false,
  "message": "Descripción del error interno."
}
```
