Services.php 10 KB

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