<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasOne;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\Relations\BelongsTo;

class Professional extends Model
{
    protected $table = 'professionals';

    protected $fillable = [
        'professional_uuid',
        'user_id',
        'profession_id',
        'bio',
        'show_professional_fee',
        'status',
        'has_applied',
        'default_rate'
    ];

    /**
     * @return BelongsTo
     */
    public function user(): BelongsTo
    {
        return $this->belongsTo(User::class, 'user_id');
    }
    
    /**
     * @return HasMany
     */
    public function specialties(): HasMany
    {
        return $this->hasMany(ProfessionalSpecialty::class, 'professional_id');
    }

    /**
     * @return HasOne
     */
    public function office(): HasOne
    {
        return $this->hasOne(ProfessionalOffice::class, 'professional_id');
    }

    /**
     * @return HasMany
     */
    public function schedules(): HasMany
    {
        return $this->hasMany(ProfessionalSchedule::class, 'professional_id');
    }

    /**
     * @return HasOne
     */
    public function documents(): HasOne
    {
        return $this->hasOne(ProfessionalDocument::class, 'professional_id');
    }

    /**
     * @return BelongsTo
     */
    public function profession(): BelongsTo
    {
        return $this->belongsTo(Profession::class, 'profession_id');
    }

    /**
     * @return HasMany
     */
    public function ratings(): HasMany
    {
        return $this->hasMany(Rating::class, 'professional_id');
    }

    public function educations(): HasMany
    {
        return $this->hasMany(ProfessionalEducation::class, 'professional_id');
    }
}
