<?php

class Log_Model_BloqueioPropostaStatus extends Agro_Db_Table_Abstract 
{
	protected $_primary = 'id';
	protected $_name = 'bloqueio_proposta_status';
	protected $_schema = 'log';

  public function insertAtomico(array $values)
  {
    try {
      $values = str_replace([']','['],['}','{'],json_encode($values));
      $this->getAdapter()->query(
        "INSERT INTO $this->_schema.$this->_name (id_proposta) SELECT val FROM unnest('$values'::int[]) AS val"
      );
    } catch (Exception $e) {
      return APPLICATION_ENV != 'production' ? $e->getMessage() : 'Ocorreu um erro carregar lista de propostas para bloqueio.';      
    }
  }

  public function deleteAtomico(array $values)
  {
    try {
      $this->getAdapter()->query(
        "DELETE FROM $this->_schema.$this->_name WHERE id_proposta IN (".implode(',', $values).")"
      );
    } catch (Exception $e) {
      Agro_Util::zf_debug($e->getMessage());
      return APPLICATION_ENV != 'production' ? $e->getMessage() : 'Ocorreu um erro ao limpar lista de propostas para bloqueio.';      
    }
  }

  public function get(int $idProposta)
  {
    try {
      return $this->fetchRow("id_proposta =  {$idProposta}");
    } catch (Exception $e) {
      return APPLICATION_ENV != 'production' ? $e->getMessage() : 'Ocorreu um erro ao recuperar bloqueio de proposta.';
    }
  }
}