Completed
Push — master ( 1af8b6...90bc50 )
by Laurent
03:35
created

ArticleRepository::getAllItems()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 13
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 13
rs 9.4285
cc 1
eloc 9
nc 1
nop 0
1
<?php
2
3
/**
4
 * Entité Article.
5
 *
6
 * PHP Version 5
7
 *
8
 * @author    Quétier Laurent <[email protected]>
9
 * @copyright 2014 Dev-Int GLSR
10
 * @license   http://opensource.org/licenses/gpl-license.php GNU Public License
11
 *
12
 * @version GIT: <git_id>
13
 *
14
 * @link https://github.com/Dev-Int/glsr
15
 */
16
namespace AppBundle\Repository\Settings;
17
18
use Doctrine\ORM\EntityRepository;
19
20
/**
21
 * ArticleRepository.
22
 *
23
 * @category Entity
24
 */
25
class ArticleRepository extends EntityRepository
26
{
27
    /**
28
     * Affiche les articles actifs.
29
     *
30
     * @return QueryBuilder Requête DQL
31
     */
32
    public function getAllItems()
33
    {
34
        $query = $this->createQueryBuilder('a')
35
            ->join('a.supplier', 's')
36
            ->addSelect('s')
37
            ->join('a.familyLog', 'fl')
38
            ->addSelect('fl')
39
            ->join('a.zoneStorages', 'z')
40
            ->addSelect('z')
41
        ;
42
        
43
        return $query;
44
    }
45
46
    /**
47
     * Affiche les articles actifs.
48
     *
49
     * @return QueryBuilder Requête DQL
50
     */
51
    public function getItems()
52
    {
53
        $query = $this->getAllItems()
54
            ->where('s.active = 1')
55
            ->where('a.active = 1')
56
        ;
57
        
58
        return $query;
59
    }
60
61
    /**
62
     * Affiche les articles actifs.
63
     *
64
     * @return array Query result
65
     */
66
    public function getResultArticles()
67
    {
68
        $query = $this->getItems()->getQuery();
69
        
70
        return $query->getResult();
71
    }
72
73
    /**
74
     * Renvoi les article du fournisseur en paramètre.
75
     *
76
     * @param int $supplier Supplier_id
77
     *
78
     * @return array Query result
79
     */
80
    public function getArticleFromSupplier($supplier)
81
    {
82
        $query = $this->getQueryActiveASC()
83
            ->andWhere('a.supplier = :id')
84
            ->setParameter('id', $supplier)
85
            ->getQuery();
86
87
        return $query->getResult();
88
    }
89
90
    /**
91
     * Renvoi les articles en stock d'alerte.
92
     *
93
     * @param integer $count Nombre d'élément à afficher
94
     * @return array Query result
95
     */
96
    public function getStockAlert($count)
97
    {
98
        $query = $this->getQueryActiveASC()
99
            ->andWhere('a.quantity < a.minstock')
100
            ->setMaxResults($count)
101
            ->getQuery();
102
103
        return $query->getResult();
104
    }
105
106
    private function getQueryActiveASC()
107
    {
108
        $query = $this->createQueryBuilder('a')
109
            ->where('a.active = true')
110
            ->orderBy('a.name', 'ASC');
111
112
        return $query;
113
    }
114
}
115