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:
9: 10: 11: 12: 13: 14:
15: class CampaignScheduleService extends BaseService
16: {
17: 18: 19: 20: 21: 22: 23:
24: public function addSchedule($accessToken, $campaignId, Schedule $schedule)
25: {
26: $baseUrl = Config::get('endpoints.base_url') .
27: sprintf(Config::get('endpoints.campaign_schedules'), $campaignId);
28: $url = $this->buildUrl($baseUrl);
29: $response = parent::getRestClient()->post($url, parent::getHeaders($accessToken), $schedule->toJson());
30: return Schedule::create(json_decode($response->body, true));
31: }
32:
33: 34: 35: 36: 37: 38:
39: public function getSchedules($accessToken, $campaignId)
40: {
41: $baseUrl = Config::get('endpoints.base_url') .
42: sprintf(Config::get('endpoints.campaign_schedules'), $campaignId);
43: $url = $this->buildUrl($baseUrl);
44: $response = parent::getRestClient()->get($url, parent::getHeaders($accessToken));
45:
46: $schedules = array();
47:
48: foreach (json_decode($response->body, true) as $schedule) {
49: $schedules[] = Schedule::create($schedule);
50: }
51:
52: return $schedules;
53: }
54:
55: 56: 57: 58: 59: 60: 61:
62: public function getSchedule($accessToken, $campaignId, $scheduleId)
63: {
64: $baseUrl = Config::get('endpoints.base_url') .
65: sprintf(Config::get('endpoints.campaign_schedule'), $campaignId, $scheduleId);
66: $url = $this->buildUrl($baseUrl);
67: $response = parent::getRestClient()->get($url, parent::getHeaders($accessToken));
68: return Schedule::create(json_decode($response->body, true));
69: }
70:
71: 72: 73: 74: 75: 76: 77:
78: public function updateSchedule($accessToken, $campaignId, Schedule $schedule)
79: {
80: $baseUrl = Config::get('endpoints.base_url') .
81: sprintf(Config::get('endpoints.campaign_schedule'), $campaignId, $schedule->id);
82: $url = $this->buildUrl($baseUrl);
83: $response = parent::getRestClient()->put($url, parent::getHeaders($accessToken), $schedule->toJson());
84: return Schedule::create(json_decode($response->body, true));
85: }
86:
87: 88: 89: 90: 91: 92: 93:
94: public function deleteSchedule($accessToken, $campaignId, $scheduleId)
95: {
96: $baseUrl = Config::get('endpoints.base_url') .
97: sprintf(Config::get('endpoints.campaign_schedule'), $campaignId, $scheduleId);
98: $url = $this->buildUrl($baseUrl);
99: $response = parent::getRestClient()->delete($url, parent::getHeaders($accessToken));
100: return ($response->info['http_code'] == 204) ? true : false;
101: }
102:
103: 104: 105: 106: 107: 108: 109:
110: public function sendTest($accessToken, $campaignId, TestSend $test_send)
111: {
112: $baseUrl = Config::get('endpoints.base_url') .
113: sprintf(Config::get('endpoints.campaign_test_sends'), $campaignId);
114: $url = $this->buildUrl($baseUrl);
115: $response = parent::getRestClient()->post($url, parent::getHeaders($accessToken), $test_send->toJson());
116: return TestSend::create(json_decode($response->body, true));
117: }
118: }
119: