Completed
Push — Recipes ( 89d6fa...b1c7c8 )
by Laurent
02:52
created

InstallController::step7Action()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 12
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

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