Passed
Push — master ( 29c6ce...4ea3b3 )
by Fran
04:58
created

GeneratorController::createRoot()   B

Complexity

Conditions 6
Paths 24

Size

Total Lines 33
Code Lines 21

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 42

Importance

Changes 0
Metric Value
cc 6
eloc 21
nc 24
nop 2
dl 0
loc 33
ccs 0
cts 16
cp 0
crap 42
rs 8.9617
c 0
b 0
f 0
1
<?php
2
namespace PSFS\controller;
3
4
use PSFS\base\config\ModuleForm;
5
use PSFS\base\Logger;
6
use PSFS\base\Security;
7
use PSFS\base\types\helpers\GeneratorHelper;
8
use PSFS\controller\base\Admin;
9
10
/**
11
 * Class GeneratorController
12
 * @package PSFS\controller
13
 * @domain ROOT
14
 */
15
class GeneratorController extends Admin
16
{
17
    /**
18
     * @Injectable
19
     * @var  \PSFS\services\GeneratorService Servicio de generación de estructura de directorios
20
     */
21
    protected $gen;
22
23
    /**
24
     * @label Método que genera un nuevo módulo
25
     * @GET
26
     * @route /admin/module* @return string
27
     * @throws \PSFS\base\exception\FormException
28
     */
29
    public function generateModule()
30
    {
31
        Logger::log("Arranque generador de módulos al solicitar " . $this->getRequest()->getRequestUri());
32
        /* @var $form \PSFS\base\config\ConfigForm */
33
        $form = new ModuleForm();
34
        $form->build();
35
        return $this->render("modules.html.twig", array(
36
            'form' => $form,
37
        ));
38
    }
39
40
    /**
41
     * @POST
42
     * @route /admin/module
43
     * @label Generador de módulos
44
     * @return string
45
     * @throws \PSFS\base\exception\FormException
46
     */
47
    public function doGenerateModule()
48
    {
49
        $form = new ModuleForm();
50
        $form->build();
51
        $form->hydrate();
52
        if ($form->isValid()) {
53
            $module = strtoupper($form->getFieldValue("module"));
54
            $type = preg_replace('/normal/i', '', $form->getFieldValue("controllerType"));
55
            $apiClass = $form->getFieldValue("api");
56
            try {
57
                $module = preg_replace('/(\\\|\/)/', '/', $module);
58
                $module = preg_replace('/^\//', '', $module);
59
                GeneratorHelper::checkCustomNamespaceApi($apiClass);
60
                $this->gen->createStructureModule($module, false, $type, $apiClass);
61
                Security::getInstance()->setFlash("callback_message", str_replace("%s", $module, t("Módulo %s generado correctamente")));
62
                // Security::getInstance()->setFlash("callback_route", $this->getRoute("admin-module", true));
63
            } catch (\Exception $e) {
64
                Logger::log($e->getMessage() . " [" . $e->getFile() . ":" . $e->getLine() . "]");
65
                Security::getInstance()->setFlash("callback_message", htmlentities($e->getMessage()));
66
            }
67
        }
68
        return $this->render("modules.html.twig", array(
69
            'form' => $form,
70
        ));
71
    }
72
73
}