|
|
@@ -0,0 +1,103 @@
|
|
|
+<?php
|
|
|
+
|
|
|
+
|
|
|
+namespace ModulesGarden\Servers\ProxmoxCloudVps\App\UI\VmCreate\Validators;
|
|
|
+
|
|
|
+
|
|
|
+use ModulesGarden\ProxmoxAddon\App\Services\Cloud\ResourceManager;
|
|
|
+use ModulesGarden\Servers\ProxmoxCloudVps\Core\UI\Widget\Forms\Validators\BaseValidator;
|
|
|
+use ModulesGarden\Servers\ProxmoxCloudVps\Core\UI\Traits\WhmcsParams;
|
|
|
+use ModulesGarden\Servers\ProxmoxCloudVps\App\Enum\ConfigurableOption;
|
|
|
+
|
|
|
+class RessourceValidator extends BaseValidator
|
|
|
+{
|
|
|
+ use WhmcsParams;
|
|
|
+ protected $additionalField;
|
|
|
+ protected $minValue = 0;
|
|
|
+ protected $maxValue = 0;
|
|
|
+ protected $required = true;
|
|
|
+
|
|
|
+ public function __construct( $additionalField, $required = true)
|
|
|
+ {
|
|
|
+ $this->additionalField = $additionalField;
|
|
|
+ $this->required = $required;
|
|
|
+ }
|
|
|
+
|
|
|
+ protected function validate($data, $additionalData = null)
|
|
|
+ {
|
|
|
+ if (!$this->required && empty($data))
|
|
|
+ {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ $resurceManager = new ResourceManager();
|
|
|
+ $additionalSize = 0;
|
|
|
+ $templateName = (int) $additionalData->get('formData')[$this->additionalField];
|
|
|
+ $diskResource = $resurceManager ->disk();
|
|
|
+
|
|
|
+ logModuleCall(
|
|
|
+ 'proxmoxCloud',
|
|
|
+ __FUNCTION__,
|
|
|
+ $templateName,
|
|
|
+ 'Debug',
|
|
|
+ $diskResource
|
|
|
+ );
|
|
|
+ return true;
|
|
|
+
|
|
|
+ $diskResource->setTotal($diskResource->getTotal()-$additionalSize);
|
|
|
+ if ($this->isWhmcsConfigOption(ConfigurableOption::STORAGE)) {
|
|
|
+ $this->maxValue = $this->getWhmcsConfigOption(ConfigurableOption::STORAGE) - $diskResource->getUsed();
|
|
|
+ } else {
|
|
|
+ $this->maxValue = $diskResource->free();
|
|
|
+ }
|
|
|
+ if ($this->maxValue > $diskResource->getMax()) {
|
|
|
+ $this->addValidationError('PleaseProvideANumericValueBetween', false, ['minValue' => $this->minValue, 'maxValue' => $diskResource->getMax()]);
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ $this->minValue = $diskResource->getMin();
|
|
|
+ if(preg_match("/\./", $data)){
|
|
|
+ $this->addValidationError('PleaseProvideANumericValueBetween', false, ['minValue' => $this->minValue, 'maxValue' => $this->maxValue]);
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if (is_numeric($data) && $this->minValue === 0 && $this->maxValue === 0)
|
|
|
+ {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ //Min & Max
|
|
|
+ if (is_numeric($data) && $this->minValue <= ((int)$data) && ((int)$data) <= $this->maxValue)
|
|
|
+ {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ //Min
|
|
|
+ else
|
|
|
+ {
|
|
|
+ if (is_numeric($data) && !is_numeric($this->maxValue) && $this->minValue <= ((int)$data))
|
|
|
+ {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if ($this->minValue === $this->maxValue)
|
|
|
+ {
|
|
|
+ $this->addValidationError('PleaseProvideANumericValue');
|
|
|
+
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (is_numeric($this->minValue) && is_numeric($this->maxValue))
|
|
|
+ {
|
|
|
+ $this->addValidationError('PleaseProvideANumericValueBetween', false, ['minValue' => $this->minValue, 'maxValue' => $this->maxValue]);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ if (is_numeric($this->minValue) && !is_numeric($this->maxValue))
|
|
|
+ {
|
|
|
+ $this->addValidationError('PleaseProvideANumericValueFrom', false, ['minValue' => $this->minValue]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+}
|