JobProvider.php 4.4 KB

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