13
13
14
14
namespace CleverAge \UiProcessBundle \Controller \Admin \Process ;
15
15
16
+ use CleverAge \ProcessBundle \Exception \MissingProcessException ;
16
17
use CleverAge \UiProcessBundle \Entity \User ;
17
18
use CleverAge \UiProcessBundle \Form \Type \LaunchType ;
18
19
use CleverAge \UiProcessBundle \Manager \ProcessConfigurationsManager ;
39
40
#[IsGranted('ROLE_USER ' )]
40
41
class LaunchAction extends AbstractController
41
42
{
43
+ public function __construct (private readonly MessageBusInterface $ messageBus )
44
+ {
45
+ }
46
+
42
47
public function __invoke (
43
48
RequestStack $ requestStack ,
44
- MessageBusInterface $ messageBus ,
45
49
string $ uploadDirectory ,
46
50
ProcessConfigurationsManager $ processConfigurationsManager ,
47
51
AdminContext $ context ,
48
52
): Response {
49
- $ uiOptions = $ processConfigurationsManager ->getUiOptions ($ requestStack ->getMainRequest ()?->get('process ' ) ?? '' );
53
+ $ processCode = $ requestStack ->getMainRequest ()?->get('process ' );
54
+ if (null === $ processCode ) {
55
+ throw new MissingProcessException ();
56
+ }
57
+ $ uiOptions = $ processConfigurationsManager ->getUiOptions ($ processCode );
58
+ if (false === $ uiOptions ['input_context_launcher_form ' ]) {
59
+ $ this ->dispatch ($ processCode );
60
+ $ this ->addFlash (
61
+ 'success ' ,
62
+ 'Process has been added to queue. It will start as soon as possible '
63
+ );
64
+
65
+ return $ this ->redirectToRoute ('process ' , ['routeName ' => 'process_list ' ]);
66
+ }
50
67
$ form = $ this ->createForm (
51
68
LaunchType::class,
52
69
null ,
53
70
[
54
71
'constraints ' => $ uiOptions ['constraints ' ] ?? [],
55
- 'process_code ' => $ requestStack -> getMainRequest ()?->get( ' process ' ) ,
72
+ 'process_code ' => $ processCode ,
56
73
]
57
74
);
58
75
if (false === $ form ->isSubmitted ()) {
@@ -72,16 +89,11 @@ public function __invoke(
72
89
(new Filesystem ())->dumpFile ($ filename , $ input ->getContent ());
73
90
$ input = $ filename ;
74
91
}
75
-
76
- $ message = new ProcessExecuteMessage (
92
+ $ this ->dispatch (
77
93
$ form ->getConfig ()->getOption ('process_code ' ),
78
94
$ input ,
79
- array_merge (
80
- ['execution_user ' => $ this ->getUser ()?->getEmail()],
81
- $ form ->get ('context ' )->getData ()
82
- )
95
+ $ form ->get ('context ' )->getData ()
83
96
);
84
- $ messageBus ->dispatch ($ message );
85
97
$ this ->addFlash (
86
98
'success ' ,
87
99
'Process has been added to queue. It will start as soon as possible '
@@ -99,6 +111,19 @@ public function __invoke(
99
111
);
100
112
}
101
113
114
+ protected function dispatch (string $ processCode , mixed $ input = null , array $ context = []): void
115
+ {
116
+ $ message = new ProcessExecuteMessage (
117
+ $ processCode ,
118
+ $ input ,
119
+ array_merge (
120
+ ['execution_user ' => $ this ->getUser ()?->getEmail()],
121
+ $ context
122
+ )
123
+ );
124
+ $ this ->messageBus ->dispatch ($ message );
125
+ }
126
+
102
127
protected function getUser (): ?User
103
128
{
104
129
/** @var User $user */
0 commit comments