Spaces:
No application file
No application file
File size: 3,730 Bytes
d2897cd |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
<?php
namespace Mautic\LeadBundle\Controller;
use Doctrine\Persistence\ManagerRegistry;
use Mautic\CoreBundle\Controller\AbstractFormController;
use Mautic\CoreBundle\Factory\MauticFactory;
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,
MauticFactory $factory,
ModelFactory $modelFactory,
UserHelper $userHelper,
CoreParametersHelper $coreParametersHelper,
EventDispatcherInterface $dispatcher,
Translator $translator,
FlashBag $flashBag,
RequestStack $requestStack,
CorePermissions $security
) {
parent::__construct($doctrine, $factory, $modelFactory, $userHelper, $coreParametersHelper, $dispatcher, $translator, $flashBag, $requestStack, $security);
}
/**
* API for batch action.
*/
public function setAction(Request $request): JsonResponse
{
$params = $request->get('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'];
}
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,
],
]
);
}
}
|