PassingTestController::passResultAction()   A
last analyzed

Complexity

Conditions 3
Paths 3

Size

Total Lines 14
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 6
CRAP Score 3.3332

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 14
ccs 6
cts 9
cp 0.6667
rs 9.4285
cc 3
eloc 8
nc 3
nop 2
crap 3.3332
1
<?php
2
3
namespace AppBundle\Controller\Account;
4
5
use AppBundle\Entity\PassModule;
6
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
7
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
8
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
9
use Symfony\Component\HttpFoundation\Request;
10
use Symfony\Component\HttpKernel\Exception\HttpException;
11
12
/**
13
 * Passing test controller.
14
 *
15
 * @Route("/account")
16
 */
17
class PassingTestController extends Controller
18
{
19
    public function indexAction($name)
20
    {
21
        return $this->render('', array('name' => $name));
22
    }
23
24
    /**
25
     * @Route("/ident-pass/{idModule}", name="ident_pass")
26
     */
27 1
    public function identPassAction(Request $request, $idModule)
0 ignored issues
show
Unused Code introduced by
The parameter $request is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
28
    {
29 1
        $passManager = $this->container->get('app.pass_manager');
30 1
        $result = $passManager->identPass($idModule);
31
32 1
        return $this->processResult($result);
33
    }
34
35
    /**
36
     * @Route("/pass-module/{idPass}", name="pass_module")
37
     * @Template()
38
     */
39 1
    public function passAction(Request $request, $idPass)
40
    {
41 1
        $passManager = $this->container->get('app.pass_manager');
42 1
        $result = $passManager->passModule($idPass);
43
44 1
        if($result['status'] == 'ok' && $request->isMethod('POST')){
45
                $form = $result['content'][0];
46
                $form->bind($request);
47
                $data = $form->getData();
48
                $result = $this->get('app.pass_control')->process($data);
49
        }
50
51 1
        return $this->processResult($result);
52
    }
53
54
    /**
55
     * @Route("/pass-result/{idPass}", name="pass_result")
56
     * @Template()
57
     */
58 1
    public function passResultAction(Request $request, $idPass)
0 ignored issues
show
Unused Code introduced by
The parameter $request is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
59
    {
60 1
        $passModule = $this->getDoctrine()->getRepository('AppBundle:PassModule')
61 1
                        ->getDonePassModuleByIdAndUser($idPass,$this->getUser()->getId())
62 1
                        ;
63
64 1
        if($passModule === null)
65 1
            throw new HttpException(403, 'You don\'t have permission for look this data');
66
67
        if($passModule->getStateResult() === PassModule::STATE_EXPIRED)
68
            throw new HttpException(403, 'This pass expired.');
69
70
        return ['passModule' => $passModule];
71
    }
72
73
74 2
    private function processResult($result){
75 2
        switch ($result['status']) {
76 2
            case 'redirect_to_pass':
77 1
                return $this->redirectToRoute('pass_module',['idPass' => $result['content']], $result['code']);
78 1
            case 'redirect_to_result':
79
                return $this->redirectToRoute('pass_result',['idPass' => $result['content']], $result['code']);
80 1
            case 'error':
81
                throw new HttpException($result['code'], $result['content']);
82 1
            case 'ok':
83 1
                list($form, $question, $time_residue, $countQuestions, $currentNumberQuestion, $module) = $result['content'];
84
                return [
85
                    'data' => [
86 1
                        'form' => $form->createView(),
87 1
                        'question' => $question,
88 1
                        'time_residue' => $time_residue,
89 1
                        'count_questions' => $countQuestions,
90 1
                        'current_number_question' => $currentNumberQuestion,
91
                        'module' => $module
92 1
                    ]
93 1
                ];
94
            default:
95
                throw new HttpException(500, 'Ooops something wrong');
96
        }
97
    }
98
99
100
}
101