<?php

namespace App\Models;

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

/**
 * @property int $id
 * @property string $name
 * @property string $last_name
 * @property string $professional_register
 * @property string $address
 * @property int $city_id
 * @property int $order_no
 * @property bool $active
 * @property Carbon|null $created_at
 * @property Carbon|null $updated_at
 */
class Doctor extends AbstractModels\ImageableModel
{
    use HasFactory;

    protected $fillable = [
        'name',
        'last_name',
        'professional_register',
        'address',
        'city_id',
        'order_no',
        'active',
    ];

    protected $casts = [
        'active' => 'bool',
    ];

    public function specialities()
    {
        return $this->belongsToMany(Speciality::class);
    }

    public function appendSpecialitiesId()
    {
        $specialitiesId = $this->specialities()
            ->select('id')
            ->get()
            ->map(fn(Speciality $sp) => $sp->id);

        $this->setAttribute('specialities', $specialitiesId);
    }
}
