<?php declare(strict_types=1);
namespace PPAdmin\AdminSections\CompetitorShops;
use PlnaPenezenka\PPSDKBundle\Doctrine\Entity\Administrator;
use PlnaPenezenka\PPSDKBundle\Doctrine\Entity\Common\DefaultEntity;
use PlnaPenezenka\PPSDKBundle\Doctrine\Entity\Competitor\CompetitorShop;
use PlnaPenezenka\PPSDKBundle\Doctrine\Entity\Web;
use PPAdmin\AdminSections\AdminSectionsList;
use PPAdmin\Security\AbstractAdminGridSectionVoter;
class CompetitorShopsVoter extends AbstractAdminGridSectionVoter
{
const SECTION_PERMISSION_VERIFY_SHOP_MATCH = '.verify-shop-match';
public static function getSectionIdentifier(): string
{
return AdminSectionsList::COMPETITORS_SHOPS;
}
protected function voteOnSectionPermission(Administrator $admin, string $section_permission, $subject = null): bool
{
return match($section_permission) {
self::SECTION_PERMISSION_VERIFY_SHOP_MATCH => $this->canVerifyShopMatch($admin, $subject),
default => parent::voteOnSectionPermission($admin, $section_permission, $subject)
};
}
function canVerifyShopMatch(Administrator $admin, CompetitorShop $competitor_shop): bool
{
return $this->canEditRecord($admin, $competitor_shop) && !$competitor_shop->shop_match_verified;
}
function canCreateSectionRecords(Administrator $admin, Web $web): bool
{
return false;
}
function canDeleteRecord(Administrator $admin, DefaultEntity $record): bool
{
return false;
}
}