CreateAccount.php 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. <?php
  2. namespace ModulesGarden\Servers\ZimbraEmail\App\Http\Actions;
  3. use ModulesGarden\Servers\ZimbraEmail\App\Enums\Response;
  4. use ModulesGarden\Servers\ZimbraEmail\App\Helpers\ZimbraManager;
  5. use ModulesGarden\Servers\ZimbraEmail\App\Libs\Product\ProductManager;
  6. use ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Models\Domain;
  7. use ModulesGarden\Servers\ZimbraEmail\App\Traits\ExtensionsCheckerTrait;
  8. use ModulesGarden\Servers\ZimbraEmail\Core\App\Controllers\Instances\AddonController;
  9. use ModulesGarden\Servers\ZimbraEmail\App\Traits\HostingService;
  10. /**
  11. *
  12. * Created by PhpStorm.
  13. * User: Tomasz Bielecki ( tomasz.bi@modulesgarden.com )
  14. * Date: 09.09.19
  15. * Time: 15:14
  16. * Class CreateAccount
  17. */
  18. class CreateAccount extends AddonController
  19. {
  20. use ExtensionsCheckerTrait;
  21. use HostingService;
  22. /**
  23. * create domain in zimbra
  24. *
  25. * @param null $params
  26. * @return string
  27. */
  28. public function execute($params = null)
  29. {
  30. try{
  31. /**
  32. * check if extensions are installed
  33. */
  34. $this->checkExtensionOrThrowError();
  35. //update domain
  36. if($params['customfields']['maildomain']){
  37. $params['domain'] = $params['customfields']['maildomain'];
  38. $this->hosting()->domain = $params['domain'];
  39. $this->hosting()->save();
  40. }
  41. /**
  42. * run zimbra service
  43. */
  44. $result = $this->zimbraRunService($params);
  45. return $result;
  46. }catch (\Exception $ex)
  47. {
  48. /**
  49. * return some crit error
  50. */
  51. return $ex->getMessage();
  52. }
  53. }
  54. /**
  55. * @param null $params
  56. * @return mixed|string
  57. */
  58. protected function zimbraRunService($params = null)
  59. {
  60. /**
  61. *
  62. * get soap create domain service
  63. */
  64. $service =(new ZimbraManager())
  65. ->getApiByServer($params['serverid'])
  66. ->soap
  67. ->service()
  68. ->createDomain();
  69. /**
  70. * product manager allow to check product settings
  71. */
  72. $productManager = new ProductManager();
  73. $productManager->loadByHostingId($params['serviceid']);
  74. /**
  75. *
  76. * set params
  77. * run service (Create domain in Zimbra API)
  78. */
  79. $result = $service
  80. ->setProductManager($productManager)
  81. ->setFormData($params)
  82. ->run();
  83. /**
  84. * check service result & return error
  85. */
  86. if(!$result)
  87. {
  88. return $service->getError();
  89. }
  90. /**
  91. * return success response
  92. */
  93. return Response::SUCCESS;
  94. }
  95. }