107 lines
3.6 KiB
PHP
Executable File
107 lines
3.6 KiB
PHP
Executable File
<?php
|
|
|
|
namespace Mautic\LeadBundle\Controller;
|
|
|
|
use Doctrine\Persistence\ManagerRegistry;
|
|
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\BatchType;
|
|
use Mautic\LeadBundle\Model\ListModel;
|
|
use Mautic\LeadBundle\Model\SegmentActionModel;
|
|
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
|
|
use Symfony\Component\HttpFoundation\JsonResponse;
|
|
use Symfony\Component\HttpFoundation\Request;
|
|
use Symfony\Component\HttpFoundation\RequestStack;
|
|
|
|
class BatchSegmentController extends AbstractFormController
|
|
{
|
|
public function __construct(
|
|
private SegmentActionModel $segmentActionModel,
|
|
private ListModel $segmentModel,
|
|
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);
|
|
}
|
|
|
|
/**
|
|
* API for batch action.
|
|
*/
|
|
public function setAction(Request $request): JsonResponse
|
|
{
|
|
$params = $request->query->all()['lead_batch'] ?? $request->request->all()['lead_batch'] ?? [];
|
|
$contactIds = empty($params['ids']) ? [] : json_decode($params['ids']);
|
|
|
|
if ($contactIds && is_array($contactIds)) {
|
|
$segmentsToAdd = $params['add'] ?? [];
|
|
$segmentsToRemove = $params['remove'] ?? [];
|
|
|
|
if ($segmentsToAdd) {
|
|
$this->segmentActionModel->addContacts($contactIds, $segmentsToAdd);
|
|
}
|
|
|
|
if ($segmentsToRemove) {
|
|
$this->segmentActionModel->removeContacts($contactIds, $segmentsToRemove);
|
|
}
|
|
|
|
$this->addFlashMessage('mautic.lead.batch_leads_affected', [
|
|
'%count%' => count($contactIds),
|
|
]);
|
|
} 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_segment_batch_contact_set');
|
|
$lists = $this->segmentModel->getUserLists();
|
|
$items = [];
|
|
|
|
foreach ($lists as $list) {
|
|
$items[$list['name'].' ('.$list['id'].')'] = $list['id'];
|
|
}
|
|
|
|
return $this->delegateView(
|
|
[
|
|
'viewParameters' => [
|
|
'form' => $this->createForm(
|
|
BatchType::class,
|
|
[],
|
|
[
|
|
'items' => $items,
|
|
'action' => $route,
|
|
]
|
|
)->createView(),
|
|
],
|
|
'contentTemplate' => '@MauticLead/Batch/form.html.twig',
|
|
'passthroughVars' => [
|
|
'activeLink' => '#mautic_contact_index',
|
|
'mauticContent' => 'leadBatch',
|
|
'route' => $route,
|
|
],
|
|
]
|
|
);
|
|
}
|
|
}
|