CreateAccount.php 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  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. /**
  34. * run zimbra service
  35. */
  36. $result = $this->zimbraRunService($params);
  37. return $result;
  38. }catch (\Exception $ex)
  39. {
  40. /**
  41. * return some crit error
  42. */
  43. return $ex->getMessage();
  44. }
  45. }
  46. /**
  47. * @param null $params
  48. * @return mixed|string
  49. */
  50. protected function zimbraRunService($params = null)
  51. {
  52. /**
  53. *
  54. * get soap create domain service
  55. */
  56. $service =(new ZimbraManager())
  57. ->getApiByServer($params['serverid'])
  58. ->soap
  59. ->service()
  60. ->createDomain();
  61. /**
  62. * product manager allow to check product settings
  63. */
  64. $productManager = new ProductManager();
  65. $productManager->loadByHostingId($params['serviceid']);
  66. /**
  67. *
  68. * set params
  69. * run service (Create domain in Zimbra API)
  70. */
  71. $result = $service
  72. ->setProductManager($productManager)
  73. ->setFormData($params)
  74. ->run();
  75. /**
  76. * check service result & return error
  77. */
  78. if(!$result)
  79. {
  80. return $service->getError();
  81. }
  82. /**
  83. * return success response
  84. */
  85. return Response::SUCCESS;
  86. }
  87. }