Schema::create('roles', function (Blueprint $table) {
            $table->id();
            $table->enum('nombre', ['administrador', 'representante', 'publico']);
            $table->timestamps();
        });
chema::create('users', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->string('email')
                ->unique();
            $table->timestamp('email_verified_at')
                ->nullable();
            $table->string('password');
            $table->rememberToken();
            $table->timestamps();
        });
 Schema::create('role_user', function (Blueprint $table) {
            $table->id();
            $table->foreignId('user_id')
                ->constrained()
                ->onDelete('cascade');

            $table->foreignId('role_id')
                ->constrained()
                ->onDelete('cascade');

            $table->unique(['user_id', 'role_id']);
            $table->timestamps();
        });
 Schema::create('clubs', function (Blueprint $table) {
            $table->id();
            $table->string('nombre')->unique();
            $table->string('representante_nombre');
            $table->string('email')->unique();
            $table->string('direccion')->nullable();
            $table->foreignId('user_id')->nullable()->constrained()->onDelete('set null');
            $table->timestamps();
        });
 Schema::create('categorias', function (Blueprint $table) {
            $table->id();
            $table->string('nombre')->unique();
            $table->integer('edad_minima');
            $table->integer('edad_maxima');
            $table->timestamps();
        });
Schema::create('disciplinas', function (Blueprint $table) {
            $table->id();
            $table->string('nombre')->unique();
            $table->string('descripcion')->nullable();
            $table->string('tipo_estadistica_principal')->default('Punto');
            $table->timestamps();
        });
Schema::create('campeonatos', function (Blueprint $table) {
            $table->id();
            $table->string('nombre')->unique();
            $table->year('ano_referencia');
            $table->date('fecha_inicio')->nullable();
            $table->date('fecha_fin')->nullable();
            $table->enum('estado', ['inscripcion', 'en_proceso', 'finalizado', 'cancelado'])
                ->default('inscripcion');
            $table->timestamps();
        });
Schema::create('campeonato_reglas', function (Blueprint $table) {
            $table->id();
            $table->foreignId('campeonato_id')->constrained('campeonatos')->onDelete('cascade');
            $table->foreignId('disciplina_id')->constrained('disciplinas')->onDelete('cascade');
            $table->foreignId('categoria_id')->constrained('categorias')->onDelete('cascade');
            $table->integer('max_equipos_club')->default(1);
            $table->unique(['campeonato_id', 'disciplina_id', 'categoria_id'], 'unique_campeonato_regla');

            $table->timestamps();
        });
 Schema::create('jugadors', function (Blueprint $table) {
            $table->id();
            $table->foreignId('club_id')->constrained('clubs')->onDelete('cascade');
            $table->string('nombre');
            $table->string('apellido');
            $table->date('fecha_nacimiento');
            $table->string('identificacion');
            $table->string('genero');
            $table->string('telefono');
            $table->string('foto_path')->nullable(); 
            $table->decimal('peso', 5, 2)->nullable(); 
            $table->decimal('estatura', 5, 2)->nullable(); 
            $table->integer('numero')->nullable();
            $table->string('posicion')->nullable();
            $table->timestamps();
        });
Schema::create('inscripcions', function (Blueprint $table) {
            $table->id();

            // Clave foránea al jugador (quien se inscribe)
            $table->foreignId('jugador_id')->constrained('jugadors')->onDelete('cascade');

            // Clave foránea a la regla (en qué se inscribe)
            $table->foreignId('campeonato_regla_id')->constrained('campeonato_reglas')->onDelete('cascade');

            // Fecha y estado de la inscripción
            $table->date('fecha_inscripcion');
            $table->string('estado')->default('pendiente'); // 'pendiente', 'aprobada', 'rechazada'

            // Un jugador solo puede inscribirse una vez en la misma regla
            $table->unique(['jugador_id', 'campeonato_regla_id']);

            $table->timestamps();
        });
 Schema::create('equipos', function (Blueprint $table) {
            $table->id();
            $table->foreignId('campeonato_regla_id')
                ->constrained('campeonato_reglas')
                ->onDelete('cascade');

            $table->foreignId('club_id')
                ->constrained('clubs')
                ->onDelete('cascade');

            $table->string('nombre', 150);
            $table->foreignId('capitan_id')
                ->nullable()
                ->constrained('jugadors')
                ->onDelete('set null');
            $table->timestamps();

            $table->unique(['campeonato_regla_id', 'club_id'], 'club_regla_unique');
        });
Schema::create('partidos', function (Blueprint $table) {
            $table->id();
            $table->foreignId('campeonato_regla_id')
                ->constrained('campeonato_reglas')
                ->onDelete('cascade');

            $table->unsignedInteger('jornada_numero');
            $table->foreignId('equipo_local_id')
                ->constrained('equipos')
                ->onDelete('cascade');

            $table->foreignId('equipo_visitante_id')
                ->constrained('equipos')
                ->onDelete('cascade');

            $table->dateTime('fecha_hora')
                ->nullable();

            $table->unsignedInteger('goles_local')
                ->nullable();

            $table->unsignedInteger('goles_visitante')
                ->nullable();

            $table->enum('estado', ['PROGRAMADO', 'JUGADO', 'POSTERGADO', 'CANCELADO'])
                ->default('PROGRAMADO');

            $table->timestamps();
            $table->unique(['jornada_numero', 'equipo_local_id']);
            $table->unique(['jornada_numero', 'equipo_visitante_id']);
        });
 Schema::create('asignacion_jugadors', function (Blueprint $table) {
            $table->id();
            $table->foreignId('jugador_id')->constrained('jugadors')->onDelete('cascade');
            $table->foreignId('equipo_id')->constrained('equipos')->onDelete('cascade');
            $table->boolean('activo')->default(true);
            $table->timestamps();
            $table->unique(['jugador_id', 'equipo_id']);
        });
