1: <?php
2: namespace Ctct\Services;
3:
4: use Ctct\Util\RestClient;
5: use Ctct\Util\Config;
6: use Ctct\Components\EmailMarketing\Schedule;
7: use Ctct\Components\EmailMarketing\TestSend;
8: use Ctct\Components\Activities\Activity;
9: use Ctct\Components\Activities\AddContacts;
10: use Ctct\Components\Activities\RemoveFromLists;
11: use Ctct\Components\Activities\ExportContacts;
12: use Ctct\Components\Activities\ClearLists;
13:
14: 15: 16: 17: 18: 19:
20: class ActivityService extends BaseService
21: {
22:
23: 24: 25: 26: 27:
28: public function getActivities($accessToken)
29: {
30: $baseUrl = Config::get('endpoints.base_url') . Config::get('endpoints.activities');
31: $url = $this->buildUrl($baseUrl);
32: $response = parent::getRestClient()->get($url, parent::getHeaders($accessToken));
33: $jsonResponse = json_decode($response->body, true);
34: $activities = array();
35:
36: foreach ($jsonResponse as $activity) {
37: $activities[] = Activity::create($activity);
38: }
39: return $activities;
40: }
41:
42: 43: 44: 45: 46: 47:
48: public function getActivity($accessToken, $activityId)
49: {
50: $baseUrl = Config::get('endpoints.base_url') . sprintf(Config::get('endpoints.activity'), $activityId);
51: $url = $this->buildUrl($baseUrl);
52: $response = parent::getRestClient()->get($url, parent::getHeaders($accessToken));
53: return Activity::create(json_decode($response->body, true));
54: }
55:
56: 57: 58: 59: 60: 61:
62: public function createAddContactsActivity($accessToken, AddContacts $addContacts)
63: {
64: $baseUrl = Config::get('endpoints.base_url') . Config::get('endpoints.add_contacts_activity');
65: $url = $this->buildUrl($baseUrl);
66: $response = parent::getRestClient()->post($url, parent::getHeaders($accessToken), $addContacts->toJson());
67: return Activity::create(json_decode($response->body, true));
68: }
69:
70: 71: 72: 73: 74: 75:
76: public function addClearListsActivity($accessToken, Array $lists)
77: {
78: $baseUrl = Config::get('endpoints.base_url') . Config::get('endpoints.clear_lists_activity');
79: $url = $this->buildUrl($baseUrl);
80: $payload = array('lists' => $lists);
81: $response = parent::getRestClient()->post($url, parent::getHeaders($accessToken), json_encode($payload));
82: return Activity::create(json_decode($response->body, true));
83: }
84:
85: 86: 87: 88: 89: 90:
91: public function addExportContactsActivity($accessToken, ExportContacts $exportContacts)
92: {
93: $baseUrl = Config::get('endpoints.base_url') . Config::get('endpoints.export_contacts_activity');
94: $url = $this->buildUrl($baseUrl);
95: $response = parent::getRestClient()->post($url, parent::getHeaders($accessToken), json_encode($exportContacts));
96: return Activity::create(json_decode($response->body, true));
97: }
98:
99: 100: 101: 102: 103: 104:
105: public function addRemoveContactsFromListsActivity($accessToken, Array $emailAddresses, Array $lists)
106: {
107: $baseUrl = Config::get('endpoints.base_url') . Config::get('endpoints.remove_from_lists_activity');
108: $url = $this->buildUrl($baseUrl);
109: $payload = array(
110: 'import_data' => array(),
111: 'lists' => $lists
112: );
113:
114: foreach ($emailAddresses as $emailAddress) {
115: $payload['import_data'][] = array('email_addresses' => array($emailAddress));
116: }
117:
118: $response = parent::getRestClient()->post($url, parent::getHeaders($accessToken), json_encode($payload));
119: return Activity::create(json_decode($response->body, true));
120: }
121: }
122: