Completed
Push — sf2.7 ( 18de34...b252b6 )
by Laurent
18:26
created

SupplierRepository::getSuppliers()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 23
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 23
rs 9.0856
cc 2
eloc 12
nc 2
nop 2
1
<?php
2
3
/**
4
 * Entité Supplier.
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    0.1.0
13
 *
14
 * @link       https://github.com/Dev-Int/glsr
15
 */
16
namespace AppBundle\Entity;
17
18
use Doctrine\ORM\EntityRepository;
19
use Doctrine\ORM\Tools\Pagination\Paginator;
20
21
/**
22
 * SupplierRepository Entité Supplier.
23
 *
24
 * @category   Entity
25
 */
26
class SupplierRepository extends EntityRepository
27
{
28
    /**
29
     * Affiche les fournisseurs actifs, avec une pagination.
30
     *
31
     * @param int $nbPerPage Nombre de fournisseurs par page
32
     * @param int $page      Numéro de la page en cours
33
     *
34
     * @return \Doctrine\ORM\Tools\Pagination\Paginator Objet Paginator
35
     *
36
     * @throws \InvalidArgumentException
37
     */
38
    public function getSuppliers($nbPerPage, $page)
39
    {
40
        if ($page < 1) {
41
            throw new \InvalidArgumentException(
42
                'l\'argument $page ne peut être inférieur à 1 (valeur : "'
43
                .$page.'").'
44
            );
45
        }
46
47
        $query = $this->createQueryBuilder('s')
48
            ->where('s.active = 1')
49
            ->orderBy('s.name', 'ASC')
50
            ->getQuery();
51
52
        // On définit l'article à partir duquel commencer la liste
53
        $query->setFirstResult(($page - 1) * $nbPerPage)
54
            // Ainsi que le nombre d'article à afficher
55
            ->setMaxResults($nbPerPage);
56
57
        // Et enfin, on retourne l'objet Paginator
58
        // correspondant à la requête construite
59
        return new Paginator($query);
60
    }
61
62
    /**
63
     * Renvoie les fournisseurs correspondant à la famille logistique
64
     * et sous-famille logistique de l'article en paramètre.
65
     *
66
     * @param AppBundle\Entity\Article $article Article sélectionné
67
     *
68
     * @return QueryBuilder Requête DQL
69
     */
70
    public function getSupplierForReassign($article)
71
    {
72
        $query = $this->createQueryBuilder('s')
73
            ->where('s.name != :idname')
74
            ->andWhere('s.family_log = :flname')
75
            ->andWhere('s.sub_family_log = :sflname')
76
            ->andWhere('s.active = 1')
77
            ->setParameters(
78
                array(
79
                    'idname' => $article->getSupplier()->getName(),
80
                    'flname' => $article->getFamilyLog(),
81
                    'sflname' => $article->getSubFamilyLog(),
82
                )
83
            )
84
            ->orderBy('s.name', 'ASC');
85
86
        return $query;
87
    }
88
}
89