package com.arena.combat.controller;

import com.arena.combat.dto.request.LoginUsuarioRequest;
import com.arena.combat.dto.request.RegistroUsuarioRequest;
import com.arena.combat.dto.response.EstadisticasUsuarioResponse;
import com.arena.combat.dto.response.UsuarioResponse;
import com.arena.combat.service.UsuarioService;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/api/usuarios")
@RequiredArgsConstructor
public class UsuarioController {

    private final UsuarioService usuarioService;

    @PostMapping("/registro")
    public ResponseEntity<UsuarioResponse> registrarUsuario(@Valid @RequestBody RegistroUsuarioRequest request) {
        UsuarioResponse nuevoUsuario = usuarioService.registrarUsuario(request);
        return ResponseEntity.status(HttpStatus.CREATED).body(nuevoUsuario);
    }

    @PostMapping("/login")
    public ResponseEntity<UsuarioResponse> login(@Valid @RequestBody LoginUsuarioRequest request) {
        UsuarioResponse usuario = usuarioService.autenticarUsuario(request);
        return ResponseEntity.ok(usuario);
    }

    @GetMapping("/{id}/perfil")
    public ResponseEntity<UsuarioResponse> obtenerPerfil(@PathVariable Long id) {
        UsuarioResponse usuario = usuarioService.obtenerPerfil(id);
        return ResponseEntity.ok(usuario);
    }

    @GetMapping("/{id}/estadisticas")
    public ResponseEntity<EstadisticasUsuarioResponse> obtenerEstadisticas(@PathVariable Long id) {
        EstadisticasUsuarioResponse estadisticas = usuarioService.obtenerEstadisticas(id);
        return ResponseEntity.ok(estadisticas);
    }
}
