<?php

namespace App\Models\Hodnotenie;

use Illuminate\Database\Eloquent\Relations\MorphMany;
use Illuminate\Foundation\Auth\User;

/**
 * Trait HodnotenieTrait
 */
trait HodnotenieTrait
{

    /**
     * @param HodnotenieEnum $druhHodnotenia
     * @return int
     */
    public function pocetHodnoteniPodlaDruhu(HodnotenieEnum $druhHodnotenia): int
    {
        return $this->hodnotenia()->where('hodnotenie', $druhHodnotenia->value)->count();
    }

    /**
     * @return MorphMany
     */
    public function hodnotenia(): MorphMany
    {
        return $this->morphMany(HodnotenieModel::class, 'hodnotitelne');
    }

    /**
     * @return int
     */
    public function pocetHodnoteni(): int
    {
        return $this->hodnotenia()->count();
    }

    /**
     * @param User $pouzivatel
     * @return HodnotenieEnum|null
     */
    public function hodnoteniePouzivatela(User $pouzivatel): ?HodnotenieEnum
    {
        return $this->hodnotenia()->whereHodnotilId($pouzivatel->id)->first()->hodnotenie ?? null;
    }
}
