Periode.php 3.6 KB
Newer Older
1
2
3
4
<?php

namespace Application\Service;

lecluse's avatar
lecluse committed
5
6
use Application\Entity\Db\Structure as StructureEntity;

7
8
9
10
11
12
13
14
use Doctrine\ORM\QueryBuilder;


/**
 * Description of Periode
 *
 * @author Laurent LÉCLUSE <laurent.lecluse at unicaen.fr>
 */
15
class Periode extends AbstractEntityService
16
{
17
18
19
20
21
22
23
24
25
    /**
     * Périodes d'enseignement
     *
     * @var \Application\Entity\Db\Periode[]
     */
    protected $enseignement;



26
27

    /**
28
     * retourne la classe des entités
29
     *
30
31
     * @return string
     * @throws RuntimeException
32
     */
33
34
35
36
    public function getEntityClass()
    {
        return 'Application\Entity\Db\Periode';
    }
37
38

    /**
39
     * Retourne l'alias d'entité courante
40
     *
41
     * @return string
42
     */
43
44
    public function getAlias(){
        return 'per';
45
46
    }

lecluse's avatar
lecluse committed
47
48
49
50
51
52
53
54
55
56
57
58
59
    /**
     *
     * @param \DateTime $date
     * @return PeriodeEntity
     */
    public function getDatePeriodePaiement( \DateTime $date=null )
    {
        if (empty($date)) $date = new \DateTime;
        $mois = (int)$date->format('m');
        if (0 == $mois) return null;
        return $this->getRepo()->findOneBy(['moisOriginePaiement' => $mois]);
    }

60
61
62
63
64
65
    /**
     * Retourne la liste des périodes d'enseignement
     *
     * @param QueryBuilder|null $queryBuilder
     * @return QueryBuilder
     */
66
    public function finderByEnseignement( QueryBuilder $qb=null, $alias=null )
67
    {
68
69
        list($qb,$alias) = $this->initQuery($qb, $alias);
        $qb->andWhere("$alias.enseignement = 1");
70
71
        return $qb;
    }
72

lecluse's avatar
lecluse committed
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
    public function finderByMiseEnPaiement(StructureEntity $structure=null, QueryBuilder $qb=null, $alias=null)
    {
        $serviceMIS = $this->getServiceLocator()->get('applicationMiseEnPaiementIntervenantStructure');
        /* @var $serviceMIS MiseEnPaiementIntervenantStructure */

        $serviceMiseEnPaiement = $this->getServiceLocator()->get('applicationMiseEnPaiement');
        /* @var $serviceMiseEnPaiement MiseEnPaiement */

        $serviceStructure = $this->getServiceLocator()->get('applicationStructure');
        /* @var $serviceStructure Structure */

        list($qb,$alias) = $this->initQuery($qb, $alias);

        $this               ->join( $serviceMIS             , $qb, 'miseEnPaiementIntervenantStructure', false, $alias );
        $serviceMIS         ->join( $serviceMiseEnPaiement  , $qb, 'miseEnPaiement'                                    );

        if ($structure){
            $serviceMIS->finderByStructure( $structure, $qb );
        }

        return $qb;
    }

96
    /**
97
     * Retourne la liste des périodes
98
     *
99
100
     * @param QueryBuilder|null $queryBuilder
     * @return Application\Entity\Db\Periode[]
101
     */
102
    public function getList( QueryBuilder $qb=null, $alias=null )
103
    {
104
105
106
        list($qb,$alias) = $this->initQuery($qb, $alias);
        $qb->orderBy("$alias.ordre");
        return parent::getList($qb, $alias);
107
    }
lecluse's avatar
lecluse committed
108

109
110
111
112
113
114
115
116
117
118
119
120
121
    /**
     * Retourne la liste dezs périodes d'enseignement
     *
     * @return \Application\Entity\Db\Periode[]
     */
    public function getEnseignement()
    {
        if (! $this->enseignement){
            $this->enseignement = $this->getList( $this->finderByEnseignement() );
        }
        return $this->enseignement;
    }

lecluse's avatar
lecluse committed
122
123
124
125
126
127
128
    /**
     * Retourne le semestre 1
     *
     * @return \Application\Entity\Db\Periode
     */
    public function getSemestre1()
    {
129
        return $this->getRepo()->findOneBy(['code' => PeriodeEntity::SEMESTRE_1]);
lecluse's avatar
lecluse committed
130
131
132
133
134
135
136
137
138
    }

    /**
     * Retourne le semestre 2
     *
     * @return \Application\Entity\Db\Periode
     */
    public function getSemestre2()
    {
139
        return $this->getRepo()->findOneBy(['code' => PeriodeEntity::SEMESTRE_2]);
lecluse's avatar
lecluse committed
140
    }
141
}