<?php

class m200107_170802_contratos_modulos_complementares_valor extends CDbMigration
{
	public function up()
	{
		$table = Yii::app()->db->schema->getTable('contratos_itens');
		if(!isset($table->columns['CTI_IDVALOR'])) {
			$this->addColumn('contratos_itens', 'CTI_IDVALOR', 'INT(11) NULL');
			$this->createIndex('CTI_IDVALOR', 'contratos_itens', 'CTI_IDVALOR');
			$this->refreshTableSchema('contratos_itens');
			Yii::app()->db->createCommand('
				UPDATE 
					contratos co
				SET 
					co.COT_IDVALOR = (
						select 
							va.VAL_IDVALOR 
						from
							valores va
						where
							va.VAL_IDMODULO = co.COT_IDPRODUTO AND
							va.VAL_DTCADASTRO <= co.COT_DTCADASTRO
						order by
							va.VAL_IDVALOR DESC
						limit 1
					)
			')->execute();

			Yii::app()->db->createCommand('
				UPDATE 
					contratos co
				SET 
					co.COT_IDVALOR = (
						select 
							va.VAL_IDVALOR 
						from
							valores va
						where
							va.VAL_IDMODULO = co.COT_IDPRODUTO
						order by
							va.VAL_IDVALOR ASC
						limit 1
					)
				WHERE co.COT_IDVALOR IS null
			')->execute();

			Yii::app()->db->createCommand('
				UPDATE 
					contratos_itens ci
				SET 
					ci.CTI_IDVALOR = (
						select 
							va.VAL_IDVALOR 
						from
							valores va
						where
							va.VAL_IDMODULO = ci.CTI_IDPRODUTO AND
							va.VAL_DTCADASTRO <= (
								select co.COT_DTCADASTRO from contratos co where co.COT_IDCONTRATO = ci.CTI_IDCONTRATO limit 1
							)
						order by
							va.VAL_IDVALOR DESC
						limit 1
					)
			')->execute();

			Yii::app()->db->createCommand('
				UPDATE 
					contratos_itens ci
				SET 
					ci.CTI_IDVALOR = (
						select 
							va.VAL_IDVALOR 
						from
							valores va
						where
							va.VAL_IDMODULO = ci.CTI_IDPRODUTO
						order by
							va.VAL_IDVALOR ASC
						limit 1
					)
				WHERE ci.CTI_IDVALOR IS null
			')->execute();
		}
	}

	public function down()
	{
		$table = Yii::app()->db->schema->getTable('contratos_itens');
		if(!isset($table->columns['CTI_IDVALOR'])) {
			$this->dropColumn('contratos_itens', 'CTI_IDVALOR');
			$this->refreshTableSchema('contratos_itens');
		}
	}
}