Пример #1
0
 /**
  * Check if the transaction is valid against the Defrauder Validator
  *
  * @param Transaction $transaction
  * @return bool Whether or not the transaction is valid
  */
 public function transactionIsValid(Transaction $transaction)
 {
     /** @var $em \Doctrine\Common\Persistence\ObjectManager */
     $em = $this->container->get('doctrine')->getManager();
     $transactionRepo = $em->getRepository('AppBundle:Transaction');
     $average = $transactionRepo->getAvgAmount();
     $amountIsValid = $this->amountIsValid($average, $transaction->getAmount());
     $zipcodes = $transactionRepo->getAllZips();
     $locationIsValid = $this->locationIsValid($zipcodes, $transaction->getZip());
     return $amountIsValid && $locationIsValid;
 }
Пример #2
0
 /**
  * Validate the transaction datas
  *
  * @todo This should probably be pulled out into a service
  * @param \Defrauder\Bundle\AppBundle\Entity\Transaction $transaction
  * @param \Symfony\Component\Validator\Context\ExecutionContextInterface $context
  */
 public function validateTransaction(Transaction $transaction, ExecutionContextInterface $context)
 {
     $name = $transaction->getName();
     if (empty($name)) {
         $context->buildViolation('Name is required!')->atPath('name')->addViolation();
     }
     $amount = $transaction->getAmount();
     if (!is_int($amount) && !is_float($amount)) {
         // make sure number like...
         $context->buildViolation('Amount must be a number!')->atPath('amount')->addViolation();
     } elseif ((int) $amount != $amount) {
         // validate decimal places
         $decimals = strlen($amount) - strrpos($amount, '.') - 1;
         if ($decimals > 2) {
             $context->buildViolation('Amount must have no more than 2 decimal places!')->atPath('amount')->addViolation();
         }
     }
     //todo: actually validate the address...
     $address = $transaction->getAddress();
     if (empty($address)) {
         $context->buildViolation('Address is required!')->atPath('address')->addViolation();
     }
     $city = $transaction->getCity();
     if (empty($city)) {
         $context->buildViolation('City is required!')->atPath('city')->addViolation();
     }
     $state = $transaction->getState();
     if (empty($state)) {
         $context->buildViolation('State is required!')->atPath('state')->addViolation();
     }
     $zip = $transaction->getZip();
     if (!is_int($zip)) {
         // make sure zip number like...
         $context->buildViolation('Zip must be a number!')->atPath('zip')->addViolation();
     } elseif (strlen((string) $zip) != 5) {
         $context->buildViolation('Zip must be 5 digits!')->atPath('zip')->addViolation();
     }
 }