<?php declare(strict_types=1);
namespace PPAdmin\AdminSections\TipContests\Rounds;
use PlnaPenezenka\PPSDKBundle\Doctrine\Entity\Administrator;
use PlnaPenezenka\PPSDKBundle\Doctrine\Entity\Common\DefaultEntity;
use PPAdmin\AdminSections\AdminSectionsList;
use PPAdmin\AdminSections\TipContests\TipContestsSection;
use PPAdmin\Security\AbstractAdminGridSectionVoter;
class TipContestRoundsVoter extends AbstractAdminGridSectionVoter
{
const SECTION_PERMISSION_RESOLVE_SCORE = '.resolve-score';
public static function getSectionIdentifier(): string
{
return AdminSectionsList::TIP_CONTESTS;
}
static function getSubsectionIdentifier(): string
{
return TipContestsSection::SUBSECTION_ROUNDS;
}
public static function getResolveScorePermission(): string
{
return static::getPermission(self::SECTION_PERMISSION_RESOLVE_SCORE);
}
protected function voteOnSectionPermission(Administrator $admin, string $section_permission, $subject = null): bool
{
return match($section_permission) {
static::SECTION_PERMISSION_RESOLVE_SCORE => $this->canResolveRecordScore($admin, $subject),
default => parent::voteOnSectionPermission($admin, $section_permission, $subject)
};
}
protected function canResolveRecordScore(Administrator $admin, DefaultEntity $record): bool
{
return
$this->canAccessSection($admin, $this->resolveWeb($record)) &&
$admin->hasPermission(static::getResolveScorePermission(), $this->resolveWeb($record));
}
}