<?php

use Phalcon\Mvc\Model\Migration;

class PengajuanKajianMigration_357 extends Migration
{
    public function up()
    {
        $this->down();

        // CREATE TABLE litbang_kajian_pengajuan
        self::$connection->execute("
            CREATE TABLE IF NOT EXISTS jaga.litbang_kajian_pengajuan
            (
                id serial NOT NULL,
                satgas_id integer NOT NULL,
                sektor_id integer NOT NULL,
                jenis_id integer NOT NULL,
                judul character varying(255),
                
                pt_pertimbangan_pemilihan_topik text,
                pt_daftar_peneliti character varying(255),
                pt_kontak_peneliti character varying(100),
                pt_created_by integer,
                pt_assign_to integer,
                
                rkk_instansi_id integer,
                rkk_studi_pendahuluan text,
                rkk_masalah_hipotesa text,
                rkk_pengumpulan_data_sekunder text,
                rkk_studi_literatur text,
                rkk_lingkup_kajian text,
                rkk_created_by integer,
                rkk_assign_to integer,
                
                krs_deskripsi text,
                krs_checklist json,
                krs_created_by integer,
                krs_assign_to integer,
                krs_tgl_mulai timestamp(6) without time zone,
                krs_tgl_selesai timestamp(6) without time zone,
                krs_tgl_realisasi timestamp(6) without time zone,
                
                kom_notulensi text,
                kom_created_by integer,
                kom_assign_to integer,
                kom_tgl_mulai timestamp(6) without time zone,
                kom_tgl_selesai timestamp(6) without time zone,
                kom_tgl_realisasi timestamp(6) without time zone,
                
                pk_is_pihak_ketiga boolean DEFAULT FALSE,
                pk_pihak_ketiga text,
                pk_created_by integer,
                pk_assign_to integer,
                pk_tgl_mulai timestamp(6) without time zone,
                pk_tgl_selesai timestamp(6) without time zone,
                pk_tgl_realisasi timestamp(6) without time zone,
                
                kl_perumusan_masalah text,
                kl_metode_penelitian text,
                kl_tujuan_penelitian text,
                kl_kerangka_teori text,
                kl_gambaran_umum text,
                kl_teknis_penulisan text,
                kl_created_by integer,
                kl_assign_to integer,
                kl_tgl_mulai timestamp(6) without time zone,
                kl_tgl_selesai timestamp(6) without time zone,
                kl_tgl_realisasi timestamp(6) without time zone,
                
                rd_created_by integer,
                rd_assign_to integer,
                rd_tgl_mulai timestamp(6) without time zone,
                rd_tgl_selesai timestamp(6) without time zone,
                rd_tgl_realisasi timestamp(6) without time zone,
                
                pap_is_diseminasi boolean DEFAULT FALSE,
                pap_diseminasi text,
                pap_created_by integer,
                pap_assign_to integer,
                pap_tgl_mulai timestamp(6) without time zone,
                pap_tgl_selesai timestamp(6) without time zone,
                pap_tgl_realisasi timestamp(6) without time zone,
                pap_tgl_internal_deputi timestamp(6) without time zone,
                pap_tgl_internal_direktur timestamp(6) without time zone,
                pap_tgl_internal_eksternal timestamp(6) without time zone,
                
                status character varying(30),
                tahapan character varying(30),
                approval_note text,
                created_at timestamp(6) without time zone DEFAULT now(),
                updated_at timestamp(6) without time zone DEFAULT now(),
                deleted_at timestamp(6) without time zone,
                PRIMARY KEY (id)
            )
            WITH (OIDS = FALSE);
        ");

        // CREATE TABLE litbang_kajian_pengajuan_attachment
        self::$connection->execute("
            CREATE TABLE IF NOT EXISTS jaga.litbang_kajian_pengajuan_attachment
            (
                id serial NOT NULL,
                attachment_id integer NOT NULL,
                kajian_pengajuan_id integer NOT NULL,
                jenis_dokumen_id integer NOT NULL,
                tahapan character varying(30),
                created_at timestamp(6) DEFAULT now(),
                created_by integer,
                updated_at timestamp(6) DEFAULT now(),
                updated_by integer,
                deleted_at timestamp(6),
                PRIMARY KEY (id),
                CONSTRAINT attachment_id_fk_1
                    FOREIGN KEY(attachment_id) 
                    REFERENCES attachments(id)
                    ON DELETE CASCADE,
                CONSTRAINT kajian_pengajuan_id_fk_1
                    FOREIGN KEY(kajian_pengajuan_id) 
                    REFERENCES litbang_kajian_pengajuan(id)
                    ON DELETE CASCADE,
                CONSTRAINT jenis_dokumen_id_fk_1
                    FOREIGN KEY(jenis_dokumen_id) 
                    REFERENCES litbang_kajian_pengajuan_jenis_dokumen(id)
                    ON DELETE CASCADE
            )
            WITH (OIDS = FALSE);
        ");

        self::$connection->execute("
            TRUNCATE TABLE jaga.litbang_kajian_pengajuan_diskusi RESTART IDENTITY;
            TRUNCATE TABLE jaga.litbang_kajian_repositori RESTART IDENTITY CASCADE;
        ");

        self::$connection->execute("
            ALTER TABLE litbang_kajian_pengajuan_jenis_dokumen ADD COLUMN is_mandatory BOOLEAN DEFAULT FALSE;
        ");
        self::$connection->execute("
            UPDATE litbang_kajian_pengajuan_jenis_dokumen SET keterangan = 'Paparan Eksternal / Surat Penyampaian Hasil Kajian' WHERE id = 12;
            UPDATE litbang_kajian_pengajuan_jenis_dokumen SET is_mandatory = TRUE WHERE id = 11;
            UPDATE litbang_kajian_pengajuan_jenis_dokumen SET is_mandatory = TRUE WHERE id = 12;
        ");
    }

    public function down()
    {
        self::$connection->execute("DROP TABLE IF EXISTS jaga.litbang_kajian_pengajuan_attachment;");
        self::$connection->execute("DROP TABLE IF EXISTS jaga.litbang_kajian_pengajuan;");
        self::$connection->execute("UPDATE litbang_kajian_pengajuan_jenis_dokumen SET keterangan = 'Paparan Eksternal' WHERE id = 12;");
        self::$connection->execute("ALTER TABLE litbang_kajian_pengajuan_jenis_dokumen DROP COLUMN IF EXISTS is_mandatory;");
    }
}
