<?php declare(strict_types=1);
namespace PPAdmin\AdminSections\Promotions;
use PlnaPenezenka\PPSDKBundle\Doctrine\Entity\Administrator;
use PlnaPenezenka\PPSDKBundle\Doctrine\Entity\Common\DefaultEntity;
use PlnaPenezenka\PPSDKBundle\Doctrine\Entity\Promotion;
use PlnaPenezenka\PPSDKBundle\Doctrine\Entity\Web;
use PlnaPenezenka\PPSDKBundle\Service\BoardCouponsImporter;
use PPAdmin\AdminSections\AdminSectionsList;
use PPAdmin\Security\AbstractAdminGridSectionVoter;
/**
* Edit/create not possible request - the only promotions source should be Board
* @see BoardCouponsImporter::importCoupons
*/
class PromotionsVoter extends AbstractAdminGridSectionVoter
{
public static function getSectionIdentifier(): string
{
return AdminSectionsList::PROMOTIONS;
}
protected static function getSupportedSectionPermissions(): array
{
return [
self::SECTION_PERMISSION_ACCESS,
self::SECTION_PERMISSION_LIST,
self::SECTION_PERMISSION_VIEW_DETAIL,
self::SECTION_PERMISSION_EDIT,
self::SECTION_PERMISSION_DELETE,
self::SECTION_PERMISSION_VIEW_AUDIT,
];
}
function canCreateSectionRecords(Administrator $admin, Web $web): bool
{
return false; // board import only
}
function canEditRecord(Administrator $admin, DefaultEntity $record): bool
{
/** @var Promotion $record */
return parent::canEditRecord($admin, $record) && $record->external_system === '';
}
function canDeleteRecord(Administrator $admin, DefaultEntity $record): bool
{
/** @var Promotion $record */
return parent::canDeleteRecord($admin, $record) && $record->external_system === '';
}
}