<?php

class Sistema_Model_TipoArquivoProcesso extends Agro_Db_Table_Abstract {
    const BALANCO_EMPRESA = 10;
    const CADESP = 21;
    const CERTIDAO_CASAMENTO = 12;
    const CNH = 17;
    const CNPJ = 8;
    const COMPROVANTE_ENDERECO = 3;
    const COMPROVANTE_TED_DOC = 20;
    const CONTA_DE_TELEFONE_FIXO = 13;
    const CONTA_TELEFONE_FIXO = 5;
    const CONTRATO_SOCIAL = 7;
    const CPF = 2;
    const DADOS_BANCARIOS = 11;
    const DECLARACOES = 15;
    const ELEICAO_DIRETORIA = 9;
    const EMAIL = 4;
    const ESTATUTO_SOCIAL = 6;
    const LIQUIDACAO = 18;
    const OUTROS = 14;
    const RETIFICACAO_ENDERECO = 19;
    const RG = 1;
    const ID_LIQUIDACAO = 18;

    const DE_PARA_PENDENCIAS = [
        self::RG => 'PEND_DOC_INSERIR_RG',
        self::CPF => 'PEND_DOC_INSERIR_CPF',
        self::CNH => 'PEND_DOC_INSERIR_CNH',
        self::CADESP => 'PEND_DOC_INSERIR_CADESP',
        self::CNPJ => 'PEND_DOC_CARTAO_CNPJ',
        self::COMPROVANTE_ENDERECO => 'PEND_DOC_COMP_END',
        self::DADOS_BANCARIOS => 'PEND_DOC_DADOS_BANCARIOS',
        self::CONTRATO_SOCIAL => 'PEND_DOC_CONTRATO_SOCIAL',
        self::ELEICAO_DIRETORIA => 'PEND_DOC_ATA_ELEICAO',
        self::ESTATUTO_SOCIAL => 'PEND_DOC_ESTATUTO_SOCIAL',
    ];

	protected $_schema = 'sistema';
	protected $_name = 'tipo_arquivo_processo';
	protected $_primary = 'id';
	public $_order = 'ds_tipo_arquivo';
	
	public function save(array $data) {
		$Row = ($data[id] ? $this->find($data[id])->current() : $this->createRow());
		
		$Row->ds_chave_tipo_arquivo = $data[ds_chave_tipo_arquivo];
		$Row->ds_tipo_arquivo = $data[ds_tipo_arquivo];
		
		return $Row->save();
	}
	
	public function getIdArquivo($nome) {
		$Row = $this->fetchRow("ds_chave_tipo_arquivo = '$nome'");
		
		return $Row->id;
	}

    public function getCombo($first = true, $field = null) {
		$rs = $this->fetchAll(
			'fl_ativo = true AND id <>'. (new Sistema_Model_TipoArquivoProcesso)->getIdArquivo('DIFERENCA_INDENIZACAO'),
			$this->_order
		)->toArray();

		$options = array();
		if (is_array($rs)) {
			if ($first) {
				$options[''] = '';
			}

			$field = $field ? $field : $this->_order;
			foreach ($rs as $row) {
				$options[$row['id']] = $row[$field];
			}

			return $options;
		} else {
			return false;
		}
	}

    public function getComboTiposArquivosBeneficiario()
    {
        $tiposForaListagem = [
          self::BALANCO_EMPRESA,
          self::CERTIDAO_CASAMENTO,
          self::COMPROVANTE_TED_DOC,
          self::CONTA_DE_TELEFONE_FIXO,
          self::CONTA_TELEFONE_FIXO,
          self::EMAIL,
          self::LIQUIDACAO
        ];

        $options = ['' => ''];
        $rows = $this->fetchAll(["id not in (" . implode(', ', $tiposForaListagem) . ")"], 'ds_tipo_arquivo');

        foreach ($rows as $row) {
            $options[$row['id']] = $row['ds_tipo_arquivo'];
        }

        return $options;
    }
}