auctions-1.0.x-dev/modules/auctions_core/src/Plugin/Validation/Constraint/CurbItemsValidator.php
modules/auctions_core/src/Plugin/Validation/Constraint/CurbItemsValidator.php
<?php namespace Drupal\auctions_core\Plugin\Validation\Constraint; use Drupal\auctions_core\AuctionToolsTrait; use Symfony\Component\Validator\Constraint; use Symfony\Component\Validator\ConstraintValidator; /** * Validates the Auction Items constraint. */ class CurbItemsValidator extends ConstraintValidator { use AuctionToolsTrait; /** * Validator 2.5 and upwards compatible execution context. * * @var \Symfony\Component\Validator\Context\ExecutionContextInterface */ protected $context; /** * {@inheritdoc} */ public function validate($entity, Constraint $constraint) { $instantOnly = $entity->getInstantOnly(); $buyNow = $entity->getPriceBuyNow(); $itemPriceStarting = $entity->getPriceStarting(); if ($entity->hasField('price_buy_now') && $entity->hasField('price_starting') && !$instantOnly) { // startingPriceIsZero. if ($this->roundCents($itemPriceStarting) == 0) { $this->context ->buildViolation($constraint->startingPriceIsZero, ['%value' => $item->value]) ->atPath('price_starting') ->addViolation(); } // buyNowLowerThanStartingPrice. if ($buyNow > 0 && $buyNow < $itemPriceStarting) { $this->context ->buildViolation($constraint->buyNowLowerThanStartingPrice, ['%value' => $item->value]) ->atPath('price_buy_now') ->addViolation(); } } if ($entity->hasField('price_buy_now') && $entity->hasField('instant_only') && $instantOnly) { // instantOnlyWithoutBuyNowPrice. if ($buyNow == 0) { $this->context ->buildViolation($constraint->instantOnlyWithoutBuyNowPrice, ['%value' => $item->value]) ->atPath('price_buy_now') ->addViolation(); } } } }