/home/suroeste/public_html/payments.transportessuroeste.com/src/Validators
NameSizeModeActions
Validator.php64090644editdlrm
Edit: /home/suroeste/public_html/payments.transportessuroeste.com/src/Validators/Validator.php (6409B)
data = $data; } /** * Validar datos de pago de ticket */ public static function validatePayment(array $data): array { $validator = new self($data); // Campos requeridos $validator->required('ticket_reference', 'Referencia del ticket es requerida'); $validator->required('amount', 'Monto es requerido'); $validator->required('description', 'Descripción es requerida'); $validator->required('payer_email', 'Email del pagador es requerido'); $validator->required('payer_name', 'Nombre del pagador es requerido'); $validator->required('payer_document', 'Documento del pagador es requerido'); $validator->required('payer_document_type', 'Tipo de documento es requerido'); // Validaciones específicas $validator->numeric('amount', 'Monto debe ser numérico'); $validator->min('amount', TRANSACTION_CONFIG['min_amount'], 'Monto mínimo: $' . (TRANSACTION_CONFIG['min_amount'] / 100)); $validator->max('amount', TRANSACTION_CONFIG['max_amount'], 'Monto máximo: $' . (TRANSACTION_CONFIG['max_amount'] / 100)); $validator->email('payer_email', 'Email inválido'); $validator->maxLength('ticket_reference', 100, 'Referencia muy larga'); $validator->maxLength('description', 500, 'Descripción muy larga'); $validator->inArray('payer_document_type', ['CC', 'CE', 'NIT', 'PP', 'TI'], 'Tipo de documento inválido'); // Validación de teléfono (opcional) if (!empty($data['payer_phone'])) { $validator->phone('payer_phone', 'Teléfono inválido'); } $validator->throwIfErrors(); return $validator->getValidated(); } /** * Validar consulta de transacción */ public static function validateQuery(array $data): array { $validator = new self($data); if (empty($data['transaction_uuid']) && empty($data['ticket_reference']) && empty($data['internal_reference'])) { throw new ValidationException(['reference' => 'Debe proporcionar al menos una referencia']); } if (!empty($data['transaction_uuid'])) { $validator->uuid('transaction_uuid', 'UUID de transacción inválido'); } $validator->throwIfErrors(); return $validator->getValidated(); } // ============================================================================ // MÉTODOS DE VALIDACIÓN // ============================================================================ public function required(string $field, string $message): self { if (!isset($this->data[$field]) || trim((string)$this->data[$field]) === '') { $this->errors[$field] = $message; } return $this; } public function numeric(string $field, string $message): self { if (isset($this->data[$field]) && !is_numeric($this->data[$field])) { $this->errors[$field] = $message; } return $this; } public function min(string $field, $min, string $message): self { if (isset($this->data[$field]) && $this->data[$field] < $min) { $this->errors[$field] = $message; } return $this; } public function max(string $field, $max, string $message): self { if (isset($this->data[$field]) && $this->data[$field] > $max) { $this->errors[$field] = $message; } return $this; } public function email(string $field, string $message): self { if (isset($this->data[$field]) && !filter_var($this->data[$field], FILTER_VALIDATE_EMAIL)) { $this->errors[$field] = $message; } return $this; } public function maxLength(string $field, int $max, string $message): self { if (isset($this->data[$field]) && strlen($this->data[$field]) > $max) { $this->errors[$field] = $message; } return $this; } public function minLength(string $field, int $min, string $message): self { if (isset($this->data[$field]) && strlen($this->data[$field]) < $min) { $this->errors[$field] = $message; } return $this; } public function inArray(string $field, array $allowed, string $message): self { if (isset($this->data[$field]) && !in_array($this->data[$field], $allowed)) { $this->errors[$field] = $message; } return $this; } public function uuid(string $field, string $message): self { $pattern = '/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i'; if (isset($this->data[$field]) && !preg_match($pattern, $this->data[$field])) { $this->errors[$field] = $message; } return $this; } public function phone(string $field, string $message): self { if (isset($this->data[$field])) { $phone = preg_replace('/[^0-9+]/', '', $this->data[$field]); if (strlen($phone) < 7 || strlen($phone) > 15) { $this->errors[$field] = $message; } } return $this; } public function regex(string $field, string $pattern, string $message): self { if (isset($this->data[$field]) && !preg_match($pattern, $this->data[$field])) { $this->errors[$field] = $message; } return $this; } public function hasErrors(): bool { return !empty($this->errors); } public function getErrors(): array { return $this->errors; } public function throwIfErrors(): void { if ($this->hasErrors()) { throw new ValidationException($this->errors); } } public function getValidated(): array { return array_intersect_key($this->data, array_flip(array_keys($this->data))); } }