JobProvider.php 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. <?php
  2. namespace ModulesGarden\Servers\ProxmoxCloudVps\App\UI\Snapshot\Providers;
  3. use ModulesGarden\ProxmoxAddon\App\Models\SnapshotJob;
  4. use ModulesGarden\ProxmoxAddon\App\Services\Cloud\ProductService;
  5. use ModulesGarden\Servers\ProxmoxCloudVps\App\Enum\JobPeriod;
  6. use ModulesGarden\Servers\ProxmoxCloudVps\Core\UI\Interfaces\ClientArea;
  7. use ModulesGarden\Servers\ProxmoxCloudVps\Core\UI\ResponseTemplates\HtmlDataJsonResponse;
  8. use ModulesGarden\Servers\ProxmoxCloudVps\Core\UI\Widget\Forms\DataProviders\BaseModelDataProvider;
  9. use function ModulesGarden\Servers\ProxmoxCloudVps\Core\Helper\sl;
  10. class JobProvider extends BaseModelDataProvider implements ClientArea
  11. {
  12. use ProductService;
  13. public function __construct()
  14. {
  15. parent::__construct(SnapshotJob::class);
  16. }
  17. protected function isModelProper($model)
  18. {
  19. if (in_array(get_parent_class($model), [
  20. 'ModulesGarden\Servers\ProxmoxCloudVps\Core\Models\ExtendedEloquentModel',
  21. 'ModulesGarden\ProxmoxAddon\Core\Models\ExtendedEloquentModel',
  22. 'Illuminate\Database\Eloquent\Model'
  23. ]))
  24. {
  25. return true;
  26. }
  27. return false;
  28. }
  29. public function read()
  30. {
  31. //period
  32. $period = $this->configuration()->getPermissionSnapshotJobPeriod();
  33. if($period && in_array(JobPeriod::HOURLY, $period)){
  34. $this->availableValues['period'][JobPeriod::HOURLY] = sl("lang")->tr(JobPeriod::HOURLY );
  35. }
  36. if($period && in_array(JobPeriod::DAILY, $period)){
  37. $this->availableValues['period'][JobPeriod::DAILY] = sl("lang")->tr(JobPeriod::DAILY);
  38. }
  39. if(!$period){
  40. $this->availableValues['period'] = [
  41. JobPeriod::HOURLY => sl("lang")->tr(JobPeriod::HOURLY ),
  42. JobPeriod::DAILY => sl("lang")->tr(JobPeriod::DAILY )
  43. ];
  44. }
  45. //days
  46. $this->availableValues['days'] = [];
  47. foreach (JobPeriod::DAYS_OF_WEEK as $day){
  48. $this->availableValues['days'][$day] = sl("lang")->tr($day);
  49. }
  50. if($this->formData){
  51. $this->data = $this->formData;
  52. return;
  53. }
  54. parent::read();
  55. $vmstate = $this->data['vmstate']==1 ? "on":"off" ;
  56. $this->data['vmstate']= $vmstate;
  57. //start_time
  58. if($this->data['start_time']){
  59. $this->data['start_time'] = substr($this->data['start_time'], 0,-3);
  60. }
  61. }
  62. public function create()
  63. {
  64. $this->resourceGuard()->snapshotJobLimit();
  65. //vmstate
  66. if(isset($this->formData['vmstate'])){
  67. $vmstate = $this->formData['vmstate']=="on" ? 1:0;
  68. $this->formData['vmstate']= $vmstate ;
  69. }
  70. //hosting_id
  71. $this->formData['hosting_id']= $this->getWhmcsParamByKey('serviceid');
  72. //vm_id
  73. $this->model->vm_id = \ModulesGarden\ProxmoxAddon\Core\Helper\sl('Vm')->getVmModel()->id;
  74. $this->formData['vmid'] = $this->model->vm_id;
  75. //fill from data
  76. $this->model->fill($this->formData)->save();
  77. sl('lang')->addReplacementConstant('name', $this->formData['name']);
  78. return (new HtmlDataJsonResponse())->setMessageAndTranslate('Snapshot Job :name: has been created successfully')
  79. ->addData('createJobButtonStatus', $this->resourceGuard()->hasSnapshotJobLimit())
  80. ->setCallBackFunction('pmToggleCreateJobButton');
  81. }
  82. public function update(){
  83. //vmstate
  84. if(isset($this->formData['vmstate'])){
  85. $vmstate = $this->formData['vmstate']=="on" ? 1:0;
  86. $this->formData['vmstate']= $vmstate ;
  87. }
  88. parent::update();
  89. sl('lang')->addReplacementConstant('name', $this->formData['name']);
  90. return (new HtmlDataJsonResponse())->setMessageAndTranslate('Snapshot Job :name: has updated successfully');
  91. }
  92. public function deleteMass()
  93. {
  94. foreach ($this->getRequestValue('massActions') as $id)
  95. {
  96. $this->model->where('id', $id)->delete();
  97. }
  98. return (new HtmlDataJsonResponse())->setMessageAndTranslate('The selected snapshot jobs have been deleted successfully')
  99. ->addData('createJobButtonStatus', $this->resourceGuard()->hasSnapshotJobLimit())
  100. ->setCallBackFunction('pmToggleCreateJobButton');
  101. }
  102. public function delete()
  103. {
  104. parent::delete();
  105. sl('lang')->addReplacementConstant('name', $this->formData['name']);
  106. return (new HtmlDataJsonResponse())->setMessageAndTranslate('Snapshot Job :name: has been deleted successfully')
  107. ->addData('createJobButtonStatus', $this->resourceGuard()->hasSnapshotJobLimit())
  108. ->setCallBackFunction('pmToggleCreateJobButton');
  109. }
  110. }