/home/techb158/immovalet.com/platform/plugins/newsletter/src/Http/Controllers
Edit: /home/techb158/immovalet.com/platform/plugins/newsletter/src/Http/Controllers/PublicController.php (4626B)
newsletterRepository = $newsletterRepository;
}
/**
* @param NewsletterRequest $request
* @param BaseHttpResponse $response
* @return BaseHttpResponse
*/
public function postSubscribe(NewsletterRequest $request, BaseHttpResponse $response)
{
$newsletter = $this->newsletterRepository->getFirstBy(['email' => $request->input('email')]);
if (!$newsletter) {
$newsletter = $this->newsletterRepository->createOrUpdate($request->input());
$mailchimpApiKey = setting('newsletter_mailchimp_api_key',
config('plugins.newsletter.general.mailchimp.api_key'));
$mailchimpListId = setting('newsletter_mailchimp_list_id',
config('plugins.newsletter.general.mailchimp.list_id'));
if ($mailchimpApiKey && $mailchimpListId) {
Newsletter::subscribe($newsletter->email);
}
$sendgridApiKey = setting('newsletter_sendgrid_api_key',
config('plugins.newsletter.general.sendgrid.api_key'));
$sendgridListId = setting('newsletter_sendgrid_list_id',
config('plugins.newsletter.general.sendgrid.list_id'));
if ($sendgridApiKey && $sendgridListId) {
$sg = new SendGrid($sendgridApiKey);
$requestBody = json_decode(
'{
"list_ids": [
"' . $sendgridListId . '"
],
"contacts": [
{
"first_name": "' . $request->input('first_name') . '",
"last_name": "' . $request->input('last_name') . '",
"email": "' . $request->input('email') . '"
}
]
}'
);
try {
$sg->client->marketing()->contacts()->put($requestBody);
} catch (Exception $exception) {
info('Caught exception: ' . $exception->getMessage());
}
}
}
event(new SubscribeNewsletterEvent($newsletter));
return $response->setMessage(__('Subscribe to newsletter successfully!'));
}
/**
* Unsubscribe newsletter with token. change status to false
* @param int $id
* @param Request $request
* @param BaseHttpResponse $response
* @return BaseHttpResponse
*/
public function getUnsubscribe($id, Request $request, BaseHttpResponse $response)
{
if (!URL::hasValidSignature($request)) {
abort(404);
}
$newsletter = $this->newsletterRepository->getFirstBy([
'id' => $id,
'status' => NewsletterStatusEnum::SUBSCRIBED,
]);
if ($newsletter) {
$newsletter->status = NewsletterStatusEnum::UNSUBSCRIBED;
$this->newsletterRepository->createOrUpdate($newsletter);
$mailchimpApiKey = setting('newsletter_mailchimp_api_key',
config('plugins.newsletter.general.mailchimp.api_key'));
$mailchimpListId = setting('newsletter_mailchimp_list_id',
config('plugins.newsletter.general.mailchimp.list_id'));
if ($mailchimpApiKey && $mailchimpListId) {
Newsletter::unsubscribe($newsletter->email);
}
return $response
->setNextUrl(route('public.index'))
->setMessage(__('Unsubscribe to newsletter successfully'));
}
return $response
->setError()
->setNextUrl(route('public.index'))
->setMessage(__('Your email does not exist in the system or you have unsubscribed already!'));
}
}