-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathRoutineController.php
More file actions
123 lines (109 loc) · 3.46 KB
/
RoutineController.php
File metadata and controls
123 lines (109 loc) · 3.46 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
<?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\Routine;
use SyncEngine\Form\RoutineFormType;
use SyncEngine\Model\RoutineModel;
class RoutineController extends EntityController
{
#[Route( '/json/routine', 'json_routine' )]
public function handleJson( Request $request ): JsonResponse
{
$id = $request->request->get( 'id' );
$id = ( $id && is_numeric( $id ) ) ? $id : 0;
$model = ( $id ) ? RoutineModel::get( $id ) : RoutineModel::create();
return $this->_handleJsonRequest( $model, $request );
}
#[Route( '/routines', name: 'list_routines' )]
#[MenuItem( menu: 'main', route: 'syncengine_list_routines', label: 'Routines', parent: 'entities', icon: 'routine', position: 4 )]
public function renderList( Request $request ): Response
{
$model = RoutineModel::create();
$query = $this->_getListQuery( $request );
$items = $this->_handleActionList( $model, $query );
return $this->render(
'admin/routine/list.html.twig',
[
'list' => [
'query' => $query,
'items' => $items,
'total' => $this->_handleActionTotal( $model, $query ),
],
'breadcrumbs' => [
[
'title' => $this->trans( 'Routines' ),
'current' => true,
],
],
]
);
}
#[Route( '/routine/create', name: 'create_routine' )]
public function renderCreate( Request $request ): Response
{
$routine = RoutineModel::create();
$form = $this->form( $routine, $request );
if ( $form->isSubmitted() && $form->isValid() ) {
$this->addFlash( 'success', $this->trans( 'Successfully created routine!' ) );
return $this->redirectToRoute( 'syncengine_edit_routine', [ 'id' => $routine->getId() ] );
}
return $this->render(
'admin/routine/create.html.twig',
[
'header' => $this->trans( 'New routine' ),
'backlink' => true,
'form' => $form,
'breadcrumbs' => [
[
'link' => $this->generateUrl( 'syncengine_list_routines' ),
'title' => $this->trans( 'Routines' ),
],
[
'title' => $this->trans( 'Create' ),
'current' => true,
],
],
]
);
}
#[Route( '/routine/edit/{id}', name: 'edit_routine' )]
public function renderEdit( #[MapEntity(id: 'id')] Routine $routine, Request $request ): Response
{
$form = $this->form( $routine, $request );
if ( $form->isSubmitted() && $form->isValid() ) {
$this->addFlash( 'success', $this->trans( 'Successfully edited routine!' ) );
}
return $this->render(
'admin/routine/edit.html.twig',
[
'header' => $this->trans( 'Edit routine' ),
'backlink' => true,
'form' => $form,
'breadcrumbs' => [
[
'link' => $this->generateUrl( 'syncengine_list_routines' ),
'title' => $this->trans( 'Routines' ),
],
[
'title' => $this->trans( 'Edit' ),
'current' => true,
],
],
]
);
}
protected function form( Routine|RoutineModel $routine, Request $request, $saveLabel = '' ): FormInterface
{
if ( $routine instanceof Routine ) {
$routine = RoutineModel::get( $routine );
}
return $this->_handleForm( $routine, RoutineFormType::class, $request, $saveLabel );
}
}