Services.php 10 KB

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