Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 30
0.00% covered (danger)
0.00%
0 / 2
CRAP
0.00% covered (danger)
0.00%
0 / 1
TerminRepository
0.00% covered (danger)
0.00%
0 / 30
0.00% covered (danger)
0.00%
0 / 2
6
0.00% covered (danger)
0.00%
0 / 1
 getAllActive
0.00% covered (danger)
0.00%
0 / 10
0.00% covered (danger)
0.00%
0 / 1
2
 search
0.00% covered (danger)
0.00%
0 / 20
0.00% covered (danger)
0.00%
0 / 1
2
1<?php
2
3namespace Olz\Repository\Termine;
4
5use Doctrine\Common\Collections\Collection;
6use Doctrine\Common\Collections\Criteria;
7use Doctrine\Common\Collections\Order;
8use Olz\Entity\Termine\Termin;
9use Olz\Repository\Common\OlzRepository;
10
11/**
12 * @extends OlzRepository<Termin>
13 */
14class TerminRepository extends OlzRepository {
15    /** @return Collection<int, Termin>&iterable<Termin> */
16    public function getAllActive(): Collection {
17        $is_not_archived = $this->termineUtils()->getIsNotArchivedCriteria();
18        $criteria = Criteria::create()
19            ->where(Criteria::expr()->andX(
20                $is_not_archived,
21                Criteria::expr()->eq('on_off', 1),
22            ))
23            ->setFirstResult(0)
24            ->setMaxResults(1000000)
25        ;
26        return $this->matching($criteria);
27    }
28
29    /**
30     * @param string[] $terms
31     *
32     * @return Collection<int, Termin>&iterable<Termin>
33     */
34    public function search(array $terms): Collection {
35        $is_not_archived = $this->termineUtils()->getIsNotArchivedCriteria();
36        $criteria = Criteria::create()
37            ->where(Criteria::expr()->andX(
38                $is_not_archived,
39                Criteria::expr()->eq('on_off', 1),
40                ...array_map(fn ($term) => Criteria::expr()->orX(
41                    Criteria::expr()->contains('title', $term),
42                    Criteria::expr()->contains('text', $term),
43                    ...$this->searchUtils()->getDateCriteria('start_date', $term),
44                    ...$this->searchUtils()->getDateCriteria('end_date', $term),
45                ), $terms),
46            ))
47            ->orderBy([
48                'start_date' => Order::Ascending,
49                'start_time' => Order::Ascending,
50            ])
51            ->setFirstResult(0)
52            ->setMaxResults(1000000)
53        ;
54        return $this->matching($criteria);
55    }
56}