44
55namespace Drupal \os2forms_fordelingskomponent_debug \Controller ;
66
7- use Drupal \Core \Controller \ControllerBase ;
7+ use Drupal \os2forms_fordelingskomponent \Model \Fordelingskomponent \AnvenderForsendelse ;
8+ use Drupal \Core \Url ;
89use Drupal \os2forms_fordelingskomponent \Repository \AnvenderForsendelseRepository ;
9- use Drupal \os2forms_fordelingskomponent_debug \Hook \ThemeHooks ;
1010use Drupal \webform \WebformInterface ;
1111use Drupal \webform \WebformSubmissionInterface ;
12+ use Symfony \Component \HttpFoundation \Request ;
13+ use Symfony \Component \HttpKernel \Exception \NotFoundHttpException ;
1214
1315/**
1416 * Returns responses for os2forms_fordelingskomponent_debug routes.
1517 */
16- final class Os2formsFordelingskomponentDebugForsendelseController extends ControllerBase {
18+ final class Os2formsFordelingskomponentDebugForsendelseController extends AbstractController {
1719
1820 public function __construct (
1921 private readonly AnvenderForsendelseRepository $ repository ,
@@ -23,14 +25,120 @@ public function __construct(
2325 /**
2426 * Builds the response.
2527 */
26- public function __invoke (WebformInterface $ webform , WebformSubmissionInterface $ webform_submission ): array {
28+ public function __invoke (Request $ request , WebformInterface $ webform , WebformSubmissionInterface $ webform_submission ): array {
29+ if ($ anvenderTransaktionsId = $ request ->query ->get ('anvenderTransaktionsId ' )) {
30+ if ($ item = $ this ->repository ->loadByAnvenderTransaktionsId ($ anvenderTransaktionsId )) {
31+ return $ this ->itemDetails ($ item );
32+ }
33+
34+ throw new NotFoundHttpException ();
35+ }
2736 $ items = $ this ->repository ->loadBySubmission ($ webform_submission );
2837
38+ // https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21Render%21Element%21Table.php/class/Table/10
39+ $ header = [
40+ 'anvenderTransaktionsId ' => $ this ->t ('anvenderTransaktionsId ' ),
41+ 'distributionTransaktionsId ' => $ this ->t ('distributionTransaktionsId ' ),
42+ 'receipts ' => $ this ->t ('Receipts ' ),
43+ 'webform handlers ' => $ this ->t ('Webform handlers ' ),
44+ 'createdAt ' => $ this ->t ('Created at ' ),
45+ 'updatedAt ' => $ this ->t ('Updated at ' ),
46+ 'deliveredAt ' => $ this ->t ('Delivered at ' ),
47+ ];
48+ $ rows = [];
49+ foreach ($ items as $ item ) {
50+ $ rows [] = [
51+ 'anvenderTransaktionsId ' => [
52+ 'data ' => [
53+ // https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21Render%21Element%21Link.php/class/Link/10
54+ '#title ' => $ item ->anvenderTransaktionsId ,
55+ '#type ' => 'link ' ,
56+ '#url ' => Url::fromRoute ('<current> ' , [
57+ 'anvenderTransaktionsId ' => $ item ->anvenderTransaktionsId ,
58+ ]),
59+ ],
60+ ],
61+ 'distributionTransaktionsId ' => [
62+ 'data ' => [
63+ '#markup ' => $ item ->distributionTransaktionsId ,
64+ ],
65+ ],
66+ 'receipts ' => [
67+ 'data ' => [
68+ '#title ' => $ this ->t ('Receipts ' ),
69+ '#type ' => 'link ' ,
70+ '#url ' => Url::fromRoute ('os2forms_fordelingskomponent_debug.os2forms_fordelingskomponent_debug_kvittering ' , [
71+ 'webform ' => $ item ->webformId ,
72+ 'webform_submission ' => $ item ->webformSubmissionId ,
73+ 'anvender_transaktions_id ' => $ item ->anvenderTransaktionsId ,
74+ ]),
75+ ],
76+ ],
77+ 'webform handlers ' => [
78+ 'data ' => [
79+ '#title ' => $ this ->t ('Webform handlers ' ),
80+ '#type ' => 'link ' ,
81+ '#url ' => Url::fromRoute ('entity.webform.handlers ' , [
82+ 'webform ' => $ item ->webformId ,
83+ ]),
84+ ],
85+ ],
86+ 'createdAt ' => [
87+ 'data ' => [
88+ '#markup ' => $ this ->formatDatetime ($ item ->createdAt ),
89+ ],
90+ ],
91+ 'updatedAt ' => [
92+ 'data ' => [
93+ '#markup ' => $ this ->formatDatetime ($ item ->updatedAt ),
94+ ],
95+ ],
96+ 'deliveredAt ' => [
97+ 'data ' => [
98+ '#markup ' => $ this ->formatDatetime ($ item ->deliveredAt ),
99+ ],
100+ ],
101+ ];
102+ }
103+
104+ return [
105+ '#type ' => 'table ' ,
106+ '#header ' => $ header ,
107+ '#rows ' => $ rows ,
108+ '#empty ' => $ this ->t ('No entries available. ' ),
109+ ];
110+ }
111+
112+ /**
113+ * Build item details.
114+ */
115+ private function itemDetails (AnvenderForsendelse $ item ) {
29116 return [
30- '#theme ' => ThemeHooks::FORSENDELSER ,
31- '#items ' => $ items ,
32- '#webform ' => $ webform ,
33- '#webform_submission ' => $ webform_submission ,
117+ [
118+ '#type ' => 'item ' ,
119+ '#title ' => $ this ->t ('anvenderTransaktionsId ' ),
120+ '#markup ' => $ item ->anvenderTransaktionsId ,
121+ ],
122+ [
123+ '#type ' => 'item ' ,
124+ '#title ' => $ this ->t ('distributionTransaktionsId ' ),
125+ '#markup ' => $ item ->distributionTransaktionsId ,
126+ ],
127+ [
128+ '#type ' => 'item ' ,
129+ '#title ' => $ this ->t ('Created at ' ),
130+ '#markup ' => $ this ->formatDatetime ($ item ->createdAt ),
131+ ],
132+ [
133+ '#type ' => 'item ' ,
134+ '#title ' => $ this ->t ('Updated at ' ),
135+ '#markup ' => $ this ->formatDatetime ($ item ->updatedAt ),
136+ ],
137+ [
138+ '#type ' => 'item ' ,
139+ '#title ' => $ this ->t ('Request ' ),
140+ '#markup ' => $ this ->renderYaml ($ item ->request ),
141+ ],
34142 ];
35143 }
36144
0 commit comments