VpsBuild.php 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. <?php
  2. namespace ModulesGarden\Servers\ProxmoxVps\App\UI\Home\Pages;
  3. use ModulesGarden\ProxmoxAddon\App\Jobs\Vps\CloneQemuJob;
  4. use ModulesGarden\ProxmoxAddon\App\Jobs\Vps\CreateLxcJob;
  5. use ModulesGarden\ProxmoxAddon\App\Jobs\Vps\CreateQemuJob;
  6. use ModulesGarden\ProxmoxAddon\App\Jobs\Vps\LoadBalancer\UpgradeVmJob;
  7. use ModulesGarden\ProxmoxAddon\App\Jobs\Vps\MigrateVmJob;
  8. use ModulesGarden\ProxmoxAddon\App\Jobs\Vps\Reinstall\CreateVmJob;
  9. use ModulesGarden\ProxmoxAddon\App\Jobs\Vps\Reinstall\RestoreVm;
  10. use ModulesGarden\ProxmoxAddon\App\Models\Job;
  11. use ModulesGarden\Servers\ProxmoxVps\App\Helpers\UrlServiceHelper;
  12. use ModulesGarden\Servers\ProxmoxVps\App\Http\Client\BaseClientController;
  13. use ModulesGarden\Servers\ProxmoxVps\Core\UI\Builder\BaseContainer;
  14. use ModulesGarden\Servers\ProxmoxVps\Core\UI\Interfaces\AdminArea;
  15. use ModulesGarden\Servers\ProxmoxVps\Core\UI\Interfaces\AjaxElementInterface;
  16. use ModulesGarden\Servers\ProxmoxVps\Core\UI\Interfaces\ClientArea;
  17. use ModulesGarden\Servers\ProxmoxVps\Core\UI\ResponseTemplates\RawDataJsonResponse;
  18. use function ModulesGarden\Servers\ProxmoxVps\Core\Helper\sl;
  19. class VpsBuild extends BaseContainer implements ClientArea, AdminArea, AjaxElementInterface
  20. {
  21. use BaseClientController;
  22. protected $id = 'vpsBuild';
  23. protected $title = 'vpsBuild';
  24. protected $name = 'vpsBuild';
  25. protected $vueComponent = true;
  26. protected $defaultVueComponentName = 'mg-vpsBuild';
  27. public function initContent()
  28. {
  29. if ($this->isVmCreate())
  30. {
  31. $this->customTplVars['warning'] = sl("lang")->abtr('Creating VM in progress. Please try again later.');
  32. }
  33. else if ($this->isVmReinstall()) {
  34. $this->customTplVars['warning'] = sl("lang")->abtr('Rebuild VM in progress. Please try again later.');
  35. } else if ($this->isVmUpgrade()){
  36. $this->customTplVars['warning'] = sl("lang")->abtr('Upgrading VM in progress. Please try again later.');
  37. }else if(!$this->getWhmcsCustomField("vmid")){
  38. $this->customTplVars['warning'] = sl("lang")->abtr('Custom field VMID is empty.');
  39. }
  40. }
  41. private function isVmCreate()
  42. {
  43. $jobs = [
  44. CloneQemuJob::class,
  45. CreateQemuJob::class,
  46. CreateLxcJob::class,
  47. ];
  48. return Job::waiting()->ofHostingId($this->getWhmcsParamByKey("serviceid"))->ofJobs($jobs)->count();
  49. }
  50. private function isVmReinstall()
  51. {
  52. $jobs = [
  53. CreateVmJob::class
  54. ];
  55. return Job::waiting()->ofHostingId($this->getWhmcsParamByKey("serviceid"))->ofJobs($jobs)->count();
  56. }
  57. private function isVmUpgrade()
  58. {
  59. $jobs = [
  60. MigrateVmJob::class,
  61. \ModulesGarden\ProxmoxAddon\App\Jobs\Vps\RestoreVm::class,
  62. UpgradeVmJob::class
  63. ];
  64. return Job::waiting()->ofHostingId($this->getWhmcsParamByKey("serviceid"))->ofJobs($jobs)->count();
  65. }
  66. public function returnAjaxData()
  67. {
  68. $vars = [];
  69. $response = new RawDataJsonResponse();
  70. if($this->isVpsCreated()){
  71. $response->setCallBackFunction('mgRedirect');
  72. $response->addData('redirectUrl' , ( new UrlServiceHelper())->home());
  73. }
  74. return $response;
  75. }
  76. }