Skip to content

Commit 9fc123c

Browse files
authored
Merge pull request #32 from Leuchtfeuer/MTC-8651-m6-update-company-points
MTC-8651 M6 update company points
2 parents ffdaccd + 2347c8c commit 9fc123c

50 files changed

Lines changed: 513 additions & 1163 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Command/RecalculateCompanyScoresCommand.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public function __construct(
2424
protected CompanyScoreModel $companyScoreModel,
2525
protected CountQueueHelper $countQueueHelper,
2626
protected Config $config,
27-
protected EventDispatcherInterface $dispatcher
27+
protected EventDispatcherInterface $dispatcher,
2828
) {
2929
parent::__construct($pathsHelper, $coreParametersHelper);
3030
}
@@ -84,7 +84,6 @@ protected function execute(InputInterface $input, OutputInterface $output, bool
8484
? min($maxCompanies, $remainingCompanies)
8585
: $remainingCompanies;
8686

87-
$batchMessage =
8887
$output->writeln('<info>'.$companiesToProcess.' company scores to be recalculated in batches of '.$batch.'</info>');
8988

9089
$progressBar = new ProgressBar($output, $companiesToProcess);

Config/config.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
return [
44
'name' => 'Company Points by Leuchtfeuer',
55
'description' => 'Massively enhanced Company-based Scoring. Point-based and even other (!) triggers and multiple triggered actions, all that for Companies.',
6-
'version' => '5.0.0',
6+
'version' => '6.0.0',
77
'author' => 'Leuchtfeuer Digital Marketing GmbH',
88
'routes' => [
99
'main' => [

Config/services.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
$services->set(CoreLeadRepository::class, PluginLeadRepository::class)
2727
->tag(Doctrine\Bundle\DoctrineBundle\DependencyInjection\Compiler\ServiceRepositoryCompilerPass::REPOSITORY_SERVICE_TAG);
2828

29-
3029
$services->alias('mautic.companypoint.model.trigger', MauticPlugin\LeuchtfeuerCompanyPointsBundle\Model\CompanyTriggerModel::class);
3130
$services->alias('mautic.companypoint.model.triggerevent', MauticPlugin\LeuchtfeuerCompanyPointsBundle\Model\CompanyTriggerEventModel::class);
32-
};
31+
};

Controller/TriggerController.php

Lines changed: 39 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
namespace MauticPlugin\LeuchtfeuerCompanyPointsBundle\Controller;
44

5-
use Mautic\CoreBundle\Controller\FormController;
5+
use Mautic\CoreBundle\Controller\AbstractStandardFormController;
66
use Mautic\CoreBundle\Factory\PageHelperFactoryInterface;
77
use MauticPlugin\LeuchtfeuerCompanyPointsBundle\Entity\CompanyTrigger;
88
use MauticPlugin\LeuchtfeuerCompanyPointsBundle\Entity\CompanyTriggerEvent;
@@ -13,13 +13,29 @@
1313
use Symfony\Component\HttpFoundation\RedirectResponse;
1414
use Symfony\Component\HttpFoundation\Request;
1515
use Symfony\Component\HttpFoundation\Response;
16+
use Symfony\Contracts\Service\Attribute\Required;
1617

17-
class TriggerController extends FormController
18+
class TriggerController extends AbstractStandardFormController
1819
{
20+
private CompanyTriggerModel $triggerModel;
21+
private CompanyTriggerEventModel $triggerEventModel;
22+
23+
#[Required]
24+
public function setTriggerModel(CompanyTriggerModel $triggerModel): void
25+
{
26+
$this->triggerModel = $triggerModel;
27+
}
28+
29+
#[Required]
30+
public function setTriggerEventModel(CompanyTriggerEventModel $triggerEventModel): void
31+
{
32+
$this->triggerEventModel = $triggerEventModel;
33+
}
34+
1935
/**
2036
* @param int $page
2137
*
22-
* @return array<mixed>|RedirectResponse|JsonResponse|\Symfony\Component\HttpFoundation\RedirectResponse|Response
38+
* @return array<mixed>|RedirectResponse|JsonResponse|RedirectResponse|Response
2339
* */
2440
public function indexAction(Request $request, PageHelperFactoryInterface $pageHelperFactory, $page = 1)
2541
{
@@ -50,7 +66,7 @@ public function indexAction(Request $request, PageHelperFactoryInterface $pageHe
5066
$filter = ['string' => $search, 'force' => []];
5167
$orderBy = $request->getSession()->get('mautic.companypoint.trigger.orderby', 't.name');
5268
$orderByDir = $request->getSession()->get('mautic.companypoint.trigger.orderbydir', 'ASC');
53-
$triggers = $this->getModel('companypoint.trigger')->getEntities(
69+
$triggers = $this->triggerModel->getEntities(
5470
[
5571
'start' => $start,
5672
'limit' => $limit,
@@ -103,7 +119,7 @@ public function indexAction(Request $request, PageHelperFactoryInterface $pageHe
103119
*
104120
* @param int $objectId
105121
*
106-
* @return array<mixed>|RedirectResponse|JsonResponse|\Symfony\Component\HttpFoundation\RedirectResponse|Response
122+
* @return array<mixed>|RedirectResponse|JsonResponse|RedirectResponse|Response
107123
*/
108124
public function viewAction(Request $request, $objectId)
109125
{
@@ -118,7 +134,7 @@ public function viewAction(Request $request, $objectId)
118134
'companypoint:triggers:publish',
119135
], 'RETURN_ARRAY');
120136

121-
$entity = $this->getModel('companypoint.trigger')->getEntity($objectId);
137+
$entity = $this->triggerModel->getEntity($objectId);
122138

123139
if (null === $entity) {
124140
// set the return URL
@@ -148,7 +164,6 @@ public function viewAction(Request $request, $objectId)
148164
) {
149165
return $this->accessDenied();
150166
}
151-
assert($entity instanceof CompanyTrigger);
152167

153168
return $this->delegateView([
154169
'viewParameters' => [
@@ -174,21 +189,20 @@ public function viewAction(Request $request, $objectId)
174189
* @param CompanyTrigger $entity
175190
* @param array<mixed> $triggerEvents
176191
*
177-
* @return array<mixed>|RedirectResponse|JsonResponse|\Symfony\Component\HttpFoundation\RedirectResponse|Response
192+
* @return array<mixed>|RedirectResponse|JsonResponse|RedirectResponse|Response
178193
*/
179194
public function newAction(Request $request, $entity = null, array $triggerEvents = [])
180195
{
181-
/** @var CompanyTriggerModel $model */
182-
$model = $this->getModel('companypoint.trigger');
183-
196+
$model = $this->triggerModel;
184197
if (!($entity instanceof CompanyTrigger)) {
185198
/** @var CompanyTrigger $entity */
186199
$entity = $model->getEntity();
187200
}
188201

189-
$session = $request->getSession();
190-
$pointTrigger = $request->request->get('companypointtrigger') ?? [];
191-
$sessionId = $pointTrigger['sessionId'] ?? 'mautic_'.sha1(uniqid((string) random_int(1, PHP_INT_MAX), true));
202+
$session = $request->getSession();
203+
$allRequestData = $request->request->all();
204+
$pointTrigger = $allRequestData['companypointtrigger'] ?? [];
205+
$sessionId = $pointTrigger['sessionId'] ?? 'mautic_'.sha1(uniqid((string) random_int(1, PHP_INT_MAX), true));
192206

193207
if (!$this->security->isGranted('companypoint:triggers:create')) {
194208
return $this->accessDenied();
@@ -311,9 +325,7 @@ public function newAction(Request $request, $entity = null, array $triggerEvents
311325
*/
312326
public function editAction(Request $request, $objectId, $ignorePost = false)
313327
{
314-
/** @var CompanyTriggerModel $model */
315-
$model = $this->getModel('companypoint.trigger');
316-
assert($model instanceof CompanyTriggerModel);
328+
$model = $this->triggerModel;
317329
$entity = $model->getEntity($objectId);
318330
$session = $request->getSession();
319331
$cleanSlate = true;
@@ -383,8 +395,7 @@ public function editAction(Request $request, $objectId, $ignorePost = false)
383395

384396
// delete entities
385397
if (count($deletedEvents)) {
386-
$triggerEventModel = $this->getModel('companypoint.triggerevent');
387-
\assert($triggerEventModel instanceof CompanyTriggerEventModel);
398+
$triggerEventModel = $this->triggerEventModel;
388399
$triggerEventModel->deleteEntities($deletedEvents);
389400
}
390401

@@ -473,7 +484,7 @@ public function editAction(Request $request, $objectId, $ignorePost = false)
473484
*/
474485
public function cloneAction(Request $request, $objectId)
475486
{
476-
$model = $this->getModel('companypoint.trigger');
487+
$model = $this->triggerModel;
477488
$entity = $model->getEntity($objectId);
478489
\assert($entity instanceof CompanyTrigger);
479490
$existingActions = $entity->getEvents()->toArray();
@@ -526,8 +537,7 @@ public function deleteAction(Request $request, $objectId)
526537
];
527538

528539
if (Request::METHOD_POST === $request->getMethod()) {
529-
$model = $this->getModel('companypoint.trigger');
530-
\assert($model instanceof CompanyTriggerModel);
540+
$model = $this->triggerModel;
531541
$entity = $model->getEntity($objectId);
532542

533543
if (null === $entity) {
@@ -564,10 +574,8 @@ public function deleteAction(Request $request, $objectId)
564574

565575
/**
566576
* Deletes a group of entities.
567-
*
568-
* @return Response
569577
*/
570-
public function batchDeleteAction(Request $request)
578+
public function batchDeleteAction(Request $request): Response
571579
{
572580
$page = $request->getSession()->get('mautic.companypoint.trigger.page', 1);
573581
$returnUrl = $this->generateUrl('mautic_company_pointtrigger_index', ['page' => $page]);
@@ -584,8 +592,7 @@ public function batchDeleteAction(Request $request)
584592
];
585593

586594
if (Request::METHOD_POST === $request->getMethod()) {
587-
$model = $this->getModel('companypoint.trigger');
588-
\assert($model instanceof CompanyTriggerModel);
595+
$model = $this->triggerModel;
589596
$ids = json_decode($request->query->get('ids', '{}'));
590597
$deleteIds = [];
591598

@@ -638,4 +645,9 @@ private function clearSessionComponents(Request $request, $sessionId): void
638645
$session->remove('mautic.companypoint.'.$sessionId.'.triggerevents.modified');
639646
$session->remove('mautic.companypoint.'.$sessionId.'.triggerevents.deleted');
640647
}
648+
649+
protected function getModelName(): string
650+
{
651+
return 'companypoint.trigger';
652+
}
641653
}

Controller/TriggerEventController.php

Lines changed: 29 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,25 @@
22

33
namespace MauticPlugin\LeuchtfeuerCompanyPointsBundle\Controller;
44

5-
use Mautic\CoreBundle\Controller\FormController as CommonFormController;
5+
use Mautic\CoreBundle\Controller\AbstractStandardFormController;
66
use MauticPlugin\LeuchtfeuerCompanyPointsBundle\Entity\CompanyTriggerEvent;
77
use MauticPlugin\LeuchtfeuerCompanyPointsBundle\Form\Type\CompanyTriggerEventType;
88
use MauticPlugin\LeuchtfeuerCompanyPointsBundle\Model\CompanyTriggerModel;
99
use Symfony\Component\HttpFoundation\JsonResponse;
1010
use Symfony\Component\HttpFoundation\Request;
1111
use Symfony\Component\HttpFoundation\Response;
12+
use Symfony\Contracts\Service\Attribute\Required;
1213

13-
class TriggerEventController extends CommonFormController
14+
class TriggerEventController extends AbstractStandardFormController
1415
{
16+
private CompanyTriggerModel $triggerModel;
17+
18+
#[Required]
19+
public function setTriggerModel(CompanyTriggerModel $triggerModel): void
20+
{
21+
$this->triggerModel = $triggerModel;
22+
}
23+
1524
/**
1625
* Generates new form and processes post data.
1726
*
@@ -50,11 +59,9 @@ public function newAction(Request $request)
5059
}
5160

5261
// fire the builder event
53-
/** @var CompanyTriggerModel $pointTriggerModel */
54-
$pointTriggerModel = $this->getModel('companypoint.trigger');
55-
\assert($pointTriggerModel instanceof CompanyTriggerModel);
56-
$events = $pointTriggerModel->getEvents();
57-
$form = $this->formFactory->create(CompanyTriggerEventType::class, $triggerEvent, [
62+
$pointTriggerModel = $this->triggerModel;
63+
$events = $pointTriggerModel->getEvents();
64+
$form = $this->formFactory->create(CompanyTriggerEventType::class, $triggerEvent, [
5865
'action' => $this->generateUrl('mautic_company_pointtriggerevent_action', ['objectAction' => 'new']),
5966
'settings' => $events[$eventType],
6067
]);
@@ -147,17 +154,18 @@ public function editAction(Request $request, $objectId)
147154
{
148155
$session = $request->getSession();
149156
$method = $request->getMethod();
150-
$triggerEvent = $request->request->get('companypointtriggerevent') ?? [];
151-
$triggerId = 'POST' === $method ? ($triggerEvent['triggerId'] ?? '') : $request->query->get('triggerId');
152-
$events = $session->get('mautic.companypoint.'.$triggerId.'.triggerevents.modified', []);
153-
$success = 0;
154-
$valid = $cancelled = false;
155-
$triggerEvent = array_key_exists($objectId, $events) ? $events[$objectId] : null;
157+
// Use all() instead of get() to avoid "non-scalar value" error with nested arrays
158+
$allRequestData = $request->request->all();
159+
$triggerEvent = $allRequestData['companypointtriggerevent'] ?? [];
160+
$triggerId = 'POST' === $method ? ($triggerEvent['triggerId'] ?? '') : $request->query->get('triggerId');
161+
$events = $session->get('mautic.companypoint.'.$triggerId.'.triggerevents.modified', []);
162+
$success = 0;
163+
$valid = $cancelled = false;
164+
$triggerEvent = array_key_exists($objectId, $events) ? $events[$objectId] : null;
156165

157166
if (null !== $triggerEvent) {
158-
$eventType = $triggerEvent['type'];
159-
$pointTriggerModel = $this->getModel('companypoint.trigger');
160-
\assert($pointTriggerModel instanceof CompanyTriggerModel);
167+
$eventType = $triggerEvent['type'];
168+
$pointTriggerModel = $this->triggerModel;
161169
$events = $pointTriggerModel->getEvents();
162170
$triggerEvent['settings'] = $events[$eventType];
163171

@@ -381,4 +389,9 @@ public function undeleteAction(Request $request, $objectId)
381389

382390
return new JsonResponse($dataArray);
383391
}
392+
393+
protected function getModelName(): string
394+
{
395+
return 'companypoint.triggerevent';
396+
}
384397
}

Decorator/LeadRepository.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,4 @@ public function updateLastActive($leadId, ?\DateTimeInterface $lastActiveDate =
3131
parent::updateLastActive($leadId, $lastActiveDate);
3232
}
3333
}
34-
}
34+
}

0 commit comments

Comments
 (0)