<?php

namespace App\Models\Concursos;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Cargo extends Model {

    use HasFactory;

    protected $connection = 'mysql_bddpmar';
    protected $table = 'tb_pmar_concurso_cargo';
    protected $primaryKey = 'id_concurso';
    public $incrementing = true;
    protected $keyType = 'int';
    protected $fillable = [
        'id_cargo',
        'id_concurso',
        'nm_cargo',
        'cd_nivel',
        'vl_salario',
        'nr_vagas_lei',
        'nr_vagas_edital',
        'nr_efetivo_ocupado',
        'nr_efetivo_disponivel',
        'sn_nt_prova_objetiva',
        'sn_nt_prova_pratica',
        'sn_nt_prova_discursiva',
        'sn_nt_prova_titulo',
        'sn_nt_prova_mar',
        'sn_nt_prova_ter',
        'sn_nt_prova_portugues',
        'sn_nt_prova_ingles',
        'sn_nt_prova_informatica',
        'sn_nt_prova_sus',
        'sn_nt_prova_con_especifico',
        'sn_nt_prova_con_gerais',
        'sn_nt_prova_legis_especifica',
        'sn_nt_prova_legis_transito',
        'sn_nt_prova_con_pedagogico',
        'sn_nt_exame_psicologico',
        'sn_nt_prova_amp_con',
    ];

    // 🔗 Relacionamentos
    public function concurso() {
        return $this->belongsTo(\App\Models\Concursos\Concurso::class, 'id_concurso', 'id_concurso');
    }

    public function candidatos() {
        return $this->hasMany(\App\Models\Concursos\Candidato::class, 'id_cargo', 'id_cargo');
    }

    public function totalCandidatos() {
        return $this->candidatos()->count();
    }

    public function totalConvocados() {
        return $this->candidatos()->where('cd_status', 2)->count(); // 2 = Convocado
    }

    public function cadastroDisponivel() {
        // Disponível = vagas edital - convocados
        $disponivel = $this->nr_vagas_edital - $this->totalConvocados();
        return $disponivel > 0 ? $disponivel : 0;
    }
}
