<?php

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

/**
 * Class Kip2017Migration_106
 */
class Kip2017Migration_106 extends Migration
{
    /**
     * Define the table structure
     *
     * @return void
     */
    public function morph()
    {
        $this->morphTable(
            'kip_2017',
            [
                'columns' => [
                    new Column(
                        'id',
                        [
                            'type' => Column::TYPE_INTEGER,
                            'notNull' => true,
                            'first' => true
                        ]
                    ),
                    new Column(
                        'jenjang',
                        [
                            'type' => Column::TYPE_VARCHAR,
                            'notNull' => true,
                            'size' => 5,
                            'after' => 'id'
                        ]
                    ),
                    new Column(
                        'pro',
                        [
                            'type' => Column::TYPE_CHAR,
                            'size' => 2,
                            'after' => 'peserta_didik_id'
                        ]
                    ),
                    new Column(
                        'Provinsi',
                        [
                            'type' => Column::TYPE_VARCHAR,
                            'size' => 75,
                            'after' => 'pro'
                        ]
                    ),
                    new Column(
                        'kab',
                        [
                            'type' => Column::TYPE_CHAR,
                            'size' => 4,
                            'after' => 'Provinsi'
                        ]
                    ),
                    new Column(
                        'Kabupaten',
                        [
                            'type' => Column::TYPE_VARCHAR,
                            'size' => 75,
                            'after' => 'kab'
                        ]
                    ),
                    new Column(
                        'kec',
                        [
                            'type' => Column::TYPE_CHAR,
                            'size' => 6,
                            'after' => 'Kabupaten'
                        ]
                    ),
                    new Column(
                        'Kecamatan',
                        [
                            'type' => Column::TYPE_VARCHAR,
                            'size' => 50,
                            'after' => 'kec'
                        ]
                    ),
                    new Column(
                        'sekolah_id',
                        [
                            'type' => Column::TYPE_VARCHAR,
                            'notNull' => true,
                            'size' => 36,
                            'after' => 'Kecamatan'
                        ]
                    ),
                    new Column(
                        'npsn',
                        [
                            'type' => Column::TYPE_CHAR,
                            'notNull' => true,
                            'size' => 8,
                            'after' => 'sekolah_id'
                        ]
                    ),
                    new Column(
                        'nomenklatur',
                        [
                            'type' => Column::TYPE_VARCHAR,
                            'size' => 128,
                            'after' => 'npsn'
                        ]
                    ),
                    new Column(
                        'kelas',
                        [
                            'type' => Column::TYPE_INTEGER,
                            'notNull' => true,
                            'after' => 'nomenklatur'
                        ]
                    ),
                    new Column(
                        'rombel',
                        [
                            'type' => Column::TYPE_VARCHAR,
                            'notNull' => true,
                            'size' => 30,
                            'after' => 'kelas'
                        ]
                    ),
                    new Column(
                        'nama_pd',
                        [
                            'type' => Column::TYPE_VARCHAR,
                            'notNull' => true,
                            'size' => 100,
                            'after' => 'rombel'
                        ]
                    ),
                    new Column(
                        'nama_ibu_kandung',
                        [
                            'type' => Column::TYPE_VARCHAR,
                            'notNull' => true,
                            'size' => 100,
                            'after' => 'nama_pd'
                        ]
                    ),
                    new Column(
                        'nama_ayah',
                        [
                            'type' => Column::TYPE_VARCHAR,
                            'size' => 100,
                            'after' => 'nama_ibu_kandung'
                        ]
                    ),
                    new Column(
                        'tanggal_lahir',
                        [
                            'type' => Column::TYPE_DATE,
                            'notNull' => true,
                            'size' => 1,
                            'after' => 'nama_ayah'
                        ]
                    ),
                    new Column(
                        'tempat_lahir',
                        [
                            'type' => Column::TYPE_VARCHAR,
                            'size' => 128,
                            'after' => 'tanggal_lahir'
                        ]
                    ),
                    new Column(
                        'nisn',
                        [
                            'type' => Column::TYPE_CHAR,
                            'size' => 10,
                            'after' => 'tempat_lahir'
                        ]
                    ),
                    new Column(
                        'jenis_kelamin',
                        [
                            'type' => Column::TYPE_CHAR,
                            'notNull' => true,
                            'size' => 1,
                            'after' => 'nisn'
                        ]
                    ),
                    new Column(
                        'nominal',
                        [
                            'type' => Column::TYPE_DECIMAL,
                            'notNull' => true,
                            'size' => 18,
                            'after' => 'jenis_kelamin'
                        ]
                    ),
                    new Column(
                        'tabunganku',
                        [
                            'type' => Column::TYPE_CHAR,
                            'size' => 19,
                            'after' => 'nominal'
                        ]
                    ),
                    new Column(
                        'tahap_id',
                        [
                            'type' => Column::TYPE_INTEGER,
                            'notNull' => true,
                            'after' => 'tabunganku'
                        ]
                    ),
                    new Column(
                        'tahap_keterangan',
                        [
                            'type' => Column::TYPE_VARCHAR,
                            'notNull' => true,
                            'size' => 50,
                            'after' => 'tahap_id'
                        ]
                    ),
                    new Column(
                        'nomor_sk',
                        [
                            'type' => Column::TYPE_VARCHAR,
                            'size' => 50,
                            'after' => 'tahap_keterangan'
                        ]
                    ),
                    new Column(
                        'tanggal_sk',
                        [
                            'type' => Column::TYPE_DATE,
                            'size' => 1,
                            'after' => 'nomor_sk'
                        ]
                    ),
                    new Column(
                        'nama_uker',
                        [
                            'type' => Column::TYPE_VARCHAR,
                            'size' => 50,
                            'after' => 'tanggal_sk'
                        ]
                    ),
                    new Column(
                        'nama_rekening',
                        [
                            'type' => Column::TYPE_VARCHAR,
                            'size' => 60,
                            'after' => 'nama_uker'
                        ]
                    ),
                    new Column(
                        'tanggal_cair',
                        [
                            'type' => Column::TYPE_TIMESTAMP,
                            'size' => 1,
                            'after' => 'nama_rekening'
                        ]
                    ),
                    new Column(
                        'branch_code',
                        [
                            'type' => Column::TYPE_CHAR,
                            'size' => 4,
                            'after' => 'tanggal_cair'
                        ]
                    ),
                    new Column(
                        'sts_sk',
                        [
                            'type' => Column::TYPE_INTEGER,
                            'after' => 'branch_code'
                        ]
                    ),
                    new Column(
                        'pengusul',
                        [
                            'type' => Column::TYPE_VARCHAR,
                            'size' => 50,
                            'after' => 'sts_sk'
                        ]
                    ),
                    new Column(
                        'no_kip',
                        [
                            'type' => Column::TYPE_CHAR,
                            'size' => 6,
                            'after' => 'pengusul'
                        ]
                    ),
                    new Column(
                        'tahun_sk',
                        [
                            'type' => Column::TYPE_DECIMAL,
                            'size' => 4,
                            'after' => 'no_kip'
                        ]
                    ),
                    new Column(
                        'virtual_acc',
                        [
                            'type' => Column::TYPE_CHAR,
                            'notNull' => true,
                            'size' => 20,
                            'after' => 'tahun_sk'
                        ]
                    ),
                    new Column(
                        'no_rekening',
                        [
                            'type' => Column::TYPE_VARCHAR,
                            'size' => 10,
                            'after' => 'virtual_acc'
                        ]
                    ),
                    new Column(
                        'tahun_cetak',
                        [
                            'type' => Column::TYPE_DECIMAL,
                            'size' => 4,
                            'after' => 'no_rekening'
                        ]
                    ),
                    new Column(
                        'kategori',
                        [
                            'type' => Column::TYPE_VARCHAR,
                            'size' => 10,
                            'after' => 'tahun_cetak'
                        ]
                    ),
                    new Column(
                        'bentuk',
                        [
                            'type' => Column::TYPE_VARCHAR,
                            'size' => 10,
                            'after' => 'kategori'
                        ]
                    ),
                    new Column(
                        'no_KKS',
                        [
                            'type' => Column::TYPE_VARCHAR,
                            'size' => 6,
                            'after' => 'bentuk'
                        ]
                    ),
                    new Column(
                        'no_KPS',
                        [
                            'type' => Column::TYPE_VARCHAR,
                            'size' => 80,
                            'after' => 'no_KKS'
                        ]
                    ),
                    new Column(
                        'nama_kartu',
                        [
                            'type' => Column::TYPE_VARCHAR,
                            'size' => 64,
                            'after' => 'no_KPS'
                        ]
                    ),
                    new Column(
                        'id_pembuka_rekening',
                        [
                            'type' => Column::TYPE_VARCHAR,
                            'size' => 255,
                            'after' => 'nama_kartu'
                        ]
                    ),
                    new Column(
                        'nomor_rekening',
                        [
                            'type' => Column::TYPE_VARCHAR,
                            'size' => 255,
                            'after' => 'id_pembuka_rekening'
                        ]
                    ),
                    new Column(
                        'publish',
                        [
                            'type' => Column::TYPE_INTEGER,
                            'after' => 'nomor_rekening'
                        ]
                    ),
                    new Column(
                        'last_update',
                        [
                            'type' => Column::TYPE_TIMESTAMP,
                            'size' => 1,
                            'after' => 'publish'
                        ]
                    )
                ],
                'indexes' => [
                    new Index('idx_bos_2017_kab_jenjang', ['kab', 'jenjang'], null),
                    new Index('idx_bos_2017_npsn', ['npsn'], null),
                    new Index('idx_bos_2017_npsn_jenjang_kab', ['jenjang', 'kab', 'npsn'], null),
                    new Index('idx_bos_2017_provinsi', ['Provinsi', 'pro'], null),
                    new Index('idx_bos_2017_provinsi_only', ['pro'], null),
                    new Index('idx_kip_2017_nisn', ['nisn'], null),
                    new Index('kip_2017_pkey', ['id'], 'PRIMARY KEY')
                ],
            ]
        );
    }

    /**
     * Run the migrations
     *
     * @return void
     */
    public function up()
    { }

    /**
     * Reverse the migrations
     *
     * @return void
     */
    public function down()
    { }

    /**
     * This method is called after the table was created
     *
     * @return void
     */
    public function afterCreateTable()
    {
        self::$connection->execute('ALTER TABLE jaga.kip_2017 ADD COLUMN peserta_didik_id uuid NOT NULL DEFAULT jaga.uuid_generate_v4()');
        $this->batchInsert(
            'kip_2017',
            [
                'id',
                'jenjang',
                'peserta_didik_id',
                'pro',
                'Provinsi',
                'kab',
                'Kabupaten',
                'kec',
                'Kecamatan',
                'sekolah_id',
                'npsn',
                'nomenklatur',
                'kelas',
                'rombel',
                'nama_pd',
                'nama_ibu_kandung',
                'nama_ayah',
                'tanggal_lahir',
                'tempat_lahir',
                'nisn',
                'jenis_kelamin',
                'nominal',
                'tabunganku',
                'tahap_id',
                'tahap_keterangan',
                'nomor_sk',
                'tanggal_sk',
                'nama_uker',
                'nama_rekening',
                'tanggal_cair',
                'branch_code',
                'sts_sk',
                'pengusul',
                'no_kip',
                'tahun_sk',
                'virtual_acc',
                'no_rekening',
                'tahun_cetak',
                'kategori',
                'bentuk',
                'no_KKS',
                'no_KPS',
                'nama_kartu',
                'id_pembuka_rekening',
                'nomor_rekening',
                'publish',
                'last_update'
            ]
        );
    }
}
