| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- <?php
- namespace ModulesGarden\Servers\ProxmoxCloudVps\App\UI\Vms\Providers;
- use MGProvision\Proxmox\v2\VmFactory;
- use ModulesGarden\ProxmoxAddon\App\Models\VmModel;
- use ModulesGarden\ProxmoxAddon\App\Services\CloudService;
- use ModulesGarden\ProxmoxAddon\App\Services\ApiService;
- use ModulesGarden\Servers\ProxmoxCloudVps\App\Helpers\AppParams;
- use ModulesGarden\Servers\ProxmoxCloudVps\Core\UI\Interfaces\ClientArea;
- use ModulesGarden\Servers\ProxmoxCloudVps\Core\UI\ResponseTemplates\HtmlDataJsonResponse;
- use ModulesGarden\Servers\ProxmoxCloudVps\Core\UI\Widget\Forms\DataProviders\BaseDataProvider;
- class DeleteVmProvider extends BaseDataProvider implements ClientArea
- {
- use ApiService;
- public function read()
- {
- if ($this->actionElementId && $this->actionElementId != "diskDataTable")
- {
- $this->data['id'] = $this->actionElementId;
- $this->data['name'] = VmModel::where("id", $this->actionElementId)->value("name");
- }
- }
- public function update()
- {
- }
- public function delete()
- {
- //init proxmox addon params
- (new AppParams())->initFromWhmcsParams();
- //get vm model
- $vmModel = VmModel::ofHostingId($this->getWhmcsParamByKey('serviceid'))
- ->ofId($this->formData['id'])->firstOrFail();
- $this->api();
- try {
- $status = (new VmFactory())->fromVmModel($vmModel)->status()['status'];
- if (!($status=='running'||$status=='stopped')) {
- return (new HtmlDataJsonResponse())
- ->setStatusError()
- ->setMessageAndTranslate('The Virtual Machine cannot be deleted in an unknown state');
- }
- } catch (\Exception $ex) {
- return (new HtmlDataJsonResponse())
- ->setStatusError()
- ->setMessageAndTranslate('Error deleting Virtual Machine');
- }
- //destory vm
- (new CloudService())->delete($vmModel);
- return (new HtmlDataJsonResponse())
- ->setStatusSuccess()
- ->setMessageAndTranslate('The Virtual Machine has been deleted successfully')
- ->setCallBackFunction('pmActivateCreateVMButton');
- }
- }
|