CreateRessource.php 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. <?php
  2. /**
  3. * Class CreateRessource
  4. * User: Nessandro
  5. * Date: 2019-10-07
  6. * Time: 10:41
  7. * @package ThurData\Servers\KerioEmail\App\Libs\Kerio\Components\Api\Soap\Services\Create
  8. */
  9. namespace ThurData\Servers\KerioEmail\App\Libs\Kerio\Components\Api\Soap\Services\Create;
  10. use ThurData\Servers\KerioEmail\App\Enums\ProductParams;
  11. use ThurData\Servers\KerioEmail\App\Enums\Size;
  12. use ThurData\Servers\KerioEmail\App\Enums\Kerio;
  13. use ThurData\Servers\KerioEmail\App\Libs\Product\ProductManager;
  14. use ThurData\Servers\KerioEmail\App\Libs\Kerio\Components\Api\Soap\Interfaces\ApiService;
  15. use ThurData\Servers\KerioEmail\App\Libs\Kerio\Components\Api\Soap\Models\Ressource;
  16. use ThurData\Servers\KerioEmail\App\Libs\Kerio\Components\Api\Soap\Traits\ProductManagerHandler;
  17. use ThurData\Servers\KerioEmail\Core\Helper\ConfigOptionsHelper;
  18. class CreateRessource extends ApiService
  19. {
  20. use ProductManagerHandler;
  21. use \ThurData\Servers\KerioEmail\Core\UI\Traits\RequestObjectHandler;
  22. /**
  23. * added more conditions
  24. * @return bool
  25. */
  26. protected function isValid()
  27. {
  28. /**
  29. * check if product manager is set
  30. */
  31. if(!$this->productManager)
  32. {
  33. $this->setError('Product Manager Not Found');
  34. return false;
  35. }
  36. /**
  37. * domain name
  38. */
  39. if(!$this->formData['domain'])
  40. {
  41. $this->setError('Domain name can not be found.');
  42. return false;
  43. }
  44. /**
  45. *
  46. */
  47. return parent::isValid();
  48. }
  49. /**
  50. * @return mixed
  51. */
  52. protected function getRessources()
  53. {
  54. $ressources = $this->api->repository()->ressources->getRessources($this->formData['domain']);
  55. return $ressources;
  56. }
  57. /**
  58. * @return Ressource
  59. */
  60. protected function getModel()
  61. {
  62. /**
  63. * create new ressource in kerio
  64. */
  65. $ressource = new Ressource();
  66. $ressource->setName($this->formData['username'].'@'.$this->formData['domain']);
  67. $ressource->setPassword(html_entity_decode($this->formData['password']), ENT_QUOTES);
  68. /**
  69. * set ressource attributes
  70. */
  71. $ressource->setAttr(Ressource::ATTR_STATUS, $this->formData['status']);
  72. $ressource->setAttr(Ressource::ATTR_TYPE, $this->formData['type']);
  73. $ressource->setAttr(Ressource::ATTR_DISPLAY_NAME, $this->formData['display_name']);
  74. $ressource->setAttr(Ressource::ATTR_DESC, $this->formData['description']);
  75. $ressource->setAttr(Ressource::ATTR_NOTE, $this->formData['notes']);
  76. $ressource->setAttr(Ressource::ATTR_CONT, $this->formData['contact']);
  77. $ressource->setAttr(Ressource::ATTR_CONT_EMAIL, $this->formData['contact_mail']);
  78. $ressource->setAttr(Ressource::ATTR_CONT_PHONE, $this->formData['contact_phone']);
  79. $ressource->setAttr(Ressource::ATTR_SITE, $this->formData['site']);
  80. $ressource->setAttr(Ressource::ATTR_BUILDING, $this->formData['building']);
  81. $ressource->setAttr(Ressource::ATTR_FLOOR, $this->formData['floor']);
  82. $ressource->setAttr(Ressource::ATTR_ROOM, $this->formData['room']);
  83. $ressource->setAttr(Ressource::ATTR_CAPACITY, $this->formData['capacity']);
  84. $ressource->setAttr(Ressource::ATTR_STREET, $this->formData['street']);
  85. $ressource->setAttr(Ressource::ATTR_TOWN, $this->formData['town']);
  86. $ressource->setAttr(Ressource::ATTR_POSTAL_CODE, $this->formData['post_code']);
  87. $ressource->setAttr(Ressource::ATTR_COUNTY, $this->formData['county']);
  88. $ressource->setAttr(Ressource::ATTR_STATE, $this->formData['state']);
  89. $ressource->setAttr(Ressource::ATTR_AUTO, $this->formData['auto_accept'] == 'on' ? 'TRUE' : 'FALSE' );
  90. $ressource->setAttr(Ressource::ATTR_BUSY, $this->formData['auto_busy'] == 'on' ? 'TRUE' : 'FALSE' );
  91. foreach($this->productManager->getKerioConfiguration() as $key => $value)
  92. {
  93. $value = $value === ProductParams::SWITCHER_ENABLED ? Kerio::ATTR_ENABLED : Kerio::ATTR_DISABLED;
  94. $ressource->setAttr($key, $value);
  95. }
  96. return $ressource;
  97. }
  98. /**
  99. * @return bool|mixed|Ressource|void
  100. */
  101. protected function process()
  102. {
  103. /**
  104. *
  105. */
  106. $model = $this->getModel();
  107. /**
  108. * create ressource in ZIMBRA
  109. */
  110. $result = $this->api->ressource->create($model);
  111. /**
  112. * problem with create ressource
  113. */
  114. if(!$result)
  115. {
  116. $this->setError($this->api->ressource->getLastResult()->getLastErrorCode());
  117. return false;
  118. }
  119. return $result;
  120. }
  121. }