CreateAccount.php 2.5 KB

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