<?php 

use Phalcon\Db\Column;
use Phalcon\Db\Index;
use Phalcon\Db\Reference;
use Phalcon\Mvc\Model\Migration;

/**
 * Class LatestVerificationMigration_383
 */
class LatestVerificationMigration_383 extends Migration
{
    /**
     * Run the migrations
     *
     * @return void
     */
    public function up()
    {
        $createLastVerificationFunction = <<<QUERY
        CREATE OR REPLACE FUNCTION latest_verification(
            nilai_tw8 numeric,
            nilai_tw7 numeric,
            nilai_tw6 numeric,
            nilai_tw5 numeric,
            nilai_tw4 numeric,
            nilai_tw3 numeric,
            nilai_tw2 numeric,
            nilai_tw1 numeric)
            RETURNS numeric AS $$
            BEGIN
                IF NOT nilai_tw8 IS NULL THEN
                    RETURN nilai_tw8;
                END IF;
                IF NOT nilai_tw7 IS NULL THEN
                    RETURN nilai_tw7;
                END IF;
                IF NOT nilai_tw6 IS NULL THEN
                    RETURN nilai_tw6;
                END IF;
                IF NOT nilai_tw5 IS NULL THEN
                    RETURN nilai_tw5;
                END IF;
                IF NOT nilai_tw4 IS NULL THEN
                    RETURN nilai_tw4;
                END IF;
                IF NOT nilai_tw3 IS NULL THEN
                    RETURN nilai_tw3;
                END IF;
                IF NOT nilai_tw2 IS NULL THEN
                    RETURN nilai_tw2;
                END IF;
                IF NOT nilai_tw1 IS NULL THEN
                    RETURN nilai_tw1;
                END IF;
                RETURN NULL;
            END;
        $$ LANGUAGE plpgsql;

QUERY;
    
        self::$connection->execute($createLastVerificationFunction);
    }

    /**
     * Reverse the migrations
     *
     * @return void
     */
    public function down()
    {
        $createLastVerificationFunction = <<<QUERY
        CREATE OR REPLACE FUNCTION latest_verification(
            nilai_tw8 numeric,
            nilai_tw7 numeric,
            nilai_tw6 numeric,
            nilai_tw5 numeric,
            nilai_tw4 numeric,
            nilai_tw3 numeric,
            nilai_tw2 numeric,
            nilai_tw1 numeric)
            RETURNS numeric AS $$
            BEGIN
                IF nilai_tw8 <> 0 THEN
                    RETURN nilai_tw8;
                END IF;
                IF nilai_tw7 <> 0 THEN
                    RETURN nilai_tw7;
                END IF;
                IF nilai_tw6 <> 0 THEN
                    RETURN nilai_tw6;
                END IF;
                IF nilai_tw5 <> 0 THEN
                    RETURN nilai_tw5;
                END IF;
                IF nilai_tw4 <> 0 THEN
                    RETURN nilai_tw4;
                END IF;
                IF nilai_tw3 <> 0 THEN
                    RETURN nilai_tw3;
                END IF;
                IF nilai_tw2 <> 0 THEN
                    RETURN nilai_tw2;
                END IF;
                IF nilai_tw1 <> 0 THEN
                    RETURN nilai_tw1;
                END IF;
                RETURN 0;
            END;
        $$ LANGUAGE plpgsql;

QUERY;
    
        self::$connection->execute($createLastVerificationFunction);
    }
}
