src/Bidcoz/Bundle/CoreBundle/Services/AuctionPermissionManager.php line 16

Open in your IDE?
  1. <?php
  2. namespace Bidcoz\Bundle\CoreBundle\Services;
  3. use Bidcoz\Bundle\CoreBundle\Entity\Auction\Auction;
  4. use Bidcoz\Bundle\CoreBundle\Entity\Auction\FundANeed;
  5. use Bidcoz\Bundle\CoreBundle\Entity\Auction\ItemSaleType;
  6. use Bidcoz\Bundle\CoreBundle\Entity\Auction\Shop;
  7. use Bidcoz\Bundle\CoreBundle\Entity\Organization;
  8. use Doctrine\Persistence\ObjectManager;
  9. use RS\DiExtraBundle\Annotation as DI;
  10. /**
  11.  * @DI\Service("auction_permission_manager", public=true)
  12.  */
  13. class AuctionPermissionManager
  14. {
  15.     public const ONLINE      'AUCTION_ONLINE';
  16.     public const ONSITE      'AUCTION_ONSITE';
  17.     public const BID_SHEET   'AUCTION_BID_SHEET';
  18.     public const FIXED_PRICE 'AUCTION_FIXED_PRICE';
  19.     private $em;
  20.     private $permissionManager;
  21.     /**
  22.      * @DI\InjectParams({
  23.      *      "em" = @DI\Inject("doctrine.orm.default_entity_manager"),
  24.      *      "permissionManager" = @DI\Inject("permission_manager"),
  25.      * })
  26.      */
  27.     public function __construct(ObjectManager $emPermissionManager $permissionManager)
  28.     {
  29.         $this->em                $em;
  30.         $this->permissionManager $permissionManager;
  31.     }
  32.     public function getVenueChoices(Auction $auctionOrganization $organization null): array
  33.     {
  34.         $organization $organization ?: $auction->getCampaign()->getOrganization();
  35.         return $auction->getVenueChoices();
  36.     }
  37.     public function getSaleTypes(Auction $auction): array
  38.     {
  39.         $organization $auction->getCampaign()->getOrganization();
  40.         $allTypes  $this->em->getRepository(ItemSaleType::class)->findAll();
  41.         $saleTypes = [];
  42.         foreach ($allTypes as $type) {
  43.             $saleTypes[$type->getId()] = $type->getName();
  44.         }
  45.         // manual sale type is showed only when onsite auction is available
  46.         if (false === $auction->hasOnsite()) {
  47.             unset($saleTypes[ItemSaleType::MANUAL]);
  48.         }
  49.         if ($auction instanceof Shop || $auction instanceof FundANeed) {
  50.             unset($saleTypes[ItemSaleType::AUCTION]);
  51.             unset($saleTypes[ItemSaleType::MANUAL]);
  52.             if ($auction instanceof Shop && !$organization->isEnableCustomizations()) {
  53.                 unset($saleTypes[ItemSaleType::DONATION]);
  54.             }
  55.         } else {
  56.             unset($saleTypes[ItemSaleType::DONATION]);
  57.         }
  58.         return $saleTypes;
  59.     }
  60. }