<?php

namespace App\Database\Migrations;

use CodeIgniter\Database\Migration;

class AddRevisionFieldsV2 extends Migration
{
    public function up()
    {
        // Cek apakah field sudah ada di tabel_detail_permintaan
        try {
            // Tambah kolom untuk custom measurement
            $this->forge->addColumn('tabel_detail_permintaan', [
                'lingkar_dada' => ['type' => 'INT', 'null' => true, 'comment' => 'dalam cm', 'after' => 'ukuran_gamis'],
                'lingkar_pinggang' => ['type' => 'INT', 'null' => true, 'comment' => 'dalam cm'],
                'lingkar_panggul' => ['type' => 'INT', 'null' => true, 'comment' => 'dalam cm'],
                'lebar_bahu' => ['type' => 'INT', 'null' => true, 'comment' => 'dalam cm'],
                'panjang_lengan' => ['type' => 'INT', 'null' => true, 'comment' => 'dalam cm'],
                'panjang_gamis' => ['type' => 'INT', 'null' => true, 'comment' => 'dalam cm'],
                'catatan_detail' => ['type' => 'TEXT', 'null' => true],
                'gambar_referensi' => ['type' => 'VARCHAR', 'constraint' => 255, 'null' => true],
                'bawa_kain_sendiri' => ['type' => 'ENUM', 'constraint' => ['ya', 'tidak'], 'default' => 'tidak']
            ]);
        } catch (\Exception $e) {
            // Kolom sudah ada, skip
        }

        // Cek untuk tabel_permintaan_custom
        try {
            $this->forge->addColumn('tabel_permintaan_custom', [
                'catatan_pelanggan' => ['type' => 'TEXT', 'null' => true, 'after' => 'metode_pembayaran'],
                'catatan_toko' => ['type' => 'TEXT', 'null' => true],
                'estimasi_selesai' => ['type' => 'DATE', 'null' => true],
                'status_admin_konfirmasi' => ['type' => 'INT', 'constraint' => 1, 'default' => 0, 'comment' => '0=pending, 1=approved, 2=rejected'],
                'status_kasir_konfirmasi' => ['type' => 'INT', 'constraint' => 1, 'default' => 0],
                'tgl_admin_konfirmasi' => ['type' => 'DATETIME', 'null' => true],
                'tgl_kasir_konfirmasi' => ['type' => 'DATETIME', 'null' => true],
                'status_pesanan' => ['type' => 'ENUM', 'constraint' => ['menunggu', 'siap_diambil', 'dikirim', 'selesai'], 'default' => 'menunggu', 'null' => true]
            ]);
        } catch (\Exception $e) {
            // Kolom sudah ada, skip
        }

        // Cek untuk tabel_history_revisi_order
        try {
            $this->forge->addColumn('tabel_history_revisi_order', [
                'tipe_revisi' => ['type' => 'ENUM', 'constraint' => ['ukuran', 'warna', 'material', 'desain', 'lainnya'], 'default' => 'lainnya', 'after' => 'keterangan_permintaan_revisi'],
                'biaya_revisi' => ['type' => 'DOUBLE', 'default' => 0],
                'tgl_diterima_pegawai' => ['type' => 'DATETIME', 'null' => true]
            ]);
        } catch (\Exception $e) {
            // Kolom sudah ada, skip
        }

        // Cek untuk tabel_laporan
        try {
            $this->forge->addColumn('tabel_laporan', [
                'periode_awal' => ['type' => 'DATE', 'null' => true, 'after' => 'periode'],
                'periode_akhir' => ['type' => 'DATE', 'null' => true],
                'tipe_laporan' => ['type' => 'ENUM', 'constraint' => ['penjualan', 'pendapatan', 'pelanggan', 'revisi', 'pembayaran'], 'default' => 'penjualan'],
                'status_laporan' => ['type' => 'ENUM', 'constraint' => ['draft', 'finalized'], 'default' => 'draft']
            ]);
        } catch (\Exception $e) {
            // Kolom sudah ada, skip
        }
    }

    public function down()
    {
        // Rollback tidak perlu karena menggunakan try-catch
    }
}
