public function setEncryptedFormat($value)
 {
     $value = EncryptedFormat::memberByValue($value)->value();
     return $this->setParameter('EncryptedFormat', $value);
 }
 /**
  * Model validation ensures that any data that is present in the model is
  * formatted correctly. No business logic validation is performed at this
  * level.
  *
  * @throws InvalidRequestException if validation fails.
  */
 public function validate()
 {
     if (strlen($this['CardNumber'])) {
         if (!preg_match('/^\\d{12,19}$/', $this['CardNumber'])) {
             throw new InvalidRequestException('CardNumber should have 12 to 19 digits');
         }
         if (!Helper::validateLuhn($this['CardNumber'])) {
             throw new InvalidRequestException('CardNumber is invalid');
         }
     }
     if (strlen($this['ExpirationMonth'] && strlen($this['ExpirationYear']))) {
         $time = gmmktime(0, 0, 0, $this['ExpirationMonth'], 1, $this['ExpirationYear']);
         if (gmdate('Ym', $time) < gmdate('Ym')) {
             throw new InvalidRequestException('Card has expired');
         }
     }
     if (strlen($this['Track1Data']) && !preg_match('/^.{1,76}$/', $this['Track1Data'])) {
         throw new InvalidRequestException('Track1Data should have 76 or fewer characters');
     }
     if (strlen($this['Track2Data']) && !preg_match('/^.{1,37}$/', $this['Track2Data'])) {
         throw new InvalidRequestException('Track2Data should have 37 or fewer characters');
     }
     if (strlen($this['MagneprintData']) && !preg_match('/^.{1,700}$/', $this['MagneprintData'])) {
         throw new InvalidRequestException('MagneprintData should have 700 or fewer characters');
     }
     if (strlen($this['CVV']) && !preg_match('/^\\d{1,4}$/', $this['CVV'])) {
         throw new InvalidRequestException('CVV should have 4 or fewer digits');
     }
     if (strlen($this['EncryptedTrack1Data']) && !preg_match('/^.{1,300}$/', $this['EncryptedTrack1Data'])) {
         throw new InvalidRequestException('EncryptedTrack1Data should have 300 or fewer characters');
     }
     if (strlen($this['EncryptedTrack2Data']) && !preg_match('/^.{1,200}$/', $this['EncryptedTrack2Data'])) {
         throw new InvalidRequestException('EncryptedTrack2Data should have 200 or fewer characters');
     }
     if (strlen($this['EncryptedCardData']) && !preg_match('/^.{1,200}$/', $this['EncryptedCardData'])) {
         throw new InvalidRequestException('EncryptedCardData should have 200 or fewer characters');
     }
     if (strlen($this['CardDataKeySerialNumber']) && !preg_match('/^.{1,26}$/', $this['CardDataKeySerialNumber'])) {
         throw new InvalidRequestException('CardDataKeySerialNumber should have 26 or fewer characters');
     }
     if (isset($this['EncryptedFormat'])) {
         try {
             EncryptedFormat::memberByValue($this['EncryptedFormat']);
         } catch (\Exception $e) {
             throw new InvalidRequestException('Invalid value for EncryptedFormat');
         }
     }
 }