<?php

namespace App\Http\Controllers;

use App\Models\JugadorEquipo;
use Illuminate\Http\Request;

class JugadorEquipoController extends Controller
{
    public function index()
    {
        $relaciones = JugadorEquipo::with('jugador', 'equipo')->get();
        return response()->json($relaciones);
    }

    public function show($idJugador, $idEquipo)
    {
        $relacion = JugadorEquipo::where('id_jugador', $idJugador)
            ->where('id_equipo', $idEquipo)
            ->with('jugador', 'equipo')
            ->firstOrFail();
        return response()->json($relacion);
    }

    public function store(Request $request)
    {
        $data = $request->validate([
            'id_jugador' => 'required|string|max:6|exists:jugadores,id_jugador',
            'id_equipo' => 'required|integer|exists:equipos,id_equipo',
            'fecha_alta' => 'nullable|date',
        ]);
        $relacion = JugadorEquipo::create($data);
        return response()->json($relacion, 201);
    }

    public function update(Request $request, $idJugador, $idEquipo)
    {
        $relacion = JugadorEquipo::where('id_jugador', $idJugador)
            ->where('id_equipo', $idEquipo)
            ->firstOrFail();
        
        $data = $request->validate([
            'fecha_alta' => 'nullable|date',
        ]);
        $relacion->update($data);
        return response()->json($relacion);
    }

    public function destroy($idJugador, $idEquipo)
    {
        $relacion = JugadorEquipo::where('id_jugador', $idJugador)
            ->where('id_equipo', $idEquipo)
            ->firstOrFail();
        $relacion->delete();
        return response()->json(null, 204);
    }

    public function porJugador($idJugador)
    {
        $relaciones = JugadorEquipo::where('id_jugador', $idJugador)
            ->with('equipo')
            ->get();
        return response()->json($relaciones);
    }

    public function porEquipo($idEquipo)
    {
        $relaciones = JugadorEquipo::where('id_equipo', $idEquipo)
            ->with('jugador')
            ->get();
        return response()->json($relaciones);
    }
}
