Services.php 8.8 KB

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