namespace App;

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

class   
 Datosaspirante extends Model
{
    use HasFactory;

    protected $table = 'AspPostgrado';
    protected $primaryKey = 'id';
    public $timestamps = false;

    protected $fillable = [
        'id',
        'Cedula',
        'PrimerNombre',
        'SegundoNombre',
        'PrimerApellido',
        'SegundoApellido',
        'Nacionalidad',
        'NumPasaporte',
        'EstadoCivil',
        'Genero',
        'FechaNacimiento',
        'Direccion',
        'TelefonoMovil',
        'TelefonoLocal',
        'TelefonOficina',
        'Correo',
        'Edad',
        'Peso',
        'Estatura',
        'PaisOrigen_id',
        'Etnias_id',
        'discapacidad_id',
        'Estados_id',
        'Municipios_id',
        'Parroquias_id',
        'PaisNacimiento_id',
        'user_id',
    ];

    protected $guarded = [];

    public function setFechaNacAttribute($value)
    {
        $this->attributes['FechaNacimiento'] = Carbon::createFromFormat('d/m/Y', $value)->toDateString();
    }

    // Relaciones
    public function aspirante()
    {
        return $this->hasMany(DatosBasicos::class);
    }

    public function selectPais()
    {
        return $this->belongsTo(Pais::class);
    }

    // Scopes
    public function scopeNombInstituto($query, $NombInstituto)
    {
        if ($NombInstituto) {
            return $query->where('NombInstituto', 'LIKE', "%$NombInstituto%");
        }
    }

    public function scopeNombEspecialidad($query, $NombEspecialidad)
    {
        if ($NombEspecialidad) {
            return $query->where('NombEspecialidad', 'LIKE', "%$NombEspecialidad%");
        }
    }

    public function scopeNombProgramas($query, $NombProgramas)
    {
        if ($NombProgramas) {
            return $query->where('NombProgramas', 'LIKE', "%$NombProgramas%");
        }
    }

    // Reglas de validación
    public static function rules()
    {
        return [
            'Cedula' => 'required|unique:AspPostgrado',
            'PrimerNombre' => 'required|string|max:255',
            // ... otras reglas de validación ...
            'Estados_id' => 'nullable|integer|exists:estados,id', // Asegurarse que existe en la tabla estados
            'Municipios_id' => 'nullable|integer|exists:municipios,id', // Asegurarse que existe en la tabla municipios
            'Parroquias_id' => 'nullable|integer|exists:parroquias,id', // Asegurarse que existe en la tabla parroquias
        ];
    }
}