JobProvider.php 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  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->formData['vm_id']= \ModulesGarden\ProxmoxAddon\Core\Helper\sl('Vm')->getVmModel()->id;
  74. //fill from data
  75. $this->model->fill($this->formData)->save();
  76. sl('lang')->addReplacementConstant('name', $this->formData['name']);
  77. return (new HtmlDataJsonResponse())->setMessageAndTranslate('Snapshot Job :name: has been created successfully')
  78. ->addData('createJobButtonStatus', $this->resourceGuard()->hasSnapshotJobLimit())
  79. ->setCallBackFunction('pmToggleCreateJobButton');
  80. }
  81. public function update(){
  82. //vmstate
  83. if(isset($this->formData['vmstate'])){
  84. $vmstate = $this->formData['vmstate']=="on" ? 1:0;
  85. $this->formData['vmstate']= $vmstate ;
  86. }
  87. parent::update();
  88. sl('lang')->addReplacementConstant('name', $this->formData['name']);
  89. return (new HtmlDataJsonResponse())->setMessageAndTranslate('Snapshot Job :name: has updated successfully');
  90. }
  91. public function deleteMass()
  92. {
  93. foreach ($this->getRequestValue('massActions') as $id)
  94. {
  95. $this->model->where('id', $id)->delete();
  96. }
  97. return (new HtmlDataJsonResponse())->setMessageAndTranslate('The selected snapshot jobs have been deleted successfully')
  98. ->addData('createJobButtonStatus', $this->resourceGuard()->hasSnapshotJobLimit())
  99. ->setCallBackFunction('pmToggleCreateJobButton');
  100. }
  101. public function delete()
  102. {
  103. parent::delete();
  104. sl('lang')->addReplacementConstant('name', $this->formData['name']);
  105. return (new HtmlDataJsonResponse())->setMessageAndTranslate('Snapshot Job :name: has been deleted successfully')
  106. ->addData('createJobButtonStatus', $this->resourceGuard()->hasSnapshotJobLimit())
  107. ->setCallBackFunction('pmToggleCreateJobButton');
  108. }
  109. }