<?php

class Sistema_Model_Cooperativas extends Agro_Db_Table_Abstract
{
    protected $_schema = 'sistema';
    protected $_name = 'cooperativas';
    protected $_primary = 'id';

    public function save(array $dados)
    {
        $this->getDefaultAdapter()->beginTransaction();

        try {
            $id = isset($dados['id_cooperativa']) ? $dados['id_cooperativa'] : '';
            $id = isset($dados['id']) ? $dados['id'] : $id;

            $row = $this->getRow($id);
            $row->cnpj = $dados['cnpj'];
            $row->ds_nome_cooperativa = $dados['ds_nome_cooperativa'];
            $row->id_estado = $dados['id_estado'];
            $row->id_municipio = $dados['id_municipio'];
            $row->save();
            $this->getDefaultAdapter()->commit();

            return $row->id;
        } catch (Exception $e) {
            $this->setMessage('Erro ao salvar cooperativa/empresa.');
            $this->getDefaultAdapter()->rollBack();

            return false;
        }
    }

    public function getCooperativaByCnpj(string $cnpj)
    {
        $select = $this->select()->setIntegrityCheck(false)
          ->from(array('c' => 'sistema.cooperativas'),
            array('id as id_cooperativa', 'cnpj', 'ds_nome_cooperativa', 'id_estado', 'id_municipio'))
          ->join(array('e' => 'sistema.estados'), 'c.id_estado = e.id', 'ds_sigla')
          ->join(array('m' => 'sistema.municipios'), 'e.id = m.id_estado and c.id_municipio = m.id',
            'ds_nome_municipio')
          ->where('cnpj = ?', $cnpj);

        return $this->fetchAll($select);
    }

    public function hasCooperativaByCnpj(string $cnpj)
    {
        $row = $this->fetchRow("cnpj = '$cnpj'");

        if ($row) {
            return $row;
        } else {
            return false;
        }
    }
}