Completed
Push — Recipes ( dbf056...2148c4 )
by Laurent
02:44
created

InstallController::indexAction()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 4
rs 10
cc 1
eloc 2
nc 1
nop 0
1
<?php
2
/**
3
 * InstallController controller d'installation de l'application GLSR.
4
 *
5
 * PHP Version 5
6
 *
7
 * @author    Quétier Laurent <[email protected]>
8
 * @copyright 2014 Dev-Int GLSR
9
 * @license   http://opensource.org/licenses/gpl-license.php GNU Public License
10
 *
11
 * @version GIT: <git_id>
12
 *
13
 * @link      https://github.com/Dev-Int/glsr
14
 */
15
namespace AppBundle\Controller\Install;
16
17
use Symfony\Component\HttpFoundation\Request;
18
use AppBundle\Controller\Install\AbstractInstallController;
19
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
20
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
21
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
22
23
use AppBundle\Entity\Staff\User;
24
use AppBundle\Form\Type\Staff\GroupType;
25
use AppBundle\Form\Type\Staff\UserType;
26
use AppBundle\Form\Type\Settings\CompanyType;
27
use AppBundle\Form\Type\Settings\SettingsType;
28
use AppBundle\Form\Type\Settings\SupplierType;
29
use AppBundle\Form\Type\Settings\ArticleType;
30
31
/**
32
 * class InstallController
33
 *
34
 * @category Controller
35
 *
36
 * @Route("/install")
37
 */
38
class InstallController extends AbstractInstallController
39
{
40
    /**
41
     * Page d'accueil de l'installation.
42
     *
43
     * @Route("/", name="gs_install")
44
     * @Method({"GET"})
45
     *
46
     * @return \Symfony\Component\HttpFoundation\Response Rendue de la page
47
     */
48
    public function indexAction()
49
    {
50
        return $this->render('AppBundle:Install:index.html.twig');
51
    }
52
    
53
    /**
54
     * Etape 1 de l'installation.
55
     * Création des groupes.
56
     *
57
     * @Route("/step1", name="gs_install_st1")
58
     * @Method({"POST","GET"})
59
     * @Template("AppBundle:Install:step1.html.twig")
60
     *
61
     * @param \Symfony\Component\HttpFoundation\Request $request Requète du formulaire
62
     *
63
     * @return array|\Symfony\Component\HttpFoundation\Response Rendue de la page
64
     */
65
    public function step1Action(Request $request)
66
    {
67
        $return = $this->stepAction(
68
            $request,
69
            'Staff\Group',
70
            '\AppBundle\Entity\Staff\Group',
71
            GroupType::class,
72
            1
73
        );
74
        
75
        return $return;
76
    }
77
    
78
    /**
79
     * Etape 2 de l'installation.
80
     * Création des utilisateurs.
81
     *
82
     * @Route("/step2", name="gs_install_st2")
83
     * @Method({"POST","GET"})
84
     * @Template("AppBundle:Install:step2.html.twig")
85
     *
86
     * @param \Symfony\Component\HttpFoundation\Request $request Requète du formulaire
87
     *
88
     * @return array|\Symfony\Component\HttpFoundation\Response Rendue de la page
89
     */
90
    public function step2Action(Request $request)
91
    {
92
        $etm = $this->getDoctrine()->getManager();
93
        $ctUser = count($etm->getRepository('AppBundle:Staff\User')->findAll());
94
        $user = new User();
95
        $message = null;
96
        
97
        if ($ctUser > 0 && $request->getMethod() == 'GET') {
98
            $message = 'gestock.install.st2.yet_exist';
99
        }
100
        $form = $this->createForm(UserType::class, $user, array(
101
            'action' => $this->generateUrl('gs_install_st2'),
102
        ));
103
    
104
        if ($form->handleRequest($request)->isValid()) {
105
            $user->setEnabled(true);
106
            $userManager = $this->get('fos_user.user_manager');
107
            $userManager->updateUser($user);
108
            $this->addFlash('info', 'gestock.install.st2.flash');
109
        }
110
        
111
        return array(
112
            'message' => $message,
113
            'form'    => $form->createView()
114
        );
115
    }
116
    
117
    /**
118
     * Etape 3 de l'installation.
119
     * Création de l'entreprise.
120
     *
121
     * @Route("/step3", name="gs_install_st3")
122
     * @Method({"POST","GET"})
123
     * @Template("AppBundle:Install:step3.html.twig")
124
     *
125
     * @param \Symfony\Component\HttpFoundation\Request $request Requète du formulaire
126
     *
127
     * @return \Symfony\Component\HttpFoundation\RedirectResponse|array Rendue de la page
128
     */
129
    public function step3Action(Request $request)
130
    {
131
        $return = $this->stepAction(
132
            $request,
133
            'Settings\Company',
134
            '\AppBundle\Entity\Settings\Company',
135
            CompanyType::class,
136
            3
137
        );
138
        
139
        return $return;
140
    }
141
142
    /**
143
     * Etape 4 de l'installation.
144
     * Création de la configuration.
145
     *
146
     * @Route("/step4", name="gs_install_st4")
147
     * @Method({"POST","GET"})
148
     * @Template("AppBundle:Install:step4.html.twig")
149
     *
150
     * @param \Symfony\Component\HttpFoundation\Request $request Requète du formulaire
151
     *
152
     * @return \Symfony\Component\HttpFoundation\RedirectResponse|
153
     *     array<string,string|null|Settings|\Symfony\Component\Form\FormView> Rendue de la page
154
     */
155
    public function step4Action(Request $request)
156
    {
157
        $return = $this->stepAction(
158
            $request,
159
            'Settings\Settings',
160
            '\AppBundle\Entity\Settings\Settings',
161
            SettingsType::class,
162
            4
163
        );
164
        
165
        return $return;
166
    }
167
168
    /**
169
     * Etape 5 de l'installation.
170
     * Cronfiguration de l'application.
171
     *
172
     * @Route("/step5", name="gs_install_st5")
173
     * @Method({"GET"})
174
     * @Template("AppBundle:Install:step5.html.twig")
175
     *
176
     * @return \Symfony\Component\HttpFoundation\Response Rendue de la page
177
     */
178
    public function step5Action()
179
    {
180
        return $this->render('AppBundle:Install:step5.html.twig');
181
    }
182
183
    /**
184
     * Etape 6 de l'installation.
185
     * Création des fournisseurs.
186
     *
187
     * @Route("/step6", name="gs_install_st6")
188
     * @Method({"POST","GET"})
189
     * @Template("AppBundle:Install:step6.html.twig")
190
     *
191
     * @param \Symfony\Component\HttpFoundation\Request $request Requète du formulaire
192
     *
193
     * @return \Symfony\Component\HttpFoundation\RedirectResponse|
194
     *     array<string,string|null|Supplier|\Symfony\Component\Form\FormView> Rendue de la page
195
     */
196
    public function step6Action(Request $request)
197
    {
198
        $return = $this->stepAction(
199
            $request,
200
            'Settings\Supplier',
201
            '\AppBundle\Entity\Settings\Supplier',
202
            SupplierType::class,
203
            6
204
        );
205
        
206
        return $return;
207
    }
208
209
    /**
210
     * Etape 7 de l'installation.
211
     * Création des articles.
212
     *
213
     * @Route("/step7", name="gs_install_st7")
214
     * @Method({"POST","GET"})
215
     * @Template("AppBundle:Install:step7.html.twig")
216
     *
217
     * @param \Symfony\Component\HttpFoundation\Request $request Requète du formulaire
218
     *
219
     * @return \Symfony\Component\HttpFoundation\RedirectResponse|
220
     *     array<string,string|null|Article|\Symfony\Component\Form\FormView> Rendue de la page
221
     */
222
    public function step7Action(Request $request)
223
    {
224
        $return = $this->stepAction(
225
            $request,
226
            'Settings\Article',
227
            '\AppBundle\Entity\Settings\Article',
228
            ArticleType::class,
229
            7
230
        );
231
        
232
        return $return;
233
    }
234
    
235
    /**
236
     * Etape 8 de l'installation.
237
     * Inventaire d'installation.
238
     *
239
     * @Route("/step8", name="gs_install_st8")
240
     * @Method({"GET"})
241
     * @Template("AppBundle:Install:step8.html.twig")
242
     *
243
     * @return array Rendue de la page
244
     */
245
    public function step8Action()
246
    {
247
        $etm = $this->getDoctrine()->getManager();
248
        $settings = $etm->getRepository('AppBundle:Settings\Settings')->find(1);
249
        $message = null;
250
251
        if ($settings->getFirstInventory() !== null) {
252
            $message = 'gestock.install.st8.yet_exist';
253
        }
254
255
        return array('message' => $message);
256
    }
257
}
258