<?php

class Produto_Model_Validacoescapacidadelimitemunicipio extends Agro_Db_Table_Abstract {
	protected $_primary = array('id_grupo_limite_capacidade', 'id_municipio');
	protected $_name = 'validacoes_limites_capacidade_municipios';
	protected $_schema = 'produto';
	
	public function save($id, $muncipios, $transacao=true) {
		if($transacao){
			$this->getDefaultAdapter()->beginTransaction();
		}
		
		try {
			
			$this->clear($id);			
			if ($id && is_array($muncipios)) {
				
				foreach ($muncipios as $muncipio) {
					$Row = $this->createRow();
					
					$Row->id_grupo_limite_capacidade = $id;
	  				$Row->id_municipio = $muncipio;
					
					$Row->save();
				}

                $rowsValidacoes = (new Produto_Model_Validacoescapacidade())->fetchAll("id_parent = {$id}")->toArray();

                foreach ($rowsValidacoes as $row) {
                    $this->clear($row['id']);

                    foreach ($muncipios as $muncipio) {
                        $Row = $this->createRow();
                        $Row->id_grupo_limite_capacidade = $row['id'];
                        $Row->id_municipio = $muncipio;

                        $Row->save();
                    }
                }
			}
			if($transacao){
				$this->getDefaultAdapter()->commit();
			}
			return true;
		} catch (Exception $e) {
			if($transacao){
				$this->getDefaultAdapter()->rollBack();
			}
			return false;
		}
	}
	
	public function clear($id) {
		return $this->getAdapter()->query("delete from produto.validacoes_limites_capacidade_municipios where id_grupo_limite_capacidade = $id");
	}
	
	public function relacionados($id) {
		$Rs = $this->fetchAll("id_grupo_limite_capacidade = $id");
		
		$return = array();
		if ($Rs->count()) {
			foreach ($Rs as $Row) {
				$return[] = $Row['id_municipio'];
			}
		}
		
		return $return;
	}
}