<?php
namespace Bidcoz\Bundle\CoreBundle\Services;
use Bidcoz\Bundle\CoreBundle\Entity\Auction\Auction;
use Bidcoz\Bundle\CoreBundle\Entity\Auction\FundANeed;
use Bidcoz\Bundle\CoreBundle\Entity\Auction\ItemSaleType;
use Bidcoz\Bundle\CoreBundle\Entity\Auction\Shop;
use Bidcoz\Bundle\CoreBundle\Entity\Organization;
use Doctrine\Persistence\ObjectManager;
use RS\DiExtraBundle\Annotation as DI;
/**
* @DI\Service("auction_permission_manager", public=true)
*/
class AuctionPermissionManager
{
public const ONLINE = 'AUCTION_ONLINE';
public const ONSITE = 'AUCTION_ONSITE';
public const BID_SHEET = 'AUCTION_BID_SHEET';
public const FIXED_PRICE = 'AUCTION_FIXED_PRICE';
private $em;
private $permissionManager;
/**
* @DI\InjectParams({
* "em" = @DI\Inject("doctrine.orm.default_entity_manager"),
* "permissionManager" = @DI\Inject("permission_manager"),
* })
*/
public function __construct(ObjectManager $em, PermissionManager $permissionManager)
{
$this->em = $em;
$this->permissionManager = $permissionManager;
}
public function getVenueChoices(Auction $auction, Organization $organization = null): array
{
$organization = $organization ?: $auction->getCampaign()->getOrganization();
return $auction->getVenueChoices();
}
public function getSaleTypes(Auction $auction): array
{
$organization = $auction->getCampaign()->getOrganization();
$allTypes = $this->em->getRepository(ItemSaleType::class)->findAll();
$saleTypes = [];
foreach ($allTypes as $type) {
$saleTypes[$type->getId()] = $type->getName();
}
// manual sale type is showed only when onsite auction is available
if (false === $auction->hasOnsite()) {
unset($saleTypes[ItemSaleType::MANUAL]);
}
if ($auction instanceof Shop || $auction instanceof FundANeed) {
unset($saleTypes[ItemSaleType::AUCTION]);
unset($saleTypes[ItemSaleType::MANUAL]);
if ($auction instanceof Shop && !$organization->isEnableCustomizations()) {
unset($saleTypes[ItemSaleType::DONATION]);
}
} else {
unset($saleTypes[ItemSaleType::DONATION]);
}
return $saleTypes;
}
}