Services.php 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292
  1. <?php
  2. namespace ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap;
  3. use ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Repository\ClassOfServices;
  4. use ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Services\Create\CreateAccount;
  5. use ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Services\Create\CreateAccountAlias;
  6. use ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Services\Create\CreateAccountCos;
  7. use ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Services\Create\CreateAccountCosQuota;
  8. use ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Services\Create\CreateDistributionList;
  9. use ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Services\Create\CreateDomain;
  10. use ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Services\Create\CreateDomainAlias;
  11. use ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Services\Delete\DeleteAccount;
  12. use ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Services\Delete\DeleteAccountAlias;
  13. use ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Services\Delete\DeleteDistributionList;
  14. use ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Services\Delete\DeleteDomain;
  15. use ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Services\Delete\DeleteDomainAlias;
  16. use ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Services\Sso\ClientSingleSignOn;
  17. use ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Services\Sso\ClientSingleSignOnToken;
  18. use ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Services\Update\ChangePackage;
  19. use ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Services\Update\ChangePackageConfigOptions;
  20. use ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Services\Update\ChangePackageCosQuota;
  21. use ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Services\Update\ChangePackageDedicatedCos;
  22. use ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Services\Update\SuspendDomain;
  23. use ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Services\Update\UpdateDomain;
  24. use ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Services\Update\UnsuspendDomain;
  25. use ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Services\Update\UpdateAccount;
  26. use ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Services\Update\UpdateAccountCosQuota;
  27. use ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Services\Update\UpdateAccountPassword;
  28. use ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Services\Update\UpdateAccountStatus;
  29. use ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Services\Update\UpdateDistributionList;
  30. use ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Traits\ApiClientHandler;
  31. /**
  32. *
  33. * Class return supported services
  34. *
  35. * Created by PhpStorm.
  36. * User: Tomasz Bielecki ( tomasz.bi@modulesgarden.com )
  37. * Date: 03.10.19
  38. * Time: 13:15
  39. * Class Services
  40. */
  41. class Services
  42. {
  43. /**
  44. * API Client handler
  45. */
  46. use ApiClientHandler;
  47. /**
  48. * Services constructor.
  49. * @param Client $api
  50. */
  51. public function __construct(Client $api)
  52. {
  53. $this->setApi($api);
  54. }
  55. /**
  56. *
  57. * create account in zimbra, depends of product configuration
  58. * @param string $type
  59. * @return CreateAccount|CreateAccountCos|CreateAccountCosQuota
  60. */
  61. public function createAccount($type = ClassOfServices::CUSTOM_ZIMBRA)
  62. {
  63. switch ($type)
  64. {
  65. case ClassOfServices::CUSTOM_ZIMBRA:
  66. $service = new CreateAccount($this->getApi());
  67. break;
  68. case ClassOfServices::ZIMBRA_CONFIG_OPTIONS:
  69. $service = new CreateAccountCosQuota($this->getApi());
  70. break;
  71. case ClassOfServices::CLASS_OF_SERVICE_QUOTA:
  72. $service = new CreateAccountCosQuota($this->getApi());
  73. break;
  74. default:
  75. $service = new CreateAccountCosQuota($this->getApi());
  76. break;
  77. }
  78. return $service;
  79. }
  80. /**
  81. * create alias for account in zimbra
  82. *
  83. * @return CreateAccountAlias
  84. */
  85. public function createAccountAlias()
  86. {
  87. return new CreateAccountAlias($this->getApi());
  88. }
  89. /**
  90. * create distribution list (mailing list)
  91. *
  92. * @return CreateDistributionList
  93. */
  94. public function createDistributionList()
  95. {
  96. return new CreateDistributionList($this->getApi());
  97. }
  98. /**
  99. * create domain in zimbra (main domain for account)
  100. *
  101. *
  102. * @return CreateDomain
  103. */
  104. public function createDomain()
  105. {
  106. return new CreateDomain($this->getApi());
  107. }
  108. /**
  109. * create alias domain for account
  110. *
  111. * @return CreateDomainAlias
  112. */
  113. public function createDomainAlias()
  114. {
  115. return new CreateDomainAlias($this->getApi());
  116. }
  117. /**
  118. *
  119. * change product package
  120. *
  121. * @return ChangePackage
  122. */
  123. public function changePackages($type = ClassOfServices::CUSTOM_ZIMBRA)
  124. {
  125. switch ($type)
  126. {
  127. case ClassOfServices::CUSTOM_ZIMBRA:
  128. $service = new ChangePackage($this->getApi());
  129. break;
  130. case ClassOfServices::ZIMBRA_CONFIG_OPTIONS:
  131. $service = new ChangePackageConfigOptions($this->getApi());
  132. break;
  133. case ClassOfServices::CLASS_OF_SERVICE_QUOTA:
  134. $service = new ChangePackageCosQuota($this->getApi());
  135. break;
  136. default:
  137. $service = new ChangePackageDedicatedCos($this->getApi());
  138. break;
  139. }
  140. return $service;
  141. }
  142. /**
  143. * update account in panel
  144. *
  145. * @param string $type
  146. * @return UpdateAccount|UpdateAccountCosQuota
  147. */
  148. public function updateAccount($type = ClassOfServices::CUSTOM_ZIMBRA)
  149. {
  150. switch ($type)
  151. {
  152. case ClassOfServices::CUSTOM_ZIMBRA:
  153. $service = new UpdateAccount($this->getApi());
  154. break;
  155. case ClassOfServices::ZIMBRA_CONFIG_OPTIONS:
  156. $service = new UpdateAccount($this->getApi());
  157. break;
  158. case ClassOfServices::CLASS_OF_SERVICE_QUOTA:
  159. $service = new UpdateAccountCosQuota($this->getApi());
  160. break;
  161. default:
  162. $service = new UpdateAccount($this->getApi());
  163. break;
  164. }
  165. return $service;
  166. }
  167. /**
  168. * update account status
  169. *
  170. * @return UpdateAccountStatus
  171. */
  172. public function updateAccountStatus()
  173. {
  174. return new UpdateAccountStatus($this->getApi());
  175. }
  176. /**
  177. * change password service
  178. *
  179. * @return UpdateAccountPassword
  180. */
  181. public function updateAccountPassword()
  182. {
  183. return new UpdateAccountPassword($this->getApi());
  184. }
  185. /**
  186. * distribution (mailing) list update service
  187. *
  188. * @return UpdateDistributionList
  189. */
  190. public function updateDistributionList()
  191. {
  192. return new UpdateDistributionList($this->getApi());
  193. }
  194. /**
  195. * suspend domain in zimbra
  196. *
  197. * @return SuspendDomain
  198. */
  199. public function suspendDomain()
  200. {
  201. return new SuspendDomain($this->getApi());
  202. }
  203. /**
  204. * unsuspend domain
  205. *
  206. * @return UnsuspendDomain
  207. */
  208. public function unsuspendDomain()
  209. {
  210. return new UnsuspendDomain($this->getApi());
  211. }
  212. /**
  213. * delete account in panel
  214. *
  215. * @return DeleteAccount
  216. */
  217. public function deleteAccount()
  218. {
  219. return new DeleteAccount($this->getApi());
  220. }
  221. /**
  222. * delete domain & each related things
  223. *
  224. * @return DeleteDomain
  225. */
  226. public function deleteDomain()
  227. {
  228. return new DeleteDomain($this->getApi());
  229. }
  230. /**
  231. * delete account alias
  232. *
  233. * @return DeleteAccountAlias
  234. */
  235. public function deleteAccountAlias()
  236. {
  237. return new DeleteAccountAlias($this->getApi());
  238. }
  239. /**
  240. * delete distribution list (mailing list)
  241. *
  242. * @return DeleteDistributionList
  243. */
  244. public function deleteDistributionList()
  245. {
  246. return new DeleteDistributionList($this->getApi());
  247. }
  248. /**
  249. * delete domain alias
  250. *
  251. * @return DeleteDomainAlias
  252. */
  253. public function deleteDomainAlias()
  254. {
  255. return new DeleteDomainAlias($this->getApi());
  256. }
  257. /**
  258. *
  259. * return sso token
  260. * @return ClientSingleSignOnToken
  261. */
  262. public function clientSingleSignOnToken()
  263. {
  264. return new ClientSingleSignOnToken($this->getApi());
  265. }
  266. }