<?php

declare(strict_types=1);

class Sinistro2_Model_MotivosQuadraNaoVistoriadaTipos extends Agro_Db_Table_Abstract {
	protected $_schema = 'sinistro';
	protected $_name = 'motivos_quadra_nao_vistoriada_tipos';
	protected $_primary = ['id_motivo_quadra_nao_vistoriada', 'id_tipo_motivo_quadra_nao_vistoriada'];
	public $_order = 'id_tipo_motivo_quadra_nao_vistoriada';

    const VISTORIA_NAO_CONCLUIDA = 15;

    public function save(array $data): void 
    {
        $idsTipoMotivoSelecionados = $data['id_tipo_motivo_quadra_nao_vistoriada'];
        
        if (!is_array($idsTipoMotivoSelecionados)) {
            $idsTipoMotivoSelecionados = [$data['id_tipo_motivo_quadra_nao_vistoriada']];
        }

        $idMotivoQuadraNaoVistoriada = $data['id_motivo_quadra_nao_vistoriada'];

        $this->_db->query("DELETE FROM sinistro.motivos_quadra_nao_vistoriada_tipos WHERE id_motivo_quadra_nao_vistoriada = {$idMotivoQuadraNaoVistoriada}");
        
        foreach ($idsTipoMotivoSelecionados as $idTipoMotivo) {
            $this->insert([
                'id_motivo_quadra_nao_vistoriada' => $idMotivoQuadraNaoVistoriada,
                'id_tipo_motivo_quadra_nao_vistoriada' => $idTipoMotivo
            ]);
        }
    }


    public function getIdsTipoVinculados(int $idMotivoQuadraNaoVistoriada): array
    {
        $rs = $this->_db->fetchAll(
            $this
                ->select()
                ->setIntegrityCheck(false)
                ->from(['mt' => 'sinistro.motivos_quadra_nao_vistoriada_tipos'], false)
                ->join(['t' => 'sinistro.tipos_motivos_quadra_nao_vistoriada'], 't.id = mt.id_tipo_motivo_quadra_nao_vistoriada', 'id')
                ->where('mt.id_motivo_quadra_nao_vistoriada = ?', $idMotivoQuadraNaoVistoriada)
        );

        return array_column($rs, 'id');
    }
}