-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathFlowController.php
More file actions
124 lines (110 loc) · 3.35 KB
/
FlowController.php
File metadata and controls
124 lines (110 loc) · 3.35 KB
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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
<?php
namespace SyncEngine\Controller\Admin;
use Symfony\Bridge\Doctrine\Attribute\MapEntity;
use Symfony\Component\Form\FormInterface;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
use SyncEngine\Attribute\MenuItem;
use SyncEngine\Controller\Admin\Abstract\EntityController;
use SyncEngine\Entity\Flow;
use SyncEngine\Form\FlowFormType;
use SyncEngine\Model\FlowModel;
class FlowController extends EntityController
{
#[Route( '/json/flow', 'json_flow' )]
public function handleJson( Request $request ): JsonResponse
{
$id = $request->request->get( 'id' );
$id = ( $id && is_numeric( $id ) ) ? $id : 0;
$model = ( $id ) ? FlowModel::get( $id ) : FlowModel::create();
return $this->_handleJsonRequest( $model, $request );
}
#[Route( '/flows', name: 'list_flows' )]
#[MenuItem( menu: 'main', route: 'syncengine_list_flows', label: 'Flows', parent: 'entities', icon: 'flow', position: 3 )]
public function renderList( Request $request ): Response
{
$model = FlowModel::create();
$query = $this->_getListQuery( $request );
$items = $this->_handleActionList( $model, $query );
return $this->render(
'admin/flow/list.html.twig',
[
'list' => [
'query' => $query,
'items' => $items,
'total' => $this->_handleActionTotal( $model, $query ),
],
'breadcrumbs' => [
[
'title' => $this->trans( 'Flows' ),
'current' => true,
],
],
]
);
}
#[Route( '/flow/create', name: 'create_flow' )]
public function renderCreate( Request $request ): Response
{
$flow = FlowModel::create();
$form = $this->form( $flow, $request );
if ( $form->isSubmitted() && $form->isValid() ) {
$this->addFlash( 'success', $this->trans( 'Successfully added flow!' ) );
return $this->redirectToRoute( 'syncengine_edit_flow', [ 'id' => $flow->getId() ] );
}
return $this->render(
'admin/flow/create.html.twig',
[
'header' => $this->trans( 'New flow' ),
'backlink' => true,
'form' => $form,
'breadcrumbs' => [
[
'link' => $this->generateUrl( 'syncengine_list_flows' ),
'title' => $this->trans( 'Flows' ),
],
[
'title' => $this->trans( 'Create' ),
'current' => true,
],
],
]
);
}
#[Route( '/flow/edit/{id}', name: 'edit_flow' )]
public function renderEdit( #[MapEntity(id: 'id')] Flow $flow, Request $request ): Response
{
$form = $this->form( $flow, $request );
if ( $form->isSubmitted() && $form->isValid() ) {
$this->addFlash( 'success', $this->trans( 'Successfully edited flow!' ) );
}
return $this->render(
'admin/flow/edit.html.twig',
[
'header' => $this->trans( 'Edit flow' ),
'backlink' => true,
'flow' => $flow,
'form' => $form,
'breadcrumbs' => [
[
'link' => $this->generateUrl( 'syncengine_list_flows' ),
'title' => $this->trans( 'Flows' ),
],
[
'title' => $this->trans( 'Edit' ),
'current' => true,
],
],
]
);
}
protected function form( Flow|FlowModel $flow, Request $request, $saveLabel = '' ): FormInterface
{
if ( $flow instanceof Flow ) {
$flow = FlowModel::get( $flow );
}
return $this->_handleForm( $flow, FlowFormType::class, $request, $saveLabel );
}
}