ServerGroupProvider.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. <?php
  2. /* * ********************************************************************
  3. * ProxmoxAddon product developed. (Aug 23, 2018)
  4. * *
  5. *
  6. * CREATED BY MODULESGARDEN -> http://modulesgarden.com
  7. * CONTACT -> contact@modulesgarden.com
  8. *
  9. *
  10. * This software is furnished under a license and may be used and copied
  11. * only in accordance with the terms of such license and with the
  12. * inclusion of the above copyright notice. This software or any other
  13. * copies thereof may not be provided or otherwise made available to any
  14. * other person. No title to and ownership of the software is hereby
  15. * transferred.
  16. *
  17. *
  18. * ******************************************************************** */
  19. namespace ModulesGarden\ProxmoxAddon\App\UI\ServerGroup\Providers;
  20. use MGProvision\Proxmox\v2 as proxmox;
  21. use ModulesGarden\ProxmoxAddon as main;
  22. use ModulesGarden\ProxmoxAddon\Core\UI\Interfaces\AdminArea;
  23. /**
  24. *
  25. * Description of RangeTemplateProvider
  26. *
  27. * @author Pawel Kopec <pawelk@modulesgardne.com>
  28. */
  29. class ServerGroupProvider extends main\Core\UI\Widget\Forms\DataProviders\BaseModelDataProvider implements AdminArea
  30. {
  31. use main\App\Services\BaseService;
  32. /**
  33. * ServerGroupProvider constructor.
  34. */
  35. public function __construct()
  36. {
  37. parent::__construct(main\App\Models\ServerGroup::class);
  38. }
  39. public function read()
  40. {
  41. //read for update & delete
  42. if (is_numeric($this->actionElementId))
  43. {
  44. parent::read();
  45. $this->data['node'] = main\App\Models\ServerGroupItem::ofGroupId($this->actionElementId)->pluck("node")->toArray();
  46. }
  47. //server id
  48. $this->data['server_id'] = $this->getRequestValue('id');
  49. $api = $this->setServerId($this->getRequestValue('id'))->getApi();
  50. //node
  51. $nodeRepository = new proxmox\repository\NodeRepository();
  52. $nodeRepository->setApi($api);
  53. $nodeRepository->findOnline(true);
  54. foreach ($nodeRepository->fetch() as $node){
  55. $this->availableValues['node'][$node->getNode()] = $node->getNode();
  56. }
  57. }
  58. public function create()
  59. {
  60. parent::create();
  61. foreach ($this->formData['node'] as $node){
  62. $serverGroupItem = new main\App\Models\ServerGroupItem();
  63. $serverGroupItem->group_id = $this->model->id;
  64. $serverGroupItem->node = $node;
  65. $serverGroupItem->save();
  66. }
  67. main\Core\Helper\sl('lang')->addReplacementConstant('name', $this->formData['name']);
  68. return (new main\Core\UI\ResponseTemplates\HtmlDataJsonResponse())->setMessageAndTranslate('Server group :name: has been created successfully.');
  69. }
  70. public function delete()
  71. {
  72. main\App\Models\ServerGroup::destroy([$this->formData['id']]);
  73. main\Core\Helper\sl('lang')->addReplacementConstant('name', $this->formData['name']);
  74. return (new main\Core\UI\ResponseTemplates\HtmlDataJsonResponse())->setMessageAndTranslate('Server group :name: has been deleted successfully.');
  75. }
  76. public function deleteMass()
  77. {
  78. if (!$this->getRequestValue('massActions'))
  79. {
  80. return (new HtmlDataJsonResponse())->setMessageAndTranslate('Bug no massActions data!')->setStatusError();
  81. }
  82. main\App\Models\ServerGroup::destroy($this->getRequestValue('massActions') );
  83. return (new main\Core\UI\ResponseTemplates\HtmlDataJsonResponse())->setMessageAndTranslate('The selected server group have been deleted.');
  84. }
  85. public function update()
  86. {
  87. //update
  88. parent::update();
  89. //update server group
  90. main\App\Models\ServerGroupItem::ofGroupId($this->formData['id'])
  91. ->ofNodeNotIn($this->formData['node'])
  92. ->delete();
  93. foreach ($this->formData['node'] as $node){
  94. if(main\App\Models\ServerGroupItem::ofGroupId($this->formData['id'])->ofNode($node)->count()){
  95. continue;
  96. }
  97. $sgi = new main\App\Models\ServerGroupItem();
  98. $sgi->fill([
  99. 'group_id' => $this->formData['id'],
  100. "node" => $node ]
  101. )->save();
  102. }
  103. main\Core\Helper\sl('lang')->addReplacementConstant('name', $this->formData['name']);
  104. return (new main\Core\UI\ResponseTemplates\HtmlDataJsonResponse())->setMessageAndTranslate('Server group :name: has been updated successfully.');
  105. }
  106. }