22
33namespace MauticPlugin \LeuchtfeuerCompanyPointsBundle \Controller ;
44
5- use Mautic \CoreBundle \Controller \FormController ;
5+ use Mautic \CoreBundle \Controller \AbstractStandardFormController ;
66use Mautic \CoreBundle \Factory \PageHelperFactoryInterface ;
77use MauticPlugin \LeuchtfeuerCompanyPointsBundle \Entity \CompanyTrigger ;
88use MauticPlugin \LeuchtfeuerCompanyPointsBundle \Entity \CompanyTriggerEvent ;
1313use Symfony \Component \HttpFoundation \RedirectResponse ;
1414use Symfony \Component \HttpFoundation \Request ;
1515use 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}
0 commit comments