1: <?php
2: namespace Ctct\Services;
3:
4: use Ctct\Util\RestClient;
5: use Ctct\Util\Config;
6: use Ctct\Components\EmailMarketing\Campaign;
7: use Ctct\Components\ResultSet;
8:
9: 10: 11: 12: 13: 14:
15: class EmailMarketingService extends BaseService
16: {
17: 18: 19: 20: 21: 22:
23: public function addCampaign($accessToken, Campaign $campaign)
24: {
25: $baseUrl = Config::get('endpoints.base_url') . Config::get('endpoints.campaigns');
26: $url = $this->buildUrl($baseUrl);
27: $response = parent::getRestClient()->post($url, parent::getHeaders($accessToken), $campaign->toJson());
28: return Campaign::create(json_decode($response->body, true));
29: }
30:
31: 32: 33: 34: 35: 36:
37: public function getCampaigns($accessToken, Array $params = null)
38: {
39: $baseUrl = Config::get('endpoints.base_url') . Config::get('endpoints.campaigns');
40: $url = $this->buildUrl($baseUrl, $params);
41: $response = parent::getRestClient()->get($url, parent::getHeaders($accessToken));
42: $body = json_decode($response->body, true);
43: $campaigns = array();
44: foreach ($body['results'] as $contact) {
45: $campaigns[] = Campaign::createSummary($contact);
46: }
47: return new ResultSet($campaigns, $body['meta']);
48: }
49:
50: 51: 52: 53: 54: 55:
56: public function getCampaign($accessToken, $campaign_id)
57: {
58: $baseUrl = Config::get('endpoints.base_url') . sprintf(Config::get('endpoints.campaign'), $campaign_id);
59: $url = $this->buildUrl($baseUrl);
60: $response = parent::getRestClient()->get($url, parent::getHeaders($accessToken));
61: return Campaign::create(json_decode($response->body, true));
62: }
63:
64: 65: 66: 67: 68: 69:
70: public function deleteCampaign($accessToken, $campaign_id)
71: {
72: $baseUrl = Config::get('endpoints.base_url') . sprintf(Config::get('endpoints.campaign'), $campaign_id);
73: $url = $this->buildUrl($baseUrl);
74: $response = parent::getRestClient()->delete($url, parent::getHeaders($accessToken));
75: return ($response->info['http_code'] == 204) ? true : false;
76: }
77:
78: 79: 80: 81: 82: 83:
84: public function updateCampaign($accessToken, Campaign $campaign)
85: {
86: $baseUrl = Config::get('endpoints.base_url') . sprintf(Config::get('endpoints.campaign'), $campaign->id);
87: $url = $this->buildUrl($baseUrl);
88: $response = parent::getRestClient()->put($url, parent::getHeaders($accessToken), $campaign->toJson());
89: return Campaign::create(json_decode($response->body, true));
90: }
91: }
92: