NetworkSelect.php 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. <?php
  2. namespace ModulesGarden\Servers\ProxmoxCloudVps\App\UI\VirtualInterface\Fields;
  3. use ModulesGarden\ProxmoxAddon\App\Models\VirtualNetwork;
  4. use ModulesGarden\ProxmoxAddon\App\Models\VmIpAddress;
  5. use ModulesGarden\ProxmoxAddon\App\Services\Cloud\ProductService;
  6. use ModulesGarden\ProxmoxAddon\App\Services\Cloud\ResourceManager;
  7. use ModulesGarden\ProxmoxAddon\App\Services\Ip\Ipv4Range;
  8. use ModulesGarden\Servers\ProxmoxCloudVps\Core\UI\Interfaces\ClientArea;
  9. use ModulesGarden\Servers\ProxmoxCloudVps\Core\UI\Widget\Forms\AjaxFields\Select;
  10. use function ModulesGarden\Servers\ProxmoxCloudVps\Core\Helper\sl;
  11. class NetworkSelect extends Select implements ClientArea
  12. {
  13. use ProductService;
  14. protected $id = 'networkSelect';
  15. protected $name = 'network';
  16. public function prepareAjaxData()
  17. {
  18. session_write_close();
  19. if($this->configuration()->isOrderPublicIp()){
  20. $this->availableValues[] = [
  21. 'key' => 'public',
  22. 'value' => sl('lang')->abtr('Public')
  23. ];
  24. }
  25. $resurceManager = new ResourceManager();
  26. $resurceManager->vmIds([\ModulesGarden\ProxmoxAddon\Core\Helper\sl('Vm')->getVmModel()->id]);
  27. if(!$resurceManager->virtualInterfaces()->getMax() || $resurceManager->virtualInterfaces()->free()){
  28. foreach (VirtualNetwork::ofHostingId($this->getWhmcsParamByKey('serviceid'))->select('id', 'name')->get() as $vn)
  29. {
  30. $this->availableValues[] = [
  31. 'key' => $vn->id,
  32. 'value' => $vn->name
  33. ];
  34. }
  35. }
  36. if($this->availableValues)
  37. {
  38. $this->value = $this->availableValues[0]['key'];
  39. }
  40. }
  41. }