ldc-crm/app/Http/Controllers/Api/WebhookController.php

47 lines
1.4 KiB
PHP
Raw Normal View History

<?php
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use App\Lib\Helpers\MailjetHelper;
use App\Models\Brand;
use Illuminate\Http\Request;
2026-10-08 10:06:20 +02:00
use App\Exceptions\MailjetException;
class WebhookController extends Controller
{
/**
2026-10-08 10:06:20 +02:00
* Handles incoming Mailjet webhook events
*
* @param Request $request
2026-10-08 10:06:20 +02:00
* @return \Illuminate\Http\JsonResponse
*/
2026-10-08 10:06:20 +02:00
public function handleMailjetWebhook(Request $request): \Illuminate\Http\JsonResponse
{
$data = $request->all();
if ($data["event"] === "spam") {
2026-10-08 10:06:20 +02:00
try {
$campaign = MailjetHelper::getCampaign($data['mj_campaign_id']);
2026-10-08 10:06:20 +02:00
if (!$campaign) {
return response()->json(['status' => 'error', 'message' => 'Campaign not found']);
}
$brand = Brand::getBrandByNewsletterEmail($campaign[0]['FromEmail']);
if (!$brand) {
return response()->json(['status' => 'error', 'message' => 'Brand not found']);
}
2026-10-08 10:06:20 +02:00
MailjetHelper::unsubscribeContact($brand, $data['email']);
return response()->json(['status' => 'ok']);
} catch (MailjetException $e) {
report($e);
return response()->json(['status' => 'error', 'message' => $e->returnedMessage]);
}
}//end if
}
}