<?php

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class BaseMigration extends Migration
{     public function up()
    {   

        Schema::create('tipos_documento', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('nombre', 30);
            $table->string('sigla', 2);
            $table->timestamps();
        });

        DB::table('tipos_documento')->insert([
            ['id'=> 1, 'nombre'=> 'Cédula de ciudadanía', 'sigla'=> 'CC'],
            ['id'=> 2, 'nombre'=> 'Cédula de extranjería', 'sigla'=> 'CE'],
            ['id'=> 3, 'nombre'=> 'Pasaporte', 'sigla'=> 'PS'],
        ]);

        Schema::create('paises', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('nombre', 65)->nullable();
        });

        DB::table('paises')->insert([
            ['id' => 1, 'nombre' => 'Estados Unidos'],
            ['id' => 7, 'nombre' => 'Azajstán (República De)'],
            ['id' => 10, 'nombre' => 'Puerto Rico'],
            ['id' => 11, 'nombre' => 'Trinidad Y Tabago'],
            ['id' => 12, 'nombre' => 'Bahamas (Commonwealth De Las)'],
            ['id' => 13, 'nombre' => 'Barbados'],
            ['id' => 14, 'nombre' => 'Bermudas'],
            ['id' => 15, 'nombre' => 'Caimanes (Islas)'],
            ['id' => 16, 'nombre' => 'Canadá'],
            ['id' => 17, 'nombre' => 'Dominica (Commonwealth De)'],
            ['id' => 18, 'nombre' => 'Dominicana (República)'],
            ['id' => 19, 'nombre' => 'Jamaica'],
            ['id' => 20, 'nombre' => 'Egipto (República Árabe De)'],
            ['id' => 27, 'nombre' => 'Sudafricana (República)'],
            ['id' => 30, 'nombre' => 'Grecia'],
            ['id' => 31, 'nombre' => 'Países Bajos (Reino De Los)'],
            ['id' => 32, 'nombre' => 'Bélgica'],
            ['id' => 33, 'nombre' => 'Francia'],
            ['id' => 34, 'nombre' => 'España'],
            ['id' => 36, 'nombre' => 'Hungría (República De)'],
            ['id' => 39, 'nombre' => 'Italia'],
            ['id' => 40, 'nombre' => 'Rumania'],
            ['id' => 41, 'nombre' => 'Suiza (Confederación)'],
            ['id' => 43, 'nombre' => 'Austria'],
            ['id' => 44, 'nombre' => 'Reino Unido De Gran Bretaña E Irlanda Del Norte'],
            ['id' => 45, 'nombre' => 'Dinamarca'],
            ['id' => 46, 'nombre' => 'Suecia'],
            ['id' => 47, 'nombre' => 'Noruega'],
            ['id' => 48, 'nombre' => 'Polonia (República De)'],
            ['id' => 49, 'nombre' => 'Alemania (República Federal De)'],
            ['id' => 51, 'nombre' => 'Perú'],
            ['id' => 52, 'nombre' => 'Mexico'],
            ['id' => 53, 'nombre' => 'Cuba'],
            ['id' => 54, 'nombre' => 'Argentina (República)'],
            ['id' => 55, 'nombre' => 'Brasil (República Federativa Del)'],
            ['id' => 56, 'nombre' => 'Chile'],
            ['id' => 57, 'nombre' => 'Colombia'],
            ['id' => 58, 'nombre' => 'Venezuela (República Bolivariana De)'],
            ['id' => 60, 'nombre' => 'Malasia'],
            ['id' => 61, 'nombre' => 'Australia'],
            ['id' => 62, 'nombre' => 'Indonesia (República De)'],
            ['id' => 63, 'nombre' => 'Filipinas (República De)'],
            ['id' => 64, 'nombre' => 'Nueva Zelandia'],
            ['id' => 65, 'nombre' => 'Singapur (República De)'],
            ['id' => 66, 'nombre' => 'Tailandia'],
            ['id' => 81, 'nombre' => 'Japón'],
            ['id' => 82, 'nombre' => 'Corea (República De)'],
            ['id' => 84, 'nombre' => 'Viet Nam (República Socialista De)'],
            ['id' => 86, 'nombre' => 'China (República Popular De)'],
            ['id' => 90, 'nombre' => 'Turquía'],
            ['id' => 91, 'nombre' => 'India (República De La)'],
            ['id' => 92, 'nombre' => 'Pakistán (República Islámica Del)'],
            ['id' => 93, 'nombre' => 'Afganistán'],
            ['id' => 94, 'nombre' => 'Sri Lanka (República Socialista Democrática De)'],
            ['id' => 95, 'nombre' => 'Myanmar (Unión De)'],
            ['id' => 98, 'nombre' => 'Irán (República Islámica Del)'],
            ['id' => 212, 'nombre' => 'Marruecos (Reino De)'],
            ['id' => 213, 'nombre' => 'Argelia (República Argelina Democrática Y Popular)'],
            ['id' => 216, 'nombre' => 'Túnez'],
            ['id' => 218, 'nombre' => 'Libia (Jamahiriya Árabe Libia Popular Y Socialista'],
            ['id' => 220, 'nombre' => 'Gambia (República De)'],
            ['id' => 221, 'nombre' => 'Senegal (República Del)'],
            ['id' => 222, 'nombre' => 'Mauritania (República Islámica De)'],
            ['id' => 223, 'nombre' => 'Malí (República De)'],
            ['id' => 224, 'nombre' => 'Guinea (República De)'],
            ['id' => 226, 'nombre' => 'Burkina Faso'],
            ['id' => 227, 'nombre' => 'Níger (República Del)'],
            ['id' => 228, 'nombre' => 'Togolesa (República)'],
            ['id' => 229, 'nombre' => 'Benin (República De)'],
            ['id' => 230, 'nombre' => 'Mauricio (República De)'],
            ['id' => 231, 'nombre' => 'Liberia (República De)'],
            ['id' => 232, 'nombre' => 'Sierra Leona'],
            ['id' => 233, 'nombre' => 'Ghana'],
            ['id' => 234, 'nombre' => 'Nigeria (República Federal De)'],
            ['id' => 235, 'nombre' => 'Chad (República Del)'],
            ['id' => 236, 'nombre' => 'Centroafricana (República)'],
            ['id' => 237, 'nombre' => 'Camerún (República De)'],
            ['id' => 238, 'nombre' => 'Cabo Verde (República De)'],
            ['id' => 239, 'nombre' => 'Santo Tomé Y Príncipe (República Democrática De)'],
            ['id' => 240, 'nombre' => 'Guinea Ecuatorial (República De)'],
            ['id' => 241, 'nombre' => 'Gabonesa (República)'],
            ['id' => 242, 'nombre' => 'Congo (República Del)'],
            ['id' => 243, 'nombre' => 'República Democrática Del Congo'],
            ['id' => 244, 'nombre' => 'Angola (República De)'],
            ['id' => 245, 'nombre' => 'Guinea-Bissau (República De)'],
            ['id' => 247, 'nombre' => 'Ascensión'],
            ['id' => 248, 'nombre' => 'Seychelles (República De)'],
            ['id' => 249, 'nombre' => 'Sudán (República Del)'],
            ['id' => 250, 'nombre' => 'Rwanda (República De)'],
            ['id' => 251, 'nombre' => 'Etiopía (República Democrática Federal De)'],
            ['id' => 252, 'nombre' => 'Somalí (República Democrática)'],
            ['id' => 253, 'nombre' => 'Djibouti (República De)'],
            ['id' => 254, 'nombre' => 'Kenya (República De)'],
            ['id' => 255, 'nombre' => 'Tanzanía (República Unida De)'],
            ['id' => 256, 'nombre' => 'Uganda (República De)'],
            ['id' => 257, 'nombre' => 'Burundi (República De)'],
            ['id' => 258, 'nombre' => 'Mozambique (República De)'],
            ['id' => 259, 'nombre' => 'Indicativo De Reserva'],
            ['id' => 260, 'nombre' => 'Zambia (República De)'],
            ['id' => 261, 'nombre' => 'Madagascar (República De)'],
            ['id' => 263, 'nombre' => 'Zimbabwe (República De)'],
            ['id' => 264, 'nombre' => 'Namibia (República De)'],
            ['id' => 265, 'nombre' => 'Malawi'],
            ['id' => 266, 'nombre' => 'Lesotho (Reino De)'],
            ['id' => 267, 'nombre' => 'Botswana (República De)'],
            ['id' => 268, 'nombre' => 'Swazilandia (Reino De)'],
            ['id' => 269, 'nombre' => 'Comoras (Unión De Las)'],
            ['id' => 290, 'nombre' => 'Santa Elena'],
            ['id' => 291, 'nombre' => 'Eritrea'],
            ['id' => 297, 'nombre' => 'Aruba'],
            ['id' => 298, 'nombre' => 'Feroe (Islas)'],
            ['id' => 299, 'nombre' => 'Groenlandia (Dinamarca)'],
            ['id' => 350, 'nombre' => 'Gibraltar'],
            ['id' => 351, 'nombre' => 'Portugal'],
            ['id' => 352, 'nombre' => 'Luxemburgo'],
            ['id' => 353, 'nombre' => 'Irlanda'],
            ['id' => 354, 'nombre' => 'Islandia'],
            ['id' => 355, 'nombre' => 'Albania (República De)'],
            ['id' => 356, 'nombre' => 'Malta'],
            ['id' => 357, 'nombre' => 'Chipre (República De)'],
            ['id' => 358, 'nombre' => 'Finlandia'],
            ['id' => 359, 'nombre' => 'Bulgaria (República De)'],
            ['id' => 370, 'nombre' => 'Lituania (República De)'],
            ['id' => 371, 'nombre' => 'Letonia (República De)'],
            ['id' => 372, 'nombre' => 'Estonia (República De)'],
            ['id' => 373, 'nombre' => 'Moldova (República De)'],
            ['id' => 374, 'nombre' => 'Armenia (República De)'],
            ['id' => 375, 'nombre' => 'Belarús (República De)'],
            ['id' => 376, 'nombre' => 'Andorra (Principado De)'],
            ['id' => 377, 'nombre' => 'Mónaco (Principado De)'],
            ['id' => 378, 'nombre' => 'San Marino (República De)'],
            ['id' => 379, 'nombre' => 'Ciudad Del Vaticano (Estado De La)'],
            ['id' => 380, 'nombre' => 'Ucrania'],
            ['id' => 381, 'nombre' => 'Serbia (República De)'],
            ['id' => 382, 'nombre' => 'Montenegro (República De)'],
            ['id' => 385, 'nombre' => 'Croacia (República De)'],
            ['id' => 386, 'nombre' => 'Eslovenia (República De)'],
            ['id' => 387, 'nombre' => 'Bosnia Y Herzegovina'],
            ['id' => 389, 'nombre' => 'La Ex República Yugoslava De Macedonia'],
            ['id' => 420, 'nombre' => 'República Checa'],
            ['id' => 421, 'nombre' => 'República Eslovaca'],
            ['id' => 423, 'nombre' => 'Liechtenstein (Principado De)'],
            ['id' => 500, 'nombre' => 'Malvinas (Islas) (Falkland)'],
            ['id' => 501, 'nombre' => 'Belice'],
            ['id' => 502, 'nombre' => 'Guatemala (República De)'],
            ['id' => 503, 'nombre' => 'El Salvador (República De)'],
            ['id' => 504, 'nombre' => 'Honduras (República De)'],
            ['id' => 505, 'nombre' => 'Nicaragua'],
            ['id' => 506, 'nombre' => 'Costa Rica'],
            ['id' => 507, 'nombre' => 'Panamá (República De)'],
            ['id' => 509, 'nombre' => 'Haití (República De)'],
            ['id' => 590, 'nombre' => 'Guadalupe (Departamento Francés De La)'],
            ['id' => 591, 'nombre' => 'Bolivia (República De)'],
            ['id' => 592, 'nombre' => 'Guyana'],
            ['id' => 593, 'nombre' => 'Ecuador'],
            ['id' => 594, 'nombre' => 'Guayana Francesa (Departamento Francés De La)'],
            ['id' => 595, 'nombre' => 'Paraguay (República Del)'],
            ['id' => 596, 'nombre' => 'Martinica (Departamento Francés De La)'],
            ['id' => 597, 'nombre' => 'Suriname (República De)'],
            ['id' => 598, 'nombre' => 'Uruguay (República Oriental Del)'],
            ['id' => 599, 'nombre' => 'Antillas Neerlandesas'],
            ['id' => 670, 'nombre' => 'República Democrática De Timor-Leste'],
            ['id' => 672, 'nombre' => 'Territorios Exteriores De Australia'],
            ['id' => 673, 'nombre' => 'Brunei Darussalam'],
            ['id' => 674, 'nombre' => 'Nauru (República De)'],
            ['id' => 675, 'nombre' => 'Papua Nueva Guinea'],
            ['id' => 676, 'nombre' => 'Tonga (Reino De)'],
            ['id' => 677, 'nombre' => 'Salomón (Islas)'],
            ['id' => 678, 'nombre' => 'Vanuatu (República De)'],
            ['id' => 679, 'nombre' => 'Fiji (República De)'],
            ['id' => 680, 'nombre' => 'Palau (República De)'],
            ['id' => 681, 'nombre' => 'Wallis Y Futuna (Territorio Francés De Ultramar)'],
            ['id' => 682, 'nombre' => 'Cook (Islas)'],
            ['id' => 683, 'nombre' => 'Niue'],
            ['id' => 685, 'nombre' => 'Samoa (Estado Independiente De)'],
            ['id' => 686, 'nombre' => 'Kiribati (República De)'],
            ['id' => 687, 'nombre' => 'Nueva Caledonia (Territorio Francés De Ultramar)'],
            ['id' => 688, 'nombre' => 'Tuvalu'],
            ['id' => 689, 'nombre' => 'Polinesia Francesa (Territorio Francés De Ultramar'],
            ['id' => 690, 'nombre' => 'Tokelau'],
            ['id' => 691, 'nombre' => 'Micronesia (Estados Federados De)'],
            ['id' => 692, 'nombre' => 'Marshall (República De Las Islas)'],
            ['id' => 850, 'nombre' => 'República Popular Democrática De Corea'],
            ['id' => 852, 'nombre' => 'Hong Kong'],
            ['id' => 853, 'nombre' => 'Macao'],
            ['id' => 855, 'nombre' => 'Camboya (Reino De)'],
            ['id' => 856, 'nombre' => 'Lao (República Democrática Popular)'],
            ['id' => 880, 'nombre' => 'Bangladesh (República Popular De)'],
            ['id' => 886, 'nombre' => 'Taiwán'],
            ['id' => 960, 'nombre' => 'Maldivas (República De)'],
            ['id' => 961, 'nombre' => 'Líbano'],
            ['id' => 962, 'nombre' => 'Jordania (Reino Hachemita De)'],
            ['id' => 963, 'nombre' => 'República Árabe Siria'],
            ['id' => 964, 'nombre' => 'Iraq (República Del)'],
            ['id' => 965, 'nombre' => 'Kuwait (Estado De)'],
            ['id' => 966, 'nombre' => 'Arabia Saudita (Reino De)'],
            ['id' => 967, 'nombre' => 'Yemen (República Del)'],
            ['id' => 968, 'nombre' => 'Omán (Sultanía De)'],
            ['id' => 971, 'nombre' => 'Emiratos Árabes Unidos'],
            ['id' => 972, 'nombre' => 'Israel (Estado De)'],
            ['id' => 973, 'nombre' => 'Bahrein (Reino De)'],
            ['id' => 974, 'nombre' => 'Qatar (Estado De)'],
            ['id' => 975, 'nombre' => 'Bhután (Reino De)'],
            ['id' => 976, 'nombre' => 'Mongolia'],
            ['id' => 977, 'nombre' => 'Nepal'],
            ['id' => 992, 'nombre' => 'Tayikistán (República De)'],
            ['id' => 993, 'nombre' => 'Turkmenistán'],
            ['id' => 994, 'nombre' => 'Azerbaiyana (República)'],
            ['id' => 995, 'nombre' => 'Georgia'],
            ['id' => 996, 'nombre' => 'República Kirguisa'],
            ['id' => 998, 'nombre' => 'Uzbekistán (República De)'],
            ['id' => 1000, 'nombre' => 'Rusia (Federación De)'],
        ]);

        Schema::create('tiponiveles', function (Blueprint $table) {
            $table->increments('id');
            $table->string('nombre', 10)->nullable();
            $table->timestamps();
        });

        DB::table('tiponiveles')->insert([
            ['id' => 1, 'nombre' => 'PREGRADO'],
            ['id' => 2, 'nombre' => 'POSGRADO'],
        ]);

        Schema::create('niveles', function (Blueprint $table) {
            $table->increments('id');
            $table->string('nombre', 45)->nullable();
            $table->unsignedInteger('tiponiveles_id');
            $table->foreign('tiponiveles_id')->references('id')->on('tiponiveles')->onUpdate('no action')->onDelete('no action');
        });

        DB::table('niveles')->insert([
            ['id' => 1, 'nombre' => 'PREGRADO', 'tiponiveles_id' => 1],
            ['id' => 2, 'nombre' => 'ESPECIALIZACIÓN', 'tiponiveles_id' => 2],
            ['id' => 3, 'nombre' => 'MAESTRÍA', 'tiponiveles_id' => 2],
            ['id' => 4, 'nombre' => 'DOCTORADO', 'tiponiveles_id' => 2],
        ]);

        Schema::create('programas', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->unsignedInteger('niveles_id');
            $table->string('nombre', 100)->nullable();
        
            $table->index('niveles_id', 'fk_programas_niveles_idx');
        
            $table->foreign('niveles_id', 'fk_programas_niveles')
                  ->references('id')->on('niveles')
                  ->onDelete('no action')->onUpdate('no action');
        });

        DB::table('programas')->insert([
            ['id' => 2541, 'nombre' => 'INGENIERÍA AGRÍCOLA', 'niveles_id' => 1],
            ['id' => 2542, 'nombre' => 'INGENIERÍA CIVIL', 'niveles_id' => 1],
            ['id' => 2544, 'nombre' => 'INGENIERÍA ELÉCTRICA', 'niveles_id' => 1],
            ['id' => 2545, 'nombre' => 'INGENIERÍA ELECTRÓNICA', 'niveles_id' => 1],
            ['id' => 2546, 'nombre' => 'INGENIERÍA INDUSTRIAL', 'niveles_id' => 1],
            ['id' => 2547, 'nombre' => 'INGENIERÍA MECÁNICA', 'niveles_id' => 1],
            ['id' => 2548, 'nombre' => 'INGENIERIA MECATRÓNICA', 'niveles_id' => 1],
            ['id' => 2549, 'nombre' => 'INGENIERÍA QUÍMICA', 'niveles_id' => 1],
            ['id' => 2562, 'nombre' => 'MAESTRIA EN INGENIERIA - INGENIERIA AMBIENTAL', 'niveles_id' => 3],
            ['id' => 2682, 'nombre' => 'DOCTORADO EN INGENIERIA - CIENCIA Y TECNOLOGÍA DE MATERIALES', 'niveles_id' => 4],
            ['id' => 2683, 'nombre' => 'DOCTORADO EN INGENIERIA - GEOTECNIA', 'niveles_id' => 4],
            ['id' => 2684, 'nombre' => 'DOCTORADO EN INGENIERIA - SISTEMAS Y COMPUTACION', 'niveles_id' => 4],
            ['id' => 2685, 'nombre' => 'DOCTORADO EN INGENIERIA - INGENIERIA ELECTRICA', 'niveles_id' => 4],
            ['id' => 2686, 'nombre' => 'DOCTORADO EN INGENIERIA - INGENIERIA QUIMICA', 'niveles_id' => 4],
            ['id' => 2689, 'nombre' => 'ESPECIALIZACION EN ESTRUCTURAS', 'niveles_id' => 2],
            ['id' => 2691, 'nombre' => 'ESPECIALIZACION EN ILUMINACION PUBLICA Y PRIVADA', 'niveles_id' => 2],
            ['id' => 2696, 'nombre' => 'ESPECIALIZACION EN TRANSITO DISEÑO Y SEGURIDAD VIAL', 'niveles_id' => 2],
            ['id' => 2698, 'nombre' => 'MAESTRIA EN INGENIERIA - AUTOMATIZACION INDUSTRIAL', 'niveles_id' => 3],
            ['id' => 2699, 'nombre' => 'MAESTRIA EN INGENIERIA - ESTRUCTURAS', 'niveles_id' => 3],
            ['id' => 2700, 'nombre' => 'MAESTRIA EN INGENIERIA - GEOTECNIA', 'niveles_id' => 3],
            ['id' => 2701, 'nombre' => 'MAESTRIA EN INGENIERIA - INGENIERIA AGRICOLA', 'niveles_id' => 3],
            ['id' => 2702, 'nombre' => 'MAESTRIA EN INGENIERIA - INGENIERIA DE SISTEMAS Y COMPUTACIÓN', 'niveles_id' => 3],
            ['id' => 2703, 'nombre' => 'MAESTRIA EN INGENIERIA - INGENIERIA ELECTRICA', 'niveles_id' => 3],
            ['id' => 2704, 'nombre' => 'MAESTRIA EN INGENIERIA - INGENIERIA QUIMICA', 'niveles_id' => 3],
            ['id' => 2705, 'nombre' => 'MAESTRIA EN INGENIERIA - RECURSOS HIDRAULICOS', 'niveles_id' => 3],
            ['id' => 2706, 'nombre' => 'MAESTRIA EN INGENIERIA - TRANSPORTE', 'niveles_id' => 3],
            ['id' => 2707, 'nombre' => 'MAESTRIA EN INGENIERIA - TELECOMUNICACIONES', 'niveles_id' => 3],
            ['id' => 2708, 'nombre' => 'MAESTRIA EN INGENIERIA - INGENIERIA INDUSTRIAL', 'niveles_id' => 3],
            ['id' => 2709, 'nombre' => 'MAESTRIA EN INGENIERIA - INGENIERIA MECANICA', 'niveles_id' => 3],
            ['id' => 2710, 'nombre' => 'MAESTRIA EN MATERIALES Y PROCESOS', 'niveles_id' => 3],
            ['id' => 2838, 'nombre' => 'DOCTORADO EN INGENIERÍA - INDUSTRIA Y ORGANIZACIONES', 'niveles_id' => 4],
            ['id' => 2839, 'nombre' => 'DOCTORADO EN INGENIERIA - INGENIERIA MECANICA Y MECATRONICA', 'niveles_id' => 4],
            ['id' => 2856, 'nombre' => 'MAESTRIA EN INGENIERIA - INGENIERIA DE SISTEMAS Y COMPUTACIÓN - CONV UPC', 'niveles_id' => 3],
            ['id' => 2865, 'nombre' => 'MAESTRÍA EN INGENIERÍA - INGENIERÍA ELECTRÓNICA', 'niveles_id' => 3],
            ['id' => 2879, 'nombre' => 'INGENIERÍA DE SISTEMAS Y COMPUTACIÓN', 'niveles_id' => 1],
            ['id' => 2882, 'nombre' => 'MAESTRÍA EN BIOINFORMÁTICA', 'niveles_id' => 3],
            ['id' => 2886, 'nombre' => 'ESPECIALIZACION EN ESTRUCTURAS', 'niveles_id' => 3],
            ['id' => 2887, 'nombre' => 'DOCTORADO EN INGENIERIA - INGENIERIA CIVIL', 'niveles_id' => 3],
            ['id' => 2896, 'nombre' => 'ESPECIALIZACIÖN EN GOBIERNO ELECTRÓNICO', 'niveles_id' => 2],
        ]);

        Schema::create('estados_civil', function (Blueprint $table) {
            $table->increments('id');
            $table->string('nombre', 20);
        });

        DB::table('estados_civil')->insert([
            ['id' => 1, 'nombre' => 'Soltero/a'],
            ['id' => 2, 'nombre' => 'Casado/a'],
            ['id' => 3, 'nombre' => 'Viudo/a'],
            ['id' => 4, 'nombre' => 'Unión libre'],
        ]);

        Schema::create('aspirantes', function (Blueprint $table) {
            $table->increments('id');
            $table->string('codigo', 11)->nullable();
            $table->unsignedBigInteger('programa_id')->nullable();
            $table->string('nombre', 100)->nullable();
            $table->string('apellido', 100)->nullable();
            $table->string('documento', 45)->nullable();
            $table->unsignedBigInteger('tipo_documento_id')->nullable();
            $table->string('ciudad_expedicion_documento', 130)->nullable();
            $table->date('fecha_nacimiento')->nullable();
            $table->unsignedBigInteger('pais_nacimiento')->nullable();
            $table->unsignedBigInteger('pais_residencia')->nullable();
            $table->string('direccion_residencia', 200)->nullable();
            $table->string('correo', 100)->nullable();
            $table->unsignedInteger('estado_civil_id')->nullable();
            $table->string('ciudad_aplicante', 60)->nullable();
            $table->string('ruta_adjunto_documento', 256)->nullable();
            $table->string('ruta_adjunto_tarjetaprofesional', 256)->nullable();
            $table->string('telefono_fijo', 15)->nullable();
            $table->string('telefono_movil', 15)->nullable();
            $table->string('formulario_enviado', 2)->default('NO');
            $table->timestamps();

            $table->foreign('tipo_documento_id')->references('id')->on('tipos_documento')->onDelete('no action')->onUpdate('no action');
            $table->foreign('pais_nacimiento')->references('id')->on('paises')->onDelete('no action')->onUpdate('no action');
            $table->foreign('pais_residencia')->references('id')->on('paises')->onDelete('no action')->onUpdate('no action');
            $table->foreign('programa_id')->references('id')->on('programas')->onDelete('no action')->onUpdate('no action');
            $table->foreign('estado_civil_id')->references('id')->on('estados_civil')->onDelete('no action')->onUpdate('no action');
        });

        /*DB::table('aspirantes')->insert([
            ['id' => 0, 'codigo' => null, 'programa_id' => null, 'nombre' => null, 'apellido' => null, 'documento' => null, 'tipo_documento_id' => null, 'ciudad_expedicion_documento' => null, 'fecha_nacimiento' => null, 'pais_nacimiento' => null, 'pais_residencia' => null, 'direccion_residencia' => null, 'correo' => null, 'estado_civil_id' => null, 'ciudad_aplicante' => null, 'ruta_adjunto_documento' => null, 'ruta_adjunto_tarjetaprofesional' => null, 'telefono_fijo' => null, 'telefono_movil' => null, 'formulario_enviado' => 'No',]
        ]);*/

        Schema::create('areas_interes', function (Blueprint $table) {
            $table->increments('id');
            $table->string('area', 100)->nullable();
            $table->string('posible_director', 100)->nullable();
            $table->string('fuente_financiacion', 200)->nullable();
            $table->string('comentarios', 500)->nullable();
            $table->unsignedInteger('aspirantes_id')->default(0);

            $table->foreign('aspirantes_id')
                  ->references('id')
                  ->on('aspirantes')
                  ->onDelete('no action')
                  ->onUpdate('no action');
        });

        Schema::create('perfiles', function (Blueprint $table) {
            $table->integer('id')->primary();
            $table->string('identificador', 30)->nullable();
            $table->string('dedicacion', 45)->nullable();
            $table->integer('cargos')->nullable();
            $table->string('area_desempeno', 200)->nullable();
            $table->string('requisitos_posgrado', 5000)->nullable();
            $table->string('requisitos_experiencia', 5000)->nullable();
            $table->string('departamento', 80)->nullable();
            $table->boolean('necesita_soporte_tesis')->default(false);
        });
        
        DB::table('perfiles')->insert([
            ['id' => 1, 'identificador'=> 'C1', 'dedicacion'=> 'Cátedra 0.2','cargos'=> '1','area_desempeno'=> 'Iluminación o Eficiencia energética de sistemas de iluminación o Uso de software para diseño de luminarias o Uso y desarrollo de software para diseño de sistemas de iluminación','requisitos_posgrado'=> 'Maestría en Ingeniería o Doctorado en Ingeniería','requisitos_experiencia'=> 'Acumulado mínimo de experiencia Profesional o docente o investigativa de dos (2) años en el área de desempeño. Si tiene doctorado no es necesario acreditar experiencia.','departamento'=> 'Departamento de Ingeniería Eléctrica y Electrónica','necesita_soporte_tesis'=> 1],
            ['id' => 2, 'identificador'=> 'C2', 'dedicacion'=> 'Cátedra 0.3','cargos'=> '1','area_desempeno'=> 'Criptografía o Seguridad Informática o Algoritmos','requisitos_posgrado'=> 'Maestría en Ingeniería de Sistemas o  Maestría en Ingeniería de Sistemas y Computación o Doctorado en Ingeniería de Sistemas y Computación  o Doctorado en Ingeniería de Sistemas','requisitos_experiencia'=> 'Acumulado mínimo de experiencia Profesional o docente o investigativa de dos (2) años en el área de desempeño. Si tiene doctorado no es necesario acreditar experiencia.','departamento'=> 'Departamento de Ingeniería de Sistemas e Industrial','necesita_soporte_tesis'=> 0],
            ['id' => 3, 'identificador'=> 'C3', 'dedicacion'=> 'Cátedra 0.3','cargos'=> '1','area_desempeno'=> 'Ingeniería de Software o Arquitectura de Software','requisitos_posgrado'=> 'Maestría en Ingeniería de Sistemas o  Maestría en Ingeniería de Sistemas y Computación o Maestría en Ingeniería de Software o Doctorado en Ingeniería de Sistemas y Computación o  Doctorado en Ingeniería de Software o Doctorado en Ingeniería de Sistemas','requisitos_experiencia'=> 'Acumulado mínimo de experiencia Profesional o docente o investigativa de dos (2) años en el área de desempeño. Si tiene doctorado no es necesario acreditar experiencia.','departamento'=> 'Departamento de Ingeniería de Sistemas e Industria','necesita_soporte_tesis'=> 0],
            ['id' => 4, 'identificador'=> 'C4', 'dedicacion'=> 'Cátedra 0.3','cargos'=> '1','area_desempeno'=> 'Sistemas de Información y Bases de Datos','requisitos_posgrado'=> 'Maestría en Ingeniería de Sistemas o Maestría en Ingeniería de Sistemas y Computación o  Maestría en Ingeniería de Software o Maestría en Administración de Sistemas Informáticos o Doctorado en Ingeniería - Industria y Organizaciones o Doctorado en Ingeniería de Sistemas o Doctorado en Ingeniería de Sistemas y Computación o Doctorado en Ingeniería de Software o Doctorado en Sistemas e Informática','requisitos_experiencia'=> 'Acumulado mínimo de experiencia Profesional o docente o investigativa de dos (2) años en el área de desempeño. Si tiene doctorado no es necesario acreditar experiencia.','departamento'=> 'Departamento de Ingeniería de Sistemas e Industrial','necesita_soporte_tesis'=> 0],
            ['id' => 5, 'identificador'=> 'C5', 'dedicacion'=> 'Cátedra 0.3','cargos'=> '2','area_desempeno'=> 'Agua potable y/o Saneamiento Básico','requisitos_posgrado'=> 'Maestría en Ingeniería  o Doctorado en Ingeniería','requisitos_experiencia'=> 'Acumulado mínimo de experiencia Profesional o docente o investigativa de cinco (5) años en el área de desempeño. Si tiene doctorado no es necesario acreditar experiencia.','departamento'=> 'Departamento de Ingeniería Civil y Agrícola','necesita_soporte_tesis'=> 1],
            ['id' => 6, 'identificador'=> 'C6', 'dedicacion'=> 'Cátedra 0.3','cargos'=> '1','area_desempeno'=> 'Recursos hidráulicos o Estructuras hidráulicas','requisitos_posgrado'=> 'Maestría en Ingeniería o Doctorado en Ingeniería','requisitos_experiencia'=> 'Acumulado mínimo de experiencia Profesional o docente o investigativa de cinco (5) años en el área de desempeño. Si tiene doctorado no es necesario acreditar experiencia.','departamento'=> 'Departamento de Ingeniería Civil y Agrícola','necesita_soporte_tesis'=> 0],
            ['id' => 7, 'identificador'=> 'C7', 'dedicacion'=> 'Cátedra 0.3','cargos'=> '1','area_desempeno'=> 'Recursos hidráulicas o Máquinas hidráulicas','requisitos_posgrado'=> 'Maestría en Ingeniería o Doctorado en Ingeniería','requisitos_experiencia'=> 'Acumulado mínimo de experiencia profesional o docente o investigativa de cinco (5) años en el área de desempeño. Si tiene doctorado no es necesario acreditar experiencia','departamento'=> 'Departamento de Ingeniería Civil y Agrícola','necesita_soporte_tesis'=> 0],
            ['id' => 8, 'identificador'=> 'C8', 'dedicacion'=> 'Cátedra 0.4','cargos'=> '1','area_desempeno'=> 'Estructura de Datos o Programación Orientada a Objetos','requisitos_posgrado'=> 'Maestría en Ingeniería de Sistemas o Maestría en Ingeniería de Sistemas y Computación o Doctorado en Ingeniería de Sistemas y Computación o Doctorado en Ingeniería de Sistemas','requisitos_experiencia'=> 'Acumulado mínimo de experiencia profesional o docente o investigativa de dos (2) años en el área de desempeño. Si tiene doctorado no es necesario acreditar experiencia','departamento'=> 'Departamento de Ingeniería de Sistemas e Industria','necesita_soporte_tesis'=> 1],
            ['id' => 9, 'identificador'=> 'C9', 'dedicacion'=> 'Cátedra 0.3','cargos'=> '1','area_desempeno'=> 'Geología o Geotecnia','requisitos_posgrado'=> 'Maestría o doctorado en Ingeniería o Maestría o doctorado en el área de desempeño','requisitos_experiencia'=> 'Acumulado mínimo de experiencia Profesional o docente o investigativa de dos (2) años en el área de desempeño. Si tiene doctorado no es necesario acreditar experiencia.','departamento'=> 'Departamento de Ingeniería Civil y Agrícola','necesita_soporte_tesis'=> 0],
            ['id' => 10, 'identificador'=> 'C10', 'dedicacion'=> 'Cátedra 0.3','cargos'=> '1','area_desempeno'=> 'Topografía o Geomática','requisitos_posgrado'=> 'Maestría o doctorado en Ingeniería o Maestría o doctorado en el área de desempeño','requisitos_experiencia'=> 'Acumulado mínimo de experiencia Profesional o docente o investigativa de dos (2) años en el área de desempeño. Si tiene doctorado no es necesario acreditar experiencia.','departamento'=> 'Departamento de Ingeniería Civil y Agrícola','necesita_soporte_tesis'=> 0],
            ['id' => 11, 'identificador'=> 'C11', 'dedicacion'=> 'Cátedra 0.3','cargos'=> '1','area_desempeno'=> 'Control y Gestión de Calidad','requisitos_posgrado'=> 'Maestría o doctorado en Ingeniería o Maestría o doctorado en el área de desempeño','requisitos_experiencia'=> 'Acumulado mínimo de experiencia Profesional o docente o investigativa de dos (2) años en el área de desempeño. Si tiene doctorado no es necesario acreditar experiencia.','departamento'=> 'Departamento de Ingeniería de Sistemas e Industrial ','necesita_soporte_tesis'=> 0],
            ['id' => 12, 'identificador'=> 'C12', 'dedicacion'=> 'Cátedra 0.3','cargos'=> '1','area_desempeno'=> 'Modelos Computacionales para Ingeniería Industrial','requisitos_posgrado'=> 'Maestría o doctorado en Ingeniería o Maestría o doctorado en el área de desempeño','requisitos_experiencia'=> 'Acumulado mínimo de experiencia Profesional o docente o investigativa de dos (2) años en el área de desempeño. Si tiene doctorado no es necesario acreditar experiencia.','departamento'=> 'Departamento de Ingeniería de Sistemas e Industrial','necesita_soporte_tesis'=> 0],
            ['id' => 13, 'identificador'=> 'C13', 'dedicacion'=> 'Cátedra 0.4','cargos'=> '1','area_desempeno'=> 'Diseño sismo resistente o ingeniería sísmica','requisitos_posgrado'=> 'Maestría o doctorado en Ingeniería o Maestría o doctorado en el área de desempeño','requisitos_experiencia'=> 'Acumulado mínimo de experiencia Profesional o docente o investigativa de dos (2) años en el área de desempeño. Si tiene doctorado no es necesario acreditar experiencia.','departamento'=> 'Departamento de Ingeniería Civil y Agrícola','necesita_soporte_tesis'=> 0],
            ['id' => 14, 'identificador'=> 'C14', 'dedicacion'=> 'Cátedra 0.4','cargos'=> '1','area_desempeno'=> 'Dibujo Técnico o Expresión Gráfica o Geometría Descriptiva o Dibujo de Máquinas','requisitos_posgrado'=> 'Maestría en Ingeniería.','requisitos_experiencia'=> 'Mínimo dos (2) años de experiencia profesional o docente','departamento'=> 'Departamento de Ingeniería Mecánica y Mecatrónica','necesita_soporte_tesis'=> 0],
            ['id' => 15, 'identificador'=> 'TC1', 'dedicacion'=> 'Tiempo Completo','cargos'=> '1','area_desempeno'=> 'Agua potable y/o Saneamiento Básico','requisitos_posgrado'=> 'Doctorado en Ingeniería','requisitos_experiencia'=> 'No aplica','departamento'=> 'Departamento de Ingeniería Civil y Agrícola','necesita_soporte_tesis'=> 0],
            ['id' => 16, 'identificador'=> 'TC2', 'dedicacion'=> 'Tiempo Completo','cargos'=> '1','area_desempeno'=> 'Operaciones unitarias o Termodinámica','requisitos_posgrado'=> 'Doctorado en Ingeniería Química o Doctorado en  Ingeniería de Procesos o Doctorado en Ingeniería -  Ingeniería Química o Doctorado en Ciencias','requisitos_experiencia'=> 'Acumulado mínimo de experiencia docente de un (1) año de tiempo completo en Instituciones de Educación Superior','departamento'=> 'Departamento de Ingeniería Química y Ambiental','necesita_soporte_tesis'=> 0],
            ['id' => 20, 'identificador'=> 'TC5', 'dedicacion'=> 'Tiempo Completo','cargos'=> '1','area_desempeno'=> 'Análisis y diseño de estructuras con materiales no convencionales','requisitos_posgrado'=> 'Doctorado con tesis en el área de desempeño o Maestría con tesis o trabajo final en el área de desempeño','requisitos_experiencia'=> 'Acumulado mínimo de experiencia Profesional o docente o investigativa de dos (2) años en el área de desempeño','departamento'=> 'Departamento de Ingeniería Civil y Agrícola','necesita_soporte_tesis'=> 1],
            ['id' => 17, 'identificador'=> 'E1', 'dedicacion'=> 'Exclusiva','cargos'=> '1','area_desempeno'=> 'Recursos Hidráulicos o Hidráulica fluvial o Modelación matemática en sistemas fluviales','requisitos_posgrado'=> 'Doctorado en Ingeniería','requisitos_experiencia'=> 'No aplica','departamento'=> 'Departamento de Ingeniería Civil y Agrícola','necesita_soporte_tesis'=> 0],
            ['id' => 18, 'identificador'=> 'E2', 'dedicacion'=> 'Exclusiva','cargos'=> '1','area_desempeno'=> 'Acueductos o alcantarillados o saneamiento o salud pública','requisitos_posgrado'=> 'Doctorado en Ingeniería o Doctorado en el área de desempeño.','requisitos_experiencia'=> 'No aplica','departamento'=> 'Departamento de Ingeniería Civil y Agrícola','necesita_soporte_tesis'=> 0],
            ['id' => 19, 'identificador'=> 'E3', 'dedicacion'=> 'Exclusiva','cargos'=> '1','area_desempeno'=> 'Conformación volumétrica de materiales con énfasis en cerámicos o polímeros o compuestos.','requisitos_posgrado'=> 'Doctorado en Ingeniería o Doctorado en el área de desempeño','requisitos_experiencia'=> 'No aplica','departamento'=> 'Departamento de Ingeniería Mecánica y Mecatrónica','necesita_soporte_tesis'=> 0],
        ]);

        Schema::create('aspirantes_perfiles', function (Blueprint $table) {
            $table->unsignedInteger('aspirantes_id'); 
            $table->integer('perfiles_id');
            $table->string('ruta_ensayo', 256)->nullable();

            $table->primary(['aspirantes_id', 'perfiles_id']);

            $table->foreign('aspirantes_id')
                  ->references('id')
                  ->on('aspirantes')
                  ->onDelete('no action')
                  ->onUpdate('no action');

            $table->foreign('perfiles_id')
                  ->references('id')
                  ->on('perfiles')
                  ->onDelete('no action')
                  ->onUpdate('no action');

            $table->index('aspirantes_id', 'fk_aspirantes_perfiles_aspirantes1_idx');
            $table->index('perfiles_id', 'fk_aspirantes_perfiles_perfiles1_idx');
        });

        /*DB::table('aspirantes_perfiles')->insert([
            ['aspirantes_id' => 61, 'perfiles_id' => 5, 'ruta_ensayo' => null],
            ['aspirantes_id' => 61, 'perfiles_id' => 6, 'ruta_ensayo' => null],
            ['aspirantes_id' => 61, 'perfiles_id' => 7, 'ruta_ensayo' => null],
            ['aspirantes_id' => 56, 'perfiles_id' => 4, 'ruta_ensayo' => null],
        ]);*/

        Schema::create('certificados_idiomas', function (Blueprint $table) {
            $table->increments('id');
            $table->string('nombre', 150)->nullable(false);
        });

        DB::table('certificados_idiomas')->insert([
            ['id' => 1, 'nombre' => 'FCE First Certificate in English'],
            ['id' => 2, 'nombre' => 'CAE Certificate in Advanced English'],
            ['id' => 3, 'nombre' => 'CPE Certificate of Proficiency in English'],
            ['id' => 4, 'nombre' => 'IELTS'],
            ['id' => 5, 'nombre' => 'TOEFL Papel PBT'],
            ['id' => 6, 'nombre' => 'TOEFL Internet iBT'],
            ['id' => 7, 'nombre' => 'Michigan English Test (MET)'],
            ['id' => 8, 'nombre' => 'Michigan ECCE'],
            ['id' => 9, 'nombre' => 'Michigan ECPE'],
            ['id' => 10, 'nombre' => 'Michigan English Language Assessment Battery (MELAB)'],
            ['id' => 11, 'nombre' => 'Telc English'],
            ['id' => 12, 'nombre' => 'Colegios colombianos aceptados por la Organización de Bachillerato Internacional'],
            ['id' => 13, 'nombre' => 'Certificado de Consejo Británico'],
            ['id' => 14, 'nombre' => 'Nivel Challenge'],
            ['id' => 15, 'nombre' => 'Pregrado o posgrado o postdoctorado desarrollado en inglés'],
            ['id' => 16, 'nombre' => 'DELF o DELF Pro'],
            ['id' => 17, 'nombre' => 'DELF'],
            ['id' => 18, 'nombre' => 'Examen del Nivel B2 del Marco Común Europeo de Referencia para las Lenguas'],
            ['id' => 19, 'nombre' => 'Telc Français pour la  Profession'],
            ['id' => 20, 'nombre' => 'Colegios colombianos bilingües (cuyo segundo idioma es francés)'],
            ['id' => 21, 'nombre' => 'Pregrado o posgrado o postdoctorado desarrollado en Francés'],
        ]);

        Schema::create('configuraciones', function (Blueprint $table) {
            $table->integer('id')->primary();
            $table->string('llave', 32)->nullable();
            $table->string('valor', 500)->nullable();
        });

        DB::table('configuraciones')->insert([
            ['id' => 1, 'llave' => 'limit_date', 'valor' => '2028-06-13 23:42:00'],
        ]);

        Schema::create('distinciones_academica', function (Blueprint $table) {
            $table->increments('id');
            $table->string('nombre', 100);
            $table->string('institucion', 200);
            $table->date('fecha_entrega');
            $table->unsignedInteger('aspirantes_id');
            $table->string('ruta_adjunto', 256)->nullable();

            $table->foreign('aspirantes_id')
                  ->references('id')->on('aspirantes')
                  ->onDelete('no action')
                  ->onUpdate('no action');

            $table->index('aspirantes_id', 'fk_distinciones_academicas_aspirantes1_idx');

            $table->timestamps();
        });

        Schema::create('estado_civil', function (Blueprint $table) {
            $table->increments('id');
            $table->string('nombre', 20)->nullable();
        });

        DB::table('estado_civil')->insert([
            ['id' => 1, 'nombre' => 'Soltero/a'],
            ['id' => 2, 'nombre' => 'Casado/a'],
            ['id' => 3, 'nombre' => 'Viudo/a'],
            ['id' => 4, 'nombre' => 'Unión libre'],
        ]);

        Schema::create('estudios', function (Blueprint $table) {
            $table->increments('id');
            $table->string('titulo', 100)->comment('');
            $table->string('institucion', 250);
            $table->unsignedInteger('niveles_id');
            $table->date('fecha_inicio');
            $table->date('fecha_finalizacion')->nullable();
            $table->boolean('en_curso');
            $table->float('promedio')->nullable();
            $table->float('minimo_aprobatorio')->nullable();
            $table->float('maximo_escala')->nullable();
            $table->unsignedInteger('aspirantes_id');
            $table->unsignedBigInteger('paises_id');
            $table->string('ruta_adjunto', 256)->nullable();
            $table->string('ruta_entramite_minedu', 256)->nullable();
            $table->string('ruta_res_convalidacion', 256)->nullable();
            $table->string('nombre_tesis', 45)->nullable()->comment('Campo requerido para perfil E3');
            $table->string('ruta_resumen_ejecutivo', 256)->nullable()->comment('Campo requerido para perfil E3');

            $table->foreign('aspirantes_id')->references('id')->on('aspirantes')->onDelete('no action')->onUpdate('no action');
            $table->foreign('paises_id')->references('id')->on('paises')->onDelete('no action')->onUpdate('no action');
            $table->foreign('niveles_id')->references('id')->on('niveles')->onDelete('no action')->onUpdate('no action');

            $table->timestamps();
        });

        /*DB::table('estudios')->insert([
            [
                'titulo' => 'Ing industrial',
                'institucion' => 'unal',
                'niveles_id' => 1,
                'fecha_inicio' => '0000-00-00',
                'fecha_finalizacion' => '2012-02-17',
                'en_curso' => 0,
                'promedio' => null,
                'minimo_aprobatorio' => null,
                'maximo_escala' => null,
                'aspirantes_id' => 61,
                'paises_id' => 57,
                'ruta_adjunto' => 'file/61/estudios/Ing_industri248856_soporte.pdf',
                'ruta_entramite_minedu' => null,
                'ruta_res_convalidacion' => null,
                'nombre_tesis' => null,
                'ruta_resumen_ejecutivo' => null,
            ],
            [
                'titulo' => 'Master in desing',
                'institucion' => 'Standfot',
                'niveles_id' => 1,
                'fecha_inicio' => '0000-00-00',
                'fecha_finalizacion' => '2018-02-02',
                'en_curso' => 0,
                'promedio' => null,
                'minimo_aprobatorio' => null,
                'maximo_escala' => null,
                'aspirantes_id' => 61,
                'paises_id' => 40,
                'ruta_adjunto' => 'file/61/estudios/Master_in_de310220_soporte.pdf',
                'ruta_entramite_minedu' => null,
                'ruta_res_convalidacion' => 'file/61/estudios/Master_in_de310220_convalidacion.pdf',
                'nombre_tesis' => null,
                'ruta_resumen_ejecutivo' => null,
            ],
            [
                'titulo' => 'Doc',
                'institucion' => 'Harvard',
                'niveles_id' => 1,
                'fecha_inicio' => '0000-00-00',
                'fecha_finalizacion' => '2022-02-17',
                'en_curso' => 0,
                'promedio' => null,
                'minimo_aprobatorio' => null,
                'maximo_escala' => null,
                'aspirantes_id' => 61,
                'paises_id' => 1,-
                'ruta_adjunto' => 'file/61/estudios/Doc978230_soporte.pdf',
                'ruta_entramite_minedu' => null,
                'ruta_res_convalidacion' => 'file/61/estudios/Doc978230_convalidacion.pdf',
                'nombre_tesis' => null,
                'ruta_resumen_ejecutivo' => null,
            ],
        ]);*/

        Schema::create('tipos_vinculacion_docente', function (Blueprint $table) {
            $table->increments('id');
            $table->string('nombre', 45);
            $table->timestamps();
        });

        DB::table('tipos_vinculacion_docente')->insert([
            ['id'=> 1, 'nombre'=> 'Tiempo completo'],
            ['id'=> 2, 'nombre'=> 'Medio tiempo'],
            ['id'=> 3, 'nombre'=> 'Cátedra'],
            ['id'=> 4, 'nombre'=> 'Ocasional'],
            ['id'=> 5, 'nombre'=> 'Exclusiva'],
        ]);

        Schema::create('tipos_vinculacion_laboral', function (Blueprint $table) {
            $table->increments('id');
            $table->string('nombre', 45);
            $table->timestamps();
        });

        DB::table('tipos_vinculacion_laboral')->insert([
            ['id'=> 1, 'nombre'=> 'Tiempo completo'],
            ['id'=> 2, 'nombre'=> 'Medio tiempo'],
            ['id'=> 3, 'nombre'=> 'Tiempo parcial'],
            ['id'=> 4, 'nombre'=> 'Contratista/Orden de servicios'],
        ]);

        Schema::create('experiencias_docente', function (Blueprint $table) {
            $table->increments('id');
            $table->string('nombre_institucion', 200);
            $table->unsignedInteger('dedicacion');
            $table->date('fecha_inicio');
            $table->date('fecha_finalizacion')->nullable();
            $table->unsignedSmallInteger('tiempo_meses');
            $table->boolean('en_curso');
            $table->string('area_trabajo', 500);
            $table->text('info_asignaturas')->nullable();
            $table->string('programa_academico', 100)->nullable();
            $table->unsignedInteger('niveles_id')->nullable();
            $table->unsignedInteger('aspirantes_id');
            $table->string('ruta_adjunto', 256)->nullable();

            $table->foreign('aspirantes_id')->references('id')->on('aspirantes')->onUpdate('cascade')->onDelete('restrict');
            $table->foreign('niveles_id')->references('id')->on('niveles')->onUpdate('cascade')->onDelete('restrict');
            $table->foreign('dedicacion')->references('id')->on('tipos_vinculacion_docente')->onUpdate('cascade')->onDelete('restrict');

            $table->timestamps();
        });

        /*DB::table('experiencias_docente')->insert([
            [
                'nombre_institucion' => 'emp1',
                'dedicacion' => 1,
                'fecha_inicio' => '2014-02-17',
                'fecha_finalizacion' => '2018-02-17',
                'tiempo_meses' => 48,
                'en_curso' => false,
                'area_trabajo' => 'emp1',
                'info_asignaturas' => '[{"nombre":"emp1","intensidad":"10"}]',
                'programa_academico' => null,
                'niveles_id' => null,
                'aspirantes_id' => 61,
                'ruta_adjunto' => 'file/61/experiencia_docente/emp1591787.pdf',
                'created_at' => now(),
                'updated_at' => now(),
            ],
            [
                'nombre_institucion' => 'emp2',
                'dedicacion' => 1,
                'fecha_inicio' => '2020-02-17',
                'fecha_finalizacion' => '2022-01-19',
                'tiempo_meses' => 23,
                'en_curso' => false,
                'area_trabajo' => 'emp2',
                'info_asignaturas' => '[{"nombre":"emp2","intensidad":"22"}]',
                'programa_academico' => null,
                'niveles_id' => null,
                'aspirantes_id' => 61,
                'ruta_adjunto' => 'file/61/experiencia_docente/emp2241775.pdf',
                'created_at' => now(),
                'updated_at' => now(),
            ],
            [
                'nombre_institucion' => 'emp3',
                'dedicacion' => 1,
                'fecha_inicio' => '2022-02-17',
                'fecha_finalizacion' => '2022-02-17',
                'tiempo_meses' => 0,
                'en_curso' => true,
                'area_trabajo' => 'emp3',
                'info_asignaturas' => '[{"nombre":"em3","intensidad":"12"}]',
                'programa_academico' => null,
                'niveles_id' => null,
                'aspirantes_id' => 61,
                'ruta_adjunto' => 'file/61/experiencia_docente/emp3329861.pdf',
                'created_at' => now(),
                'updated_at' => now(),
            ],
        ]);*/

        Schema::create('experiencias_laboral', function (Blueprint $table) {
            $table->increments('id');
            $table->string('nombre_cargo', 100);
            $table->string('nombre_institucion', 200);
            $table->string('funcion_principal', 500);
            $table->date('fecha_inicio');
            $table->date('fecha_finalizacion')->nullable();
            $table->integer('tiempo_meses', false, true)->length(3);
            $table->boolean('en_curso');
            $table->unsignedInteger('tipos_vinculacion_laboral_id');
            $table->unsignedInteger('aspirantes_id');
            $table->string('ruta_adjunto', 256)->nullable();

            $table->foreign('tipos_vinculacion_laboral_id')
                ->references('id')->on('tipos_vinculacion_laboral')
                ->onDelete('no action')->onUpdate('no action');

            $table->foreign('aspirantes_id')
                ->references('id')->on('aspirantes')
                ->onDelete('no action')->onUpdate('no action');

            $table->timestamps();
        });

        // Insert initial data
        /*DB::table('experiencias_laboral')->insert([
            [
                'nombre_cargo' => 'emp 1 emp 1 emp1',
                'nombre_institucion' => 'Emp 1',
                'funcion_principal' => 'emp 1',
                'fecha_inicio' => '2012-02-17',
                'fecha_finalizacion' => '2018-02-17',
                'tiempo_meses' => 72,
                'en_curso' => 0,
                'tipos_vinculacion_laboral_id' => 1,
                'aspirantes_id' => 61,
                'ruta_adjunto' => 'file/61/experiencia_laboral/Emp_1575145.pdf',
            ],
            [
                'nombre_cargo' => 'emp 2 emp2',
                'nombre_institucion' => 'emp 2',
                'funcion_principal' => 'emp 2',
                'fecha_inicio' => '2018-02-17',
                'fecha_finalizacion' => '2019-12-17',
                'tiempo_meses' => 22,
                'en_curso' => 0,
                'tipos_vinculacion_laboral_id' => 2,
                'aspirantes_id' => 61,
                'ruta_adjunto' => 'file/61/experiencia_laboral/emp_2460741.pdf',
            ],
            [
                'nombre_cargo' => 'emp3 emp3',
                'nombre_institucion' => 'emp3',
                'funcion_principal' => 'emp3',
                'fecha_inicio' => '2020-02-17',
                'fecha_finalizacion' => '2022-02-17',
                'tiempo_meses' => 24,
                'en_curso' => 1,
                'tipos_vinculacion_laboral_id' => 1,
                'aspirantes_id' => 61,
                'ruta_adjunto' => 'file/61/experiencia_laboral/emp3343928.pdf',
            ],
        ]);*/

        Schema::create('experiencias_investigativa', function (Blueprint $table) {
            $table->increments('id');
            $table->string('nombre_proyecto', 200);
            $table->string('area_proyecto', 100);
            $table->string('institucion', 256);
            $table->string('funcion_principal', 200);
            $table->string('entidad_financiadora', 100)->nullable();
            $table->string('estado_proyecto', 10)->nullable();
            $table->date('fecha_inicio');
            $table->date('fecha_finalizacion')->nullable();
            $table->integer('tiempo_meses');
            $table->boolean('en_curso');
            $table->string('ruta_adjunto', 256)->nullable();
            $table->timestamps();

            $table->unsignedBigInteger('paises_id');
            $table->unsignedInteger('aspirantes_id');

            $table->foreign('paises_id')->references('id')->on('paises')
            ->onDelete('no action')->onUpdate('no action');
            $table->foreign('aspirantes_id')->references('id')->on('aspirantes')
            ->onDelete('no action')->onUpdate('no action');
        });

        Schema::create('idiomas', function (Blueprint $table) {
            $table->increments('id');
            $table->string('nombre', 100)->nullable();
            $table->timestamps();
        });

        DB::table('idiomas')->insert([
            ['id' => 1, 'nombre' => 'Español'],
            ['id' => 2, 'nombre' => 'Inglés'],
            ['id' => 3, 'nombre' => 'Portugués'],
            ['id' => 4, 'nombre' => 'Francés'],
            ['id' => 5, 'nombre' => 'Alemán'],
            ['id' => 6, 'nombre' => 'Italiano'],
            ['id' => 7, 'nombre' => 'Otras lenguas'],
        ]);

        Schema::create('idiomas_certificado', function (Blueprint $table) {
            $table->increments('id');
            $table->boolean('nativo');
            $table->string('nombre_certificado', 150)->nullable();
            $table->unsignedInteger('aspirantes_id');
            $table->unsignedInteger('idiomas_id');
            $table->string('ruta_adjunto', 256)->nullable();
            $table->string('puntaje', 256)->nullable();

            $table->foreign('aspirantes_id')->references('id')->on('aspirantes')->onUpdate('cascade')->onDelete('restrict');
            $table->foreign('idiomas_id')->references('id')->on('idiomas')->onUpdate('cascade')->onDelete('restrict');

            $table->timestamps();
        });

        /*DB::table('idiomas_certificado')->insert([
            [
                'nativo' => 0,
                'nombre_certificado' => 'CPE Certificate of Proficiency in English',
                'aspirantes_id' => 61,
                'idiomas_id' => 3,
                'ruta_adjunto' => 'file/61/idiomas/Portugués818490.pdf',
                'puntaje' => '10',
                //'created_at' => now(),
                //'updated_at' => now(),
            ],
            [
                'nativo' => 1,
                'nombre_certificado' => null,
                'aspirantes_id' => 61,
                'idiomas_id' => 1,
                'ruta_adjunto' => null,
                'puntaje' => null,
                //'created_at' => now(),
                //'updated_at' => now(),
            ],
        ]);*/

        Schema::create('programas_pregrado', function (Blueprint $table) {
            $table->increments('id');
            $table->string('nombre', 100)->nullable();
            $table->timestamps();
        });

        DB::table('programas_pregrado')->insert([
            ['id'=> 1, 'nombre'=> 'Administrador de sistemas informáticos'],
            ['id'=> 6, 'nombre'=> 'Ingeniero Ambiental'],
            ['id'=> 8, 'nombre'=> 'Ingeniero Civil'],
            ['id'=> 13, 'nombre'=> 'Ingeniero de Sistemas'],
            ['id'=> 15, 'nombre'=> 'Ingeniero Eléctrico'],
            ['id'=> 16, 'nombre'=> 'Ingeniero Electromecánico'],
            ['id'=> 17, 'nombre'=> 'Ingeniero Electrónico'],
            ['id'=> 22, 'nombre'=> 'Ingeniero de Sistemas y Computación'],
            ['id'=> 23, 'nombre'=> 'Ingeniero Mecatrónico'],
            ['id'=> 26, 'nombre'=> 'Ingeniero Químico'],
            ['id'=> 27, 'nombre'=> 'Ingeniero Sanitario'],
            ['id'=> 29, 'nombre'=> 'Matemático'],
        ]);

        Schema::create('perfiles_programas_pregrado', function (Blueprint $table) {
            $table->integer('perfiles_id');
            $table->unsignedInteger('programas_pregrado_id');
        
            $table->index('programas_pregrado_id', 'fk_perfiles_has_programas_pregrado_programas_pregrado1_idx');
            $table->index('perfiles_id', 'fk_perfiles_has_programas_pregrado_perfiles1_idx');
        
            $table->foreign('perfiles_id', 'fk_perfiles_has_programas_pregrado_perfiles1')
                ->references('id')->on('perfiles')
                ->onDelete('cascade') 
                ->onUpdate('cascade');
        
            $table->foreign('programas_pregrado_id', 'fk_perfiles_has_programas_pregrado_programas_pregrado1')
                ->references('id')->on('programas_pregrado')
                ->onDelete('cascade')
                ->onUpdate('cascade');
        });

        DB::table('perfiles_programas_pregrado')->insert([
            ['perfiles_id' => 1, 'programas_pregrado_id'=> '15'],
            ['perfiles_id' => 1, 'programas_pregrado_id'=> '17'],
            ['perfiles_id' => 1, 'programas_pregrado_id'=> '23'],
            ['perfiles_id' => 1, 'programas_pregrado_id'=> '16'],
            ['perfiles_id' => 1, 'programas_pregrado_id'=> '13'],
            ['perfiles_id' => 2, 'programas_pregrado_id'=> '29'],
            ['perfiles_id' => 2, 'programas_pregrado_id'=> '13'],
            ['perfiles_id' => 3, 'programas_pregrado_id'=> '13'],
            ['perfiles_id' => 4, 'programas_pregrado_id'=> '1'],
            ['perfiles_id' => 4, 'programas_pregrado_id'=> '13'],
            ['perfiles_id' => 5, 'programas_pregrado_id'=> '8'],
            ['perfiles_id' => 5, 'programas_pregrado_id'=> '27'],
            ['perfiles_id' => 5, 'programas_pregrado_id'=> '6'],
            ['perfiles_id' => 6, 'programas_pregrado_id'=> '8'],
            ['perfiles_id' => 7, 'programas_pregrado_id'=> '8'],
            ['perfiles_id' => 8, 'programas_pregrado_id'=> '13'],
            ['perfiles_id' => 15, 'programas_pregrado_id'=> '8'],
            ['perfiles_id' => 15, 'programas_pregrado_id'=> '27'],
            ['perfiles_id' => 15, 'programas_pregrado_id'=> '6'],
            ['perfiles_id' => 16, 'programas_pregrado_id'=> '26'],
            ['perfiles_id' => 17, 'programas_pregrado_id'=> '8'],
            ['perfiles_id' => 1, 'programas_pregrado_id'=> '22'],
            ['perfiles_id' => 2, 'programas_pregrado_id'=> '22'],
            ['perfiles_id' => 3, 'programas_pregrado_id'=> '22'],
            ['perfiles_id' => 4, 'programas_pregrado_id'=> '22'],
            ['perfiles_id' => 8, 'programas_pregrado_id'=> '22'],
        ]);

        Schema::create('tipos_produccion_intelectual', function (Blueprint $table) {
            $table->increments('id');
            $table->string('nombre', 45)->nullable();
            $table->timestamps();
        });

        DB::table('tipos_produccion_intelectual')->insert([
            ['id'=> 1, 'nombre'=> 'Artículo en revistas indexadas'],
            ['id'=> 2, 'nombre'=> 'Libro'],
            ['id'=> 3, 'nombre'=> 'Capitulo de libro'],
            ['id'=> 4, 'nombre'=> 'Patente'],
        ]);

        Schema::create('produccion_intelectual', function (Blueprint $table) {
            $table->increments('id');
            $table->string('descripcion', 500)->nullable();
            $table->string('nombre', 250)->nullable();
            $table->string('publicacion_titulo', 250)->nullable();
            $table->string('publicacion_autor', 250)->nullable();
            $table->string('paginas', 20)->nullable();
            $table->integer('año')->nullable();
            $table->string('ISSN', 45)->nullable();
            $table->string('nombre_editorial', 250)->nullable();
            $table->string('nombre_libro', 250)->nullable();
            $table->string('numero_patente', 45)->nullable();
            $table->string('entidad_patente', 100)->nullable();
            $table->string('tipo', 45)->nullable();
            $table->string('volumen', 45)->nullable();
            $table->unsignedInteger('idiomas_id')->nullable();
            $table->unsignedBigInteger('paises_id')->nullable();
            $table->string('tipo_patente', 20)->nullable();
            $table->string('ISBN', 45)->nullable();
            $table->unsignedInteger('aspirantes_id');
            $table->unsignedInteger('tipos_produccion_intelectual_id');
            $table->string('evento', 200)->nullable();
            $table->string('ruta_adjunto', 256)->nullable();
            $table->string('clasificacion_revista', 256)->nullable();
            $table->string('doi', 900)->nullable();

            // Indexes
            $table->index('aspirantes_id', 'fk_produccion_intelectual_aspirantes1_idx');
            $table->index('paises_id', 'fk_produccion_intelectual_paises1_idx');
            $table->index('idiomas_id', 'fk_produccion_intelectual_idiomas1_idx');
            $table->index('tipos_produccion_intelectual_id', 'fk_produccion_intelectual_tipos_produccion_intelectual1_idx');

            // Foreign Keys
            $table->foreign('aspirantes_id', 'fk_produccion_intelectual_aspirantes1')
                  ->references('id')->on('aspirantes')
                  ->onDelete('no action')->onUpdate('no action');

            $table->foreign('idiomas_id', 'fk_produccion_intelectual_idiomas1')
                  ->references('id')->on('idiomas')
                  ->onDelete('no action')->onUpdate('no action');

            $table->foreign('paises_id', 'fk_produccion_intelectual_paises1')
                  ->references('id')->on('paises')
                  ->onDelete('no action')->onUpdate('no action');

            $table->foreign('tipos_produccion_intelectual_id', 'fk_produccion_intelectual_tipos_produccion_intelectual1')
                  ->references('id')->on('tipos_produccion_intelectual')
                  ->onDelete('no action')->onUpdate('no action');
        });

        Schema::create('tesis', function (Blueprint $table) {
            $table->increments('id');
            $table->string('titulo', 45)->charset('utf8mb4')->collation('utf8mb4_general_ci')->nullable(false);
            $table->string('fecha', 45)->charset('utf8mb4')->collation('utf8mb4_general_ci')->nullable();
            $table->string('detalles', 400)->charset('utf8mb4')->collation('utf8mb4_general_ci')->nullable();
            $table->unsignedInteger('aspirantes_id');
            $table->string('ruta_adjunto', 45)->charset('utf8mb4')->collation('utf8mb4_general_ci')->nullable(false);
            $table->timestamps();

            $table->foreign('aspirantes_id')->references('id')->on('aspirantes')->onDelete('no action')->onUpdate('no action');
        });

        Schema::table('users', function (Blueprint $table) {
            // Add missing columns
            $table->string('codigo', 11)->default('0')->unique()->after('id');
            $table->boolean('personal_data')->default(false)->after('activated');

            // Modify existing columns for consistency
            //$table->unsignedInteger('id')->change();
            //$table->boolean('isadmin')->default(false)->change();
            //$table->boolean('activated')->default(false)->change();
        });

        DB::table('users')->insert([
            ['id'=> 56, 'codigo'=> 'JD3252', 'name'=> 'Admin Fibog', 'email'=> 'akod55@gmail.com' , 'password'=> '$2y$10$bZibR4XCfPOVhDIAkT2pT.N0l2qzqZFtpihXx.BX9SDWM/tY0Q8.a', 'isadmin'=> 1, 'remember_token'=> 'LP8saa7rfUdMc9YrN1AzeYBZv2f44rR11xnMRnpg8W13bEgOYpeYvugq5epq', 'created_at'=> '2020-02-24 21:31:00', 'updated_at'=> '2024-04-16 01:00:21', 'activated'=> 1, 'personal_data'=> 1],
            ['id'=> 57, 'codigo'=> 'SCP3879', 'name'=> 'Soporte Concurso Profesoral', 'email'=> 'soportecd_fibog@unal.edu.co' , 'password'=> '$2y$10$s0enNYq3Ltxov2Id31ElZOTxhSOtG7QT2dv3ehCjOrwYqW2WPTbB.', 'isadmin'=> 1, 'remember_token'=> 'Wb1KGxtZJL6hn92Ec4kukegcZ4i4IpSr4huGeVa6XrqmsxMUIS9DcPkNyyLH', 'created_at'=> '2020-02-26 01:15:03', 'updated_at'=> '2022-01-18 20:58:07', 'activated'=> 1, 'personal_data'=> 1],
            ['id'=> 58, 'codigo'=> 'AMGC9093', 'name'=> 'Ana Maria Gutierrez Camargo', 'email'=> 'concurso_fibog@unal.edu.co' , 'password'=> '$2y$10$s6R7Zwm1rrAZr6P4Ff0A9.vWtTpspIFbmeF5BDZkJ7w6LVaHaclfK', 'isadmin'=> 1, 'remember_token'=> 'CHUEXAwT4KeNzYLy7UElhK7VCSm7PdFsYG8rLYfCytHoB9oGyF9z9z8fRUHH', 'created_at'=> '2020-03-05 18:31:03', 'updated_at'=> '2021-06-05 01:08:20', 'activated'=> 1, 'personal_data'=> 1],
            //['id'=> 59, 'codigo'=> 'YC3097', 'name'=> 'Yuly Calcetero', 'email'=> 'ycalceteros@unal.edu.co' , 'password'=> '$2y$10$DPLTJPTpbUdNCSk6I4Wezeg2hzMPKY/n/C/zApeH4Mu9J6XwO4vs.', 'isadmin'=> 1, 'remember_token'=> 'AjahJYPIXWElXwN3k4UxWvB4crX0homKRIlIbUn3EzBvq6jG8G7DU2Won6pJ', 'created_at'=> '2020-03-05 18:56:25', 'updated_at'=> '2021-04-12 19:15:17', 'activated'=> 1, 'personal_data'=> 1],
            ['id'=> 59, 'codigo'=> 'YC3097', 'name'=> 'Sergio Camilo Espinosa Botero', 'email'=> 'sespinosab@unal.edu.co' , 'password'=> '$2y$10$bLkpK.PkcnWjTTLzl0qTdusrW4dq18MIg.2bnWpRkGv3o8GRTK7Fu', 'isadmin'=> 1, 'remember_token'=> 'CHUEXAwT4KeNzYLy7UElhK7VCSm7PdFsYG8rLYfCytHoB9oGyF9z9z8fRUHH', 'created_at'=> '2020-03-05 18:31:03', 'updated_at'=> '2021-06-05 01:08:20', 'activated'=> 1, 'personal_data'=> 1],

        ]);

        Schema::create('vinculaciones', function (Blueprint $table) {
            $table->increments('id'); // AUTO_INCREMENT primary key
            $table->unsignedInteger('aspirantes_id')->nullable();
            $table->string('nombre_institucion', 256)->nullable();
            $table->date('fecha_vinculacion')->nullable();
            $table->string('ciudad', 100)->nullable();
            $table->unsignedBigInteger('paises_id');
            $table->string('perfil_laboral', 500)->nullable();
            $table->string('tipo', 100)->nullable();

            $table->timestamps();

            // Foreign key constraints
            $table->foreign('aspirantes_id')->references('id')->on('aspirantes')->onDelete('no action')->onUpdate('no action');
            $table->foreign('paises_id')->references('id')->on('paises')->onDelete('no action')->onUpdate('no action');
        });
    }

    public function down()
    {
        Schema::dropIfExists('aspirantes');
        Schema::dropIfExists('areas_interes');
        Schema::dropIfExists('aspirantes_perfiles');
        Schema::dropIfExists('certificados_idiomas');
        Schema::dropIfExists('configuraciones');
        Schema::dropIfExists('distinciones_academica');
        Schema::dropIfExists('estado_civil');
        Schema::dropIfExists('estados_civil');
        Schema::dropIfExists('estudios');
        Schema::dropIfExists('experiencias_docente');
        Schema::dropIfExists('experiencias_laboral');
        Schema::dropIfExists('idiomas');
        Schema::dropIfExists('idiomas_certificado');
        Schema::dropIfExists('niveles');
        Schema::dropIfExists('paises');
        Schema::dropIfExists('password_resets');
        Schema::dropIfExists('perfiles');
        Schema::dropIfExists('perfiles_programas_pregrado');
        Schema::dropIfExists('produccion_intelectual');
        Schema::dropIfExists('programas');
        Schema::dropIfExists('programas_pregrado');
        Schema::dropIfExists('tesis');
        Schema::dropIfExists('tiponiveles');
        Schema::dropIfExists('tipos_documento');
        Schema::dropIfExists('tipos_produccion_intelectual');
        Schema::dropIfExists('tipos_vinculacion_docente');
        Schema::dropIfExists('tipos_vinculacion_laboral');
        Schema::dropIfExists('user_activations');

        Schema::table('users', function (Blueprint $table) {
            // Drop the newly added columns
            $table->dropColumn(['codigo', 'personal_data']);

            // Revert modified columns to original state
            $table->integer('id')->change();
            $table->integer('isadmin')->default(0)->change();
            $table->boolean('activated')->default(false)->change();
        });
    }
}
