94 lines
3.4 KiB
PHP
Executable File
94 lines
3.4 KiB
PHP
Executable File
<?php
|
|
|
|
namespace Mautic\ChannelBundle\Controller;
|
|
|
|
use Doctrine\Persistence\ManagerRegistry;
|
|
use Mautic\ChannelBundle\Model\ChannelActionModel;
|
|
use Mautic\ChannelBundle\Model\FrequencyActionModel;
|
|
use Mautic\CoreBundle\Controller\AbstractFormController;
|
|
use Mautic\CoreBundle\Factory\ModelFactory;
|
|
use Mautic\CoreBundle\Helper\CoreParametersHelper;
|
|
use Mautic\CoreBundle\Helper\UserHelper;
|
|
use Mautic\CoreBundle\Security\Permissions\CorePermissions;
|
|
use Mautic\CoreBundle\Service\FlashBag;
|
|
use Mautic\CoreBundle\Translation\Translator;
|
|
use Mautic\LeadBundle\Form\Type\ContactChannelsType;
|
|
use Mautic\LeadBundle\Model\LeadModel;
|
|
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
|
|
use Symfony\Component\HttpFoundation\JsonResponse;
|
|
use Symfony\Component\HttpFoundation\Request;
|
|
use Symfony\Component\HttpFoundation\RequestStack;
|
|
|
|
class BatchContactController extends AbstractFormController
|
|
{
|
|
public function __construct(
|
|
private ChannelActionModel $channelActionModel,
|
|
private FrequencyActionModel $frequencyActionModel,
|
|
private LeadModel $contactModel,
|
|
ManagerRegistry $doctrine,
|
|
ModelFactory $modelFactory,
|
|
UserHelper $userHelper,
|
|
CoreParametersHelper $coreParametersHelper,
|
|
EventDispatcherInterface $dispatcher,
|
|
Translator $translator,
|
|
FlashBag $flashBag,
|
|
RequestStack $requestStack,
|
|
CorePermissions $security,
|
|
) {
|
|
parent::__construct($doctrine, $modelFactory, $userHelper, $coreParametersHelper, $dispatcher, $translator, $flashBag, $requestStack, $security);
|
|
}
|
|
|
|
/**
|
|
* Execute the batch action.
|
|
*/
|
|
public function setAction(Request $request): JsonResponse
|
|
{
|
|
$params = $request->get('contact_channels', []);
|
|
$ids = empty($params['ids']) ? [] : json_decode($params['ids']);
|
|
|
|
if ($ids && is_array($ids)) {
|
|
$subscribedChannels = $params['subscribed_channels'] ?? [];
|
|
$preferredChannel = $params['preferred_channel'] ?? null;
|
|
|
|
$this->channelActionModel->update($ids, $subscribedChannels);
|
|
$this->frequencyActionModel->update($ids, $params, $preferredChannel);
|
|
|
|
$this->addFlashMessage('mautic.lead.batch_leads_affected', [
|
|
'%count%' => count($ids),
|
|
]);
|
|
} else {
|
|
$this->addFlashMessage('mautic.core.error.ids.missing');
|
|
}
|
|
|
|
return new JsonResponse([
|
|
'closeModal' => true,
|
|
'flashes' => $this->getFlashContent(),
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* View for batch action.
|
|
*/
|
|
public function indexAction(): \Symfony\Component\HttpFoundation\Response
|
|
{
|
|
$route = $this->generateUrl('mautic_channel_batch_contact_set');
|
|
|
|
return $this->delegateView([
|
|
'viewParameters' => [
|
|
'form' => $this->createForm(ContactChannelsType::class, [], [
|
|
'action' => $route,
|
|
'channels' => $this->contactModel->getPreferenceChannels(),
|
|
'public_view' => false,
|
|
'save_button' => true,
|
|
])->createView(),
|
|
],
|
|
'contentTemplate' => '@MauticLead/Batch/channel.html.twig',
|
|
'passthroughVars' => [
|
|
'activeLink' => '#mautic_contact_index',
|
|
'mauticContent' => 'leadBatch',
|
|
'route' => $route,
|
|
],
|
|
]);
|
|
}
|
|
}
|