<?php

class Sistema_Model_CorretoresComercial extends Agro_Db_Table_Abstract
{
    protected $_name = 'corretores_comercial';
    protected $_schema = 'sistema';
    protected $_primary = ['id_corretor', 'id_comercial'];

    public function delete($idCorretor, $idComercial = null)
    {
        $select = "DELETE FROM {$this->_schema}.{$this->_name} WHERE id_corretor = {$idCorretor}";

        if (!empty($idComercial)) {
            $select .= " AND id_comercial = {$idComercial}";
        }

        $this->_db->query($select);
    }

    public function getData($where = false)
    {
        $select = $this->select()->setIntegrityCheck(false);
        $select->from(['cc' => "{$this->_schema}.{$this->_name}"], ['id_corretor', 'id_comercial']);
        $select->join(['u' => 'sistema.usuarios'], 'u.id = cc.id_comercial', false);
        $select->join(['f' => 'sistema.funcionarios'], 'f.id_usuario = u.id', 'ds_nome_funcionario');

        if (is_array($where)) {
            foreach ($where as $clause) {
                $field = $clause['field'];
                $operator = $clause['operator'];
                $value = $clause['value'];

                $select->where("$field $operator ?", $value);
            }
        } elseif ($where != '') {
            $select->where($where);
        }

        return $select;
    }

    public function save(array $data)
    {
        $row = $this->find($data['corretor'], $data['id_comercial'])->current();
        $row = !empty($row) ? $row : $this->createRow();

        $row->id_corretor = $data['corretor'];
        $row->id_comercial = $data['id_comercial'];

        return $row->save();
    }
}
