<?php
declare(strict_types=1);

use Phinx\Migration\AbstractMigration;

final class Task2308041842 extends AbstractMigration
{
    public function up(): void
    {
        $this->execute("CREATE TABLE manutencao.taxas_agrupamento_2308041842(
                            id_taxa_agrupamento INTEGER
                        )
                      ");

        $table = $this->table('manutencao.taxas_agrupamento_2308041842');
        $rows = [
                   ['id_taxa_agrupamento' => 366640],
                   ['id_taxa_agrupamento' => 366641],
                   ['id_taxa_agrupamento' => 366642],
                   ['id_taxa_agrupamento' => 366643],
                   ['id_taxa_agrupamento' => 366644],
                   ['id_taxa_agrupamento' => 366645],
                   ['id_taxa_agrupamento' => 366646],
                   ['id_taxa_agrupamento' => 366647],
                   ['id_taxa_agrupamento' => 366648],
                   ['id_taxa_agrupamento' => 366649],
                   ['id_taxa_agrupamento' => 366650],
                   ['id_taxa_agrupamento' => 366651],
                   ['id_taxa_agrupamento' => 366652],
                   ['id_taxa_agrupamento' => 366653]
        ];
        $table->insert($rows)
              ->save();

        $this->execute("CREATE TABLE manutencao.proponentes_2308041842(
                            id_proponente   INTEGER
                        )
                      ");

        $table = $this->table('manutencao.proponentes_2308041842');
        $rows = [
                   ['id_proponente' =>  30084],
                   ['id_proponente' =>  51167],
                   ['id_proponente' =>  91848],
                   ['id_proponente' =>  34667],
                   ['id_proponente' =>  30879],
                   ['id_proponente' =>  13612],
                   ['id_proponente' =>  19083],
                   ['id_proponente' =>  83419],
                   ['id_proponente' =>  82895],
                   ['id_proponente' =>  92728],
                   ['id_proponente' =>  48976],
                   ['id_proponente' =>  92598],
                   ['id_proponente' =>  34320],
                   ['id_proponente' =>  82083],
                   ['id_proponente' =>  92807],
                   ['id_proponente' =>  73648],
                   ['id_proponente' =>  58899],
                   ['id_proponente' =>  11977],
                   ['id_proponente' =>  34680],
                   ['id_proponente' =>  92372],
                   ['id_proponente' =>  34338],
                   ['id_proponente' =>  96493],
                   ['id_proponente' =>  84654],
                   ['id_proponente' =>  93264],
                   ['id_proponente' =>  94104],
                   ['id_proponente' =>  45594],
                   ['id_proponente' =>  63136],
                   ['id_proponente' => 101941],
                   ['id_proponente' => 101939],
                   ['id_proponente' =>  80813],
                   ['id_proponente' =>  83245],
                   ['id_proponente' => 100756],
                   ['id_proponente' =>  29542],
                   ['id_proponente' => 103767],
                   ['id_proponente' => 100754],
                   ['id_proponente' =>  46227],
                   ['id_proponente' =>  36391],
                   ['id_proponente' =>  78406],
                   ['id_proponente' =>  45381],
                   ['id_proponente' =>  39606],
                   ['id_proponente' => 103048],
                   ['id_proponente' =>  91543],
                   ['id_proponente' =>  82600],
                   ['id_proponente' =>  82321],
                   ['id_proponente' =>  77648],
                   ['id_proponente' =>  96353],
                   ['id_proponente' =>   8228],
                   ['id_proponente' =>  74893],
                   ['id_proponente' =>  60566],
                   ['id_proponente' =>  96362],
                   ['id_proponente' =>  37061],
                   ['id_proponente' =>  41968],
                   ['id_proponente' =>  45339],
                   ['id_proponente' =>  41946],
                   ['id_proponente' =>  40576],
                   ['id_proponente' =>  56861],
                   ['id_proponente' =>  83113],
                   ['id_proponente' =>  79434],
                   ['id_proponente' =>  54605],
                   ['id_proponente' =>  55208],
                   ['id_proponente' =>   9807],
                   ['id_proponente' =>  40421],
                   ['id_proponente' =>  85649],
                   ['id_proponente' => 103074],
                   ['id_proponente' =>  94065],
                   ['id_proponente' =>   9342],
                   ['id_proponente' =>  36515],
                   ['id_proponente' =>  36524],
                   ['id_proponente' =>  29063],
                   ['id_proponente' =>  95861],
                   ['id_proponente' =>   3277],
                   ['id_proponente' =>   3538],
                   ['id_proponente' =>   2697],
                   ['id_proponente' =>  34925],
                   ['id_proponente' =>  60561],
                   ['id_proponente' =>  93437],
                   ['id_proponente' => 101825],
                   ['id_proponente' =>  59651],
                   ['id_proponente' =>   9865],
                   ['id_proponente' =>  85535],
                   ['id_proponente' =>  45662],
                   ['id_proponente' =>  43939],
                   ['id_proponente' =>  77182],
                   ['id_proponente' =>  83526],
                   ['id_proponente' =>  80428],
                   ['id_proponente' =>  42119],
                   ['id_proponente' =>  43949],
                   ['id_proponente' =>  83181],
                   ['id_proponente' =>  82936],
                   ['id_proponente' =>  50250],
                   ['id_proponente' =>  75014],
                   ['id_proponente' =>  80905],
                   ['id_proponente' =>  30344],
                   ['id_proponente' =>   4180],
                   ['id_proponente' =>  93888],
                   ['id_proponente' =>  81644],
                   ['id_proponente' =>  34047],
                   ['id_proponente' => 101908],
                   ['id_proponente' =>  78616],
                   ['id_proponente' =>  54413],
                   ['id_proponente' =>  76005],
                   ['id_proponente' =>  42098],
                   ['id_proponente' =>  80975],
                   ['id_proponente' =>  73853],
                   ['id_proponente' =>  23130],
                   ['id_proponente' =>  26152],
                   ['id_proponente' =>  63003],
                   ['id_proponente' =>  82819],
                   ['id_proponente' =>  37601],
                   ['id_proponente' =>  42342],
                   ['id_proponente' =>  34394],
                   ['id_proponente' =>  59734],
                   ['id_proponente' =>  43710],
                   ['id_proponente' =>  72793],
                   ['id_proponente' =>  94307],
                   ['id_proponente' =>  49315],
                   ['id_proponente' =>  43932],
                   ['id_proponente' =>  84940],
                   ['id_proponente' =>  55400],
                   ['id_proponente' =>  83111],
                   ['id_proponente' =>   8621],
                   ['id_proponente' =>  31867],
                   ['id_proponente' =>  78579],
                   ['id_proponente' =>  59841],
                   ['id_proponente' =>  83882],
                   ['id_proponente' => 101910],
                   ['id_proponente' =>  81715],
                   ['id_proponente' =>  43931],
                   ['id_proponente' =>  17271],
                   ['id_proponente' =>  97733],
                   ['id_proponente' =>  75952],
                   ['id_proponente' =>  78149],
                   ['id_proponente' =>  97582],
                   ['id_proponente' =>  79299],
                   ['id_proponente' =>  50354],
                   ['id_proponente' =>  73327],
                   ['id_proponente' =>   6079],
                   ['id_proponente' =>  83180],
                   ['id_proponente' =>  49436],
                   ['id_proponente' =>  77102],
                   ['id_proponente' =>  18779],
                   ['id_proponente' =>  97560],
                   ['id_proponente' =>  42153],
                   ['id_proponente' =>   8704],
                   ['id_proponente' =>  36494],
                   ['id_proponente' =>  65487],
                   ['id_proponente' =>  82822],
                   ['id_proponente' =>  74434],
                   ['id_proponente' =>  81756],
                   ['id_proponente' =>  42230],
                   ['id_proponente' =>  88624],
                   ['id_proponente' => 102273],
                   ['id_proponente' =>  49387],
                   ['id_proponente' =>  76122],
                   ['id_proponente' =>  65347],
                   ['id_proponente' =>  86325],
                   ['id_proponente' =>  11548],
                   ['id_proponente' =>  76921],
                   ['id_proponente' =>  39211],
                   ['id_proponente' =>  34335],
                   ['id_proponente' =>   8596],
                   ['id_proponente' =>  42103],
                   ['id_proponente' =>  12923],
                   ['id_proponente' =>  49388],
                   ['id_proponente' =>  64935],
                   ['id_proponente' =>  43303],
                   ['id_proponente' =>  97020],
                   ['id_proponente' =>  97233],
                   ['id_proponente' =>  82818],
                   ['id_proponente' =>  34841],
                   ['id_proponente' =>  80727],
                   ['id_proponente' =>  97948],
                   ['id_proponente' =>  24400],
                   ['id_proponente' => 102232],
                   ['id_proponente' =>   4014],
                   ['id_proponente' =>  83183],
                   ['id_proponente' =>  95619],
                   ['id_proponente' =>  72670],
                   ['id_proponente' =>  85368],
                   ['id_proponente' =>  97238],
                   ['id_proponente' =>  42386],
                   ['id_proponente' =>  75053],
                   ['id_proponente' =>  61649],
                   ['id_proponente' =>  57964],
                   ['id_proponente' =>  59696],
                   ['id_proponente' =>  74034],
                   ['id_proponente' =>  80826],
                   ['id_proponente' =>  84122],
                   ['id_proponente' =>  34614],
                   ['id_proponente' =>  43936],
                   ['id_proponente' =>  83087],
                   ['id_proponente' =>  77083],
                   ['id_proponente' =>  59677],
                   ['id_proponente' =>  11554],
                   ['id_proponente' =>  43938],
                   ['id_proponente' =>  51451],
                   ['id_proponente' =>  83185],
                   ['id_proponente' =>  59682],
                   ['id_proponente' =>  49305],
                   ['id_proponente' =>  55402],
                   ['id_proponente' =>  82527],
                   ['id_proponente' =>  18747],
                   ['id_proponente' =>  19324],
                   ['id_proponente' =>  59802],
                   ['id_proponente' =>  64785],
                   ['id_proponente' =>  30120],
                   ['id_proponente' =>  32445],
                   ['id_proponente' =>  84721],
                   ['id_proponente' =>  37515],
                   ['id_proponente' =>  95298],
                   ['id_proponente' =>  80948],
                   ['id_proponente' =>  80521],
                   ['id_proponente' =>  59681],
                   ['id_proponente' =>  30309],
                   ['id_proponente' =>  92896],
                   ['id_proponente' =>  43942],
                   ['id_proponente' =>  75070],
                   ['id_proponente' =>  65385],
                   ['id_proponente' =>  83200],
                   ['id_proponente' =>  22454],
                   ['id_proponente' =>  21033],
                   ['id_proponente' =>   9617],
                   ['id_proponente' =>  43933],
                   ['id_proponente' =>  75043],
                   ['id_proponente' =>  82288],
                   ['id_proponente' =>  97147],
                   ['id_proponente' =>  52463],
                   ['id_proponente' =>  41115],
                   ['id_proponente' =>  42358],
                   ['id_proponente' =>  83325],
                   ['id_proponente' =>  72623],
                   ['id_proponente' =>  39299],
                   ['id_proponente' =>  44250],
                   ['id_proponente' =>  83112],
                   ['id_proponente' =>  24300],
                   ['id_proponente' =>  83898],
                   ['id_proponente' =>  11549],
                   ['id_proponente' =>  36457],
                   ['id_proponente' =>  75076],
                   ['id_proponente' =>  50867],
                   ['id_proponente' =>  46269],
                   ['id_proponente' =>  63190],
                   ['id_proponente' =>  42669],
                   ['id_proponente' =>  13836],
                   ['id_proponente' =>  95733],
                   ['id_proponente' =>  80663],
                   ['id_proponente' =>  51184],
                   ['id_proponente' =>   8227],
                   ['id_proponente' =>  83832],
                   ['id_proponente' => 101904],
                   ['id_proponente' =>  41268],
                   ['id_proponente' =>  60293],
                   ['id_proponente' =>  84181],
                   ['id_proponente' =>  43940],
                   ['id_proponente' =>  93867],
                   ['id_proponente' =>  42365],
                   ['id_proponente' =>  59673],
                   ['id_proponente' =>  93874],
                   ['id_proponente' =>  82477],
                   ['id_proponente' =>  78968],
                   ['id_proponente' =>  46652],
                   ['id_proponente' =>  80398],
                   ['id_proponente' =>  83974],
                   ['id_proponente' =>  83876],
                   ['id_proponente' =>  82813],
                   ['id_proponente' =>  41469],
                   ['id_proponente' =>  36164],
                   ['id_proponente' =>   5030],
                   ['id_proponente' =>  82193],
                   ['id_proponente' =>  83603],
                   ['id_proponente' =>  84197],
                   ['id_proponente' =>  88080],
                   ['id_proponente' =>  81240],
                   ['id_proponente' =>  96828]
        ];
        $table->insert($rows)
              ->save();        

        $this->execute("
                        CREATE OR REPLACE FUNCTION manutencao.taxas_agrupamento_proponentes_2308041842() RETURNS VOID AS $$
                        DECLARE
                            stSQL1      VARCHAR;
                            crCursor1   REFCURSOR;
                            reRecord1   RECORD;
                            stSQL2      VARCHAR;
                            crCursor2   REFCURSOR;
                            reRecord2   RECORD;
                        BEGIN
                            stSQL1 := 'SELECT * from manutencao.taxas_agrupamento_2308041842;';
                            OPEN crCursor1 FOR EXECUTE stSQL1;
                            LOOP
                                FETCH crCursor1 INTO reRecord1;
                                EXIT WHEN NOT FOUND;

                                stSQL2 := 'SELECT * from manutencao.proponentes_2308041842';
                                OPEN crCursor2 FOR EXECUTE stSQL2;
                                LOOP
                                    FETCH crCursor2 INTO reRecord2;
                                    EXIT WHEN NOT FOUND;

                                    PERFORM 1
                                       FROM comercializacao.taxas_agrupamento_proponentes
                                      WHERE id_taxa_agrupamento = reRecord1.id_taxa_agrupamento
                                        AND id_proponente       = reRecord2.id_proponente
                                          ;

                                    IF NOT FOUND THEN
                                        INSERT
                                          INTO comercializacao.taxas_agrupamento_proponentes
                                             ( id_usuario_criacao
                                             , dt_criacao
                                             , id_taxa_agrupamento
                                             , id_proponente
                                             )
                                        VALUES
                                             ( 2068
                                             , NOW()
                                             , reRecord1.id_taxa_agrupamento
                                             , reRecord2.id_proponente
                                             );
                                    END IF;

                                END LOOP;
                                CLOSE crCursor2;
                            END LOOP;
                            CLOSE crCursor1;

                        END;
                        $$ LANGUAGE 'plpgsql'
        ");
        $this->execute("SELECT        manutencao.taxas_agrupamento_proponentes_2308041842()");
        $this->execute("DROP FUNCTION manutencao.taxas_agrupamento_proponentes_2308041842()");
    }

    public function down(): void
    {
        $this->execute("DELETE *
                          FROM comercializacao.taxas_agrupamento_proponentes
                         WHERE id_taxa_agrupamento IN ( 366640
                                                      , 366641
                                                      , 366642
                                                      , 366643
                                                      , 366644
                                                      , 366645
                                                      , 366646
                                                      , 366647
                                                      , 366648
                                                      , 366649
                                                      , 366650
                                                      , 366651
                                                      , 366652
                                                      , 366653
                                                      )
                           AND id_proponente IN (SELECT * from manutencao.proponentes_2308041842)");
    }
}
