first commit
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace KupShop\EcomailBundle\Controller;
|
||||
|
||||
use KupShop\UserBundle\Util\UserConsent;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Routing\Attribute\Route;
|
||||
|
||||
class EcomailController extends AbstractController
|
||||
{
|
||||
#[Route('/_ecomail/unsubscribe', methods: ['POST'])]
|
||||
public function unsubscribe(Request $request, UserConsent $userConsent): Response
|
||||
{
|
||||
return $this->updateContact($request, $userConsent);
|
||||
}
|
||||
|
||||
#[Route('/_ecomail/update_contact', methods: ['POST'])]
|
||||
public function updateContact(Request $request, UserConsent $userConsent): Response
|
||||
{
|
||||
$content = $request->getContent();
|
||||
if (empty($content)) {
|
||||
return new Response('No content', 400);
|
||||
}
|
||||
$data = json_decode($content, true);
|
||||
if (!isset($data['payload'])) {
|
||||
return new Response('No payload', 400);
|
||||
}
|
||||
if (!isset($data['payload']['status'])) {
|
||||
return new Response('No status', 400);
|
||||
}
|
||||
|
||||
if (!in_array($data['payload']['status'], ['SUBSCRIBED', 'UNSUBSCRIBED'])) {
|
||||
return new Response('Nothing to do with status '.$data['payload']['status'], 200);
|
||||
}
|
||||
|
||||
$user = \User::createFromLogin($data['payload']['email']);
|
||||
if (!$user) {
|
||||
return new Response("User {$data['payload']['email']} doesn't exist", 400);
|
||||
}
|
||||
|
||||
$newsletter = ($data['payload']['status'] == 'SUBSCRIBED' ? 'Y' : 'N');
|
||||
$result = $userConsent->updateNewsletter($user->id, $newsletter, false);
|
||||
|
||||
return new Response((string) $result, 200);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user