Passed
Push — 1.11.x ( edf83c...19744e )
by Julito
13:08 queued 12s
created

SequenceRepository::removeSequence()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 10
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 7
nc 1
nop 1
dl 0
loc 10
rs 10
c 0
b 0
f 0
1
<?php
2
3
/* For licensing terms, see /license.txt */
4
5
namespace Chamilo\CoreBundle\Entity\Repository;
6
7
use Chamilo\CoreBundle\Entity\SequenceResource;
8
use Doctrine\ORM\EntityRepository;
9
use Doctrine\ORM\Query\Expr\Join;
10
11
/**
12
 * Class SequenceRepository
13
 * The functions inside this class should return an instance of QueryBuilder.
14
 */
15
class SequenceRepository extends EntityRepository
16
{
17
    /**
18
     * @param string $type
19
     *
20
     * @return array
21
     */
22
    public static function getItems($type)
23
    {
24
        $list = [];
25
26
        switch ($type) {
27
            case SequenceResource::COURSE_TYPE:
28
                $courseListFromDatabase = \CourseManager::get_course_list();
29
30
                if (!empty($courseListFromDatabase)) {
31
                    foreach ($courseListFromDatabase as $item) {
32
                        $list[$item['id']] = $item['title'].' ('.$item['id'].')';
33
                    }
34
                }
35
36
                break;
37
            case SequenceResource::SESSION_TYPE:
38
                $sessionList = \SessionManager::get_sessions_list();
39
                if (!empty($sessionList)) {
40
                    foreach ($sessionList as $sessionItem) {
41
                        $list[$sessionItem['id']] = $sessionItem['name'].' ('.$sessionItem['id'].')';
42
                    }
43
                }
44
45
                break;
46
        }
47
48
        return $list;
49
    }
50
51
    /**
52
     * @param int $id
53
     */
54
    public function removeSequence($id)
55
    {
56
        $sequence = $this->find($id);
57
        $em = $this->getEntityManager();
58
        $em
59
            ->createQuery('DELETE FROM ChamiloCoreBundle:SequenceResource sr WHERE sr.sequence = :seq')
60
            ->execute(['seq' => $sequence]);
61
62
        $em->remove($sequence);
63
        $em->flush();
64
    }
65
66
    /**
67
     * @param string $type
68
     *
69
     * @return array
70
     */
71
    public function findAllToSelect($type)
72
    {
73
        $qb = $this->createQueryBuilder('r');
74
        $qb
75
            ->leftJoin('ChamiloCoreBundle:SequenceResource', 'sr', Join::WITH, 'sr.sequence = r');
76
77
        $qb
78
            ->andWhere(
79
                $qb->expr()->orX(
80
                    $qb->expr()->isNull('r.graph'),
81
                    $qb->expr()->eq('sr.type', $type)
82
                )
83
            )
84
            ->orderBy('r.name');
85
86
        return $qb->getQuery()->getResult();
87
    }
88
}
89