package com.arena.combat.controller;

import com.arena.combat.dto.request.AuditoriaEventoRequest;
import com.arena.combat.entity.AuditoriaEvento;
import com.arena.combat.service.AuditoriaService;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/api/auditoria")
@RequiredArgsConstructor
public class AuditoriaController {

    private final AuditoriaService auditoriaService;

    @PostMapping("/evento")
    public ResponseEntity<AuditoriaEvento> registrarEvento(@Valid @RequestBody AuditoriaEventoRequest request,
                                                           HttpServletRequest httpRequest) {
        AuditoriaEvento guardado = auditoriaService.registrarEvento(request, httpRequest);
        return ResponseEntity.status(HttpStatus.CREATED).body(guardado);
    }

    @GetMapping("/usuario/{usuarioId}")
    public ResponseEntity<List<AuditoriaEvento>> listarEventosPorUsuario(@PathVariable Long usuarioId) {
        List<AuditoriaEvento> eventos = auditoriaService.listarEventosPorUsuario(usuarioId);
        return ResponseEntity.ok(eventos);
    }

    @GetMapping("/recientes")
    public ResponseEntity<List<AuditoriaEvento>> listarRecientes() {
        List<AuditoriaEvento> eventos = auditoriaService.listarUltimosEventos();
        return ResponseEntity.ok(eventos);
    }
}
