66
77namespace BitCode \FI \Actions \MailerLite ;
88
9- use BitCode \FI \Log \LogHandler ;
109use BitCode \FI \Core \Util \Common ;
1110use BitCode \FI \Core \Util \HttpHelper ;
11+ use BitCode \FI \Log \LogHandler ;
1212
1313/**
1414 * Provide functionality for Record insert, upsert
@@ -59,7 +59,7 @@ public function existSubscriber($auth_token, $email)
5959
6060 $ response = HttpHelper::get ($ apiEndpoints , null , $ this ->_defaultHeader );
6161
62- return ! empty ( $ response ->data ) ;
62+ return $ response ->data -> id ?? false ;
6363 }
6464
6565 public function enableDoubleOptIn ($ auth_token )
@@ -126,6 +126,32 @@ public function addSubscriber($auth_token, $groupIds, $type, $finalData)
126126 return HttpHelper::post ($ apiEndpoint , $ requestParams , $ this ->_defaultHeader );
127127 }
128128
129+ public function deleteSubscriber ($ auth_token , $ finalData )
130+ {
131+ if (empty ($ finalData ['email ' ])) {
132+ return [
133+ 'success ' => false ,
134+ 'message ' => __ ('Required field Email is empty ' , 'bit-integrations ' ),
135+ 'code ' => 400
136+ ];
137+ }
138+
139+ // $isMailerLiteV2 = $this->_baseUrl === 'https://connect.mailerlite.com/api/';
140+ $ subscriberId = $ this ->existSubscriber ($ auth_token , $ finalData ['email ' ]);
141+
142+ if (empty ($ subscriberId )) {
143+ return [
144+ 'success ' => false ,
145+ 'message ' => __ ('Subscriber not exist ' , 'bit-integrations ' ),
146+ 'code ' => 400
147+ ];
148+ }
149+
150+ $ apiEndpoint = $ this ->_baseUrl . 'subscribers/ ' . $ subscriberId ;
151+
152+ return HttpHelper::request ($ apiEndpoint , 'DELETE ' , $ finalData , $ this ->_defaultHeader );
153+ }
154+
129155 public function generateReqDataFromFieldMap ($ data , $ fieldMap )
130156 {
131157 $ dataFinal = [];
@@ -148,16 +174,31 @@ public function execute(
148174 $ type ,
149175 $ fieldValues ,
150176 $ fieldMap ,
151- $ auth_token
177+ $ auth_token ,
178+ $ action
152179 ) {
153180 $ finalData = $ this ->generateReqDataFromFieldMap ($ fieldValues , $ fieldMap );
154- $ apiResponse = $ this ->addSubscriber ($ auth_token , $ groupId , $ type , $ finalData );
155181
156- if (isset ($ apiResponse ->data ->id ) || isset ($ apiResponse ->id )) {
157- $ res = ['success ' => true , 'message ' => isset ($ apiResponse ->update ) ? __ ('Subscriber updated successfully ' , 'bit-integrations ' ) : __ ('Subscriber created successfully ' , 'bit-integrations ' ), 'code ' => 200 ];
158- LogHandler::save ($ this ->_integrationID , wp_json_encode (['type ' => 'subscriber ' , 'type_name ' => 'add-subscriber ' ]), 'success ' , wp_json_encode ($ res ));
182+ switch ($ action ) {
183+ case 'delete_subscriber ' :
184+ $ apiResponse = $ this ->deleteSubscriber ($ auth_token , $ finalData );
185+ $ typeName = 'delete-subscriber ' ;
186+ $ res = ['success ' => true , 'message ' => __ ('Subscriber deleted successfully ' , 'bit-integrations ' ), 'code ' => 200 ];
187+
188+ break ;
189+
190+ default :
191+ $ apiResponse = $ this ->addSubscriber ($ auth_token , $ groupId , $ type , $ finalData );
192+ $ typeName = 'add-subscriber ' ;
193+ $ res = ['success ' => true , 'message ' => isset ($ apiResponse ->update ) ? __ ('Subscriber updated successfully ' , 'bit-integrations ' ) : __ ('Subscriber created successfully ' , 'bit-integrations ' ), 'code ' => 200 ];
194+
195+ break ;
196+ }
197+
198+ if (isset ($ apiResponse ->data ->id ) || isset ($ apiResponse ->id ) || str_starts_with ((string ) HttpHelper::$ responseCode , '20 ' )) {
199+ LogHandler::save ($ this ->_integrationID , wp_json_encode (['type ' => 'subscriber ' , 'type_name ' => $ typeName ]), 'success ' , wp_json_encode ($ res ));
159200 } else {
160- LogHandler::save ($ this ->_integrationID , wp_json_encode (['type ' => 'subscriber ' , 'type_name ' => ' add-subscriber ' ]), 'error ' , wp_json_encode ($ apiResponse ));
201+ LogHandler::save ($ this ->_integrationID , wp_json_encode (['type ' => 'subscriber ' , 'type_name ' => $ typeName ]), 'error ' , wp_json_encode ($ apiResponse ));
161202 }
162203
163204 return $ apiResponse ;
0 commit comments