migrations/Version20260507100000.php line 1

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace DoctrineMigrations;
  4. use Doctrine\DBAL\Schema\Schema;
  5. use Doctrine\Migrations\AbstractMigration;
  6. final class Version20260507100000 extends AbstractMigration
  7. {
  8.     public function getDescription(): string
  9.     {
  10.         return 'Crea tablas ensayo_paes y ensayo_paes_sede para gestión autoadministrable de inscripciones PAES';
  11.     }
  12.     public function up(Schema $schema): void
  13.     {
  14.         $this->addSql('CREATE TABLE ensayo_paes (
  15.             id INT AUTO_INCREMENT NOT NULL,
  16.             nombre VARCHAR(255) NOT NULL,
  17.             version VARCHAR(255) NOT NULL,
  18.             fecha_ensayo DATE DEFAULT NULL,
  19.             activo TINYINT(1) NOT NULL DEFAULT 0,
  20.             permitir_online TINYINT(1) NOT NULL DEFAULT 0,
  21.             fecha_apertura_inscripcion DATETIME DEFAULT NULL,
  22.             fecha_cierre_inscripcion DATETIME DEFAULT NULL,
  23.             fecha_creacion DATETIME NOT NULL,
  24.             UNIQUE INDEX UNIQ_ENSAYO_PAES_VERSION (version(191)),
  25.             PRIMARY KEY(id)
  26.         ) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
  27.         $this->addSql('CREATE TABLE ensayo_paes_sede (
  28.             id INT AUTO_INCREMENT NOT NULL,
  29.             ensayo_id INT NOT NULL,
  30.             nombre VARCHAR(255) NOT NULL,
  31.             cupo_maximo INT NOT NULL DEFAULT 0,
  32.             activo TINYINT(1) NOT NULL DEFAULT 1,
  33.             INDEX IDX_ENSAYO_PAES_SEDE_ENSAYO (ensayo_id),
  34.             PRIMARY KEY(id),
  35.             CONSTRAINT FK_ENSAYO_PAES_SEDE_ENSAYO FOREIGN KEY (ensayo_id) REFERENCES ensayo_paes (id) ON DELETE CASCADE
  36.         ) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
  37.         // Insertar la edición actual "mayo 2026" para no perder compatibilidad con datos existentes
  38.         $this->addSql("INSERT INTO ensayo_paes (nombre, version, fecha_ensayo, activo, permitir_online, fecha_creacion)
  39.             VALUES ('Ensayo Mayo 2026', 'mayo 2026', '2026-05-09', 0, 0, NOW())");
  40.         $this->addSql("INSERT INTO ensayo_paes_sede (ensayo_id, nombre, cupo_maximo, activo)
  41.             SELECT id, 'Campus San Joaquín UC', 9000, 1 FROM ensayo_paes WHERE version = 'mayo 2026'");
  42.         $this->addSql("INSERT INTO ensayo_paes_sede (ensayo_id, nombre, cupo_maximo, activo)
  43.             SELECT id, 'Preuniversitario UC Concepción', 500, 1 FROM ensayo_paes WHERE version = 'mayo 2026'");
  44.         $this->addSql("INSERT INTO ensayo_paes_sede (ensayo_id, nombre, cupo_maximo, activo)
  45.             SELECT id, 'Campus Villarrica UC', 500, 0 FROM ensayo_paes WHERE version = 'mayo 2026'");
  46.         $this->addSql("INSERT INTO ensayo_paes_sede (ensayo_id, nombre, cupo_maximo, activo)
  47.             SELECT id, 'Preuniversitario UC Temuco', 350, 1 FROM ensayo_paes WHERE version = 'mayo 2026'");
  48.         $this->addSql("INSERT INTO ensayo_paes_sede (ensayo_id, nombre, cupo_maximo, activo)
  49.             SELECT id, 'Preuniversitario UC La Serena', 550, 1 FROM ensayo_paes WHERE version = 'mayo 2026'");
  50.         $this->addSql("INSERT INTO ensayo_paes_sede (ensayo_id, nombre, cupo_maximo, activo)
  51.             SELECT id, 'Colegio Chuquicamata - Calama', 1000, 1 FROM ensayo_paes WHERE version = 'mayo 2026'");
  52.         $this->addSql("INSERT INTO ensayo_paes_sede (ensayo_id, nombre, cupo_maximo, activo)
  53.             SELECT id, 'Sede Preuniversitario UC Pirque', 400, 0 FROM ensayo_paes WHERE version = 'mayo 2026'");
  54.     }
  55.     public function down(Schema $schema): void
  56.     {
  57.         $this->addSql('DROP TABLE ensayo_paes_sede');
  58.         $this->addSql('DROP TABLE ensayo_paes');
  59.     }
  60. }