Example #1
0
 /**
  * @param string $name
  * @param mixed $value
  *
  * @throws ResponseCode
  * @throws \Exception
  *
  * @return array|bool|float|string
  */
 public function validateCondition(string $name, $value)
 {
     foreach ($this->validations as $validation) {
         $success = true;
         list($condition, $conditionValue) = $validation;
         $conditionValue = is_array($conditionValue) ? implode(';', $conditionValue) : $conditionValue;
         switch ($condition) {
             case 'gte':
                 if ($value < $conditionValue) {
                     $success = false;
                 }
                 break;
             case 'gt':
                 if ($value <= $conditionValue) {
                     $success = false;
                 }
                 break;
             case 'lte':
                 if ($value > $conditionValue) {
                     $success = false;
                 }
                 break;
             case 'lt':
                 if ($value >= $conditionValue) {
                     $success = false;
                 }
                 break;
             case 'in':
                 $allValues = strpos($this->getType(), '[]') !== false ? $value : [$value];
                 $conditionValue = is_array($conditionValue) ? $conditionValue : [$conditionValue];
                 foreach ($allValues as $currentValue) {
                     if (!in_array($currentValue, $conditionValue)) {
                         $success = false;
                     }
                 }
                 break;
             case 'isip':
                 $isValid = Ip::isValid();
                 $success = $isValid && $conditionValue == 'true' || !$isValid && $conditionValue == 'false';
                 break;
             default:
                 throw new \Exception(sprintf("Invalid condition parameters '%s: %s' for parameter '%s' with value '%s'", $condition, $conditionValue, $name, $value));
                 break;
         }
         if (!$success) {
             $value = is_array($value) ? json_encode($value) : $value;
             throw new ResponseCode(sprintf("Invalid conditions for parameter '%s' with value '%s' for condition '%s : %s'", $name, $value, $condition, is_array($conditionValue) ? json_encode($conditionValue) : $conditionValue), 422);
         }
     }
     return $value;
 }