<?php

namespace App\Database\Migrations;

use CodeIgniter\Database\Migration;

class UpdateEnviosAlbaranes extends Migration
{
    public function up()
    {
        // 1. Quitar columnas de envios_lineas
       $this->forge->dropColumn('envios_lineas', ['cajas', 'unidades_cajas']);

        // 2. Añadir columna 'cajas' en envios
        $this->forge->addColumn('envios', [
            'cajas' => [
                'type'       => 'INT',
                'constraint' => 11,
                'default'    => 0,
                'after'      => 'comentarios'
            ]
        ]);

        // 2. Quitar columna multienvio de envios
        $this->forge->dropColumn('envios', 'multienvio');

        // 3. Añadir columna 'cajas' en albaranes
        $this->forge->addColumn('albaranes', [
            'cajas' => [
                'type'       => 'INT',
                'constraint' => 11,
                'default'    => 0,
                'after'      => 'envio_id'
            ]
        ]);

        // 4. Añadir columna 'pedido_linea_id' a albaranes_lineas
        $this->forge->addColumn('albaranes_lineas', [
            'pedido_linea_id' => [
                'type'       => 'INT',
                'constraint' => 11,
                'unsigned'   => true,
                'null'       => true,
                'after'      => 'albaran_id'
            ]
        ]);

        // 5. Foreign key a pedidos_lineas
        $this->db->query("
            ALTER TABLE albaranes_lineas 
            ADD CONSTRAINT fk_albaranes_lineas_pedido_linea 
            FOREIGN KEY (pedido_linea_id) REFERENCES pedidos_linea(id)
            ON DELETE SET NULL ON UPDATE CASCADE
        ");
    }

    public function down()
    {
        // Revertir cajas en envios_lineas
        $this->forge->addColumn('envios_lineas', [
            'cajas' => [
                'type'       => 'INT',
                'constraint' => 11,
                'null'       => true,
            ],
            'unidades_cajas' => [
                'type'       => 'INT',
                'constraint' => 11,
                'null'       => true,
            ]
        ]);

        $this->forge->addColumn('envios', [
            'multienvio' => [
                'type'       => 'TINYINT',
                'constraint' => 3,
                'unsigned'   => true,
                'default'    => 0
            ]
        ]);

        // Quitar columnas añadidas
        $this->forge->dropColumn('envios', 'cajas');
        $this->forge->dropColumn('albaranes', 'cajas');

        // Quitar foreign y columna pedido_linea_id
        $this->db->query("ALTER TABLE albaranes_lineas DROP FOREIGN KEY fk_albaranes_lineas_pedido_linea");
        $this->forge->dropColumn('albaranes_lineas', 'pedido_linea_id');
    }
}
