• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

rich-id / terms-module / #64

11 Oct 2023 03:35PM UTC coverage: 83.731%. First build
#64

push

web-flow
Merge b679837ca into b062eebb9

146 of 146 new or added lines in 12 files covered. (100.0%)

772 of 922 relevant lines covered (83.73%)

3.01 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/src/Infrastructure/Repository/TermsVersionSignatureRepository.php
1
<?php
2

3
declare(strict_types=1);
4

5
namespace RichId\TermsModuleBundle\Infrastructure\Repository;
6

7
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
8
use Doctrine\ORM\Tools\Pagination\Paginator;
9
use Doctrine\Persistence\ManagerRegistry;
10
use RichId\TermsModuleBundle\Domain\Entity\TermsSubjectInterface;
11
use RichId\TermsModuleBundle\Domain\Entity\TermsVersion;
12
use RichId\TermsModuleBundle\Domain\Entity\TermsVersionSignature;
13
use RichId\TermsModuleBundle\Domain\Model\SignatureListForm;
14

15
/** @extends ServiceEntityRepository<TermsVersionSignature> */
16
class TermsVersionSignatureRepository extends ServiceEntityRepository
17
{
18
    /** @codeCoverageIgnore  */
19
    public function __construct(ManagerRegistry $registry)
20
    {
21
        parent::__construct($registry, TermsVersionSignature::class);
22
    }
23

24
    /** @return Paginator<TermsVersionSignature> */
25
    public function findForSearch(SignatureListForm $data): Paginator
26
    {
27
        $offset = ($data->getPage() - 1) * $data->getNumberItemsPerPage();
×
28

29
        $qb = $this->createQueryBuilder('s')
×
30
            ->join('s.version', 'v')
×
31
            ->setFirstResult($offset)
×
32
            ->setMaxResults($data->getNumberItemsPerPage());
×
33

34
        if (!empty($data->getSearch())) {
×
35
            $qb->andWhere($qb->expr()->like('LOWER(s.signedByName)', ':search'))
×
36
                ->setParameter('search', '%' . \addslashes(mb_strtolower($data->getSearch())) . '%');
×
37
        }
38

39
        if ($data->getTerms() !== null) {
×
40
            $qb->andWhere('v.terms = :terms')
×
41
                ->setParameter('terms', $data->getTerms()->getId());
×
42
        }
43

44
        switch ($data->getSort()) {
×
45
            case SignatureListForm::SORT_DATE:
×
46
                $qb->orderBy('s.date', $data->getSortDirection());
×
47
                break;
×
48
            default:
49
                $qb->orderBy('LOWER(s.signedByNameForSort)', $data->getSortDirection() === SignatureListForm::SORT_ASC ? SignatureListForm::SORT_DESC : SignatureListForm::SORT_ASC);
×
50
        }
51

52
        return new Paginator($qb);
×
53
    }
54

55
    public function findOneByVersionAndSubject(TermsVersion $termsVersion, TermsSubjectInterface $subject): ?TermsVersionSignature
56
    {
57
        return $this->createQueryBuilder('tvs')
×
58
            ->where('tvs.version = :version')
×
59
            ->andWhere('tvs.subjectType = :subjectType')
×
60
            ->andWhere('tvs.subjectIdentifier = :subjectIdentifier')
×
61
            ->setParameters(
×
62
                [
63
                    'version'           => $termsVersion->getId(),
×
64
                    'subjectType'       => $subject->getTermsSubjectType(),
×
65
                    'subjectIdentifier' => $subject->getTermsSubjectIdentifier(),
×
66
                ]
67
            )
68
            ->getQuery()
×
69
            ->getOneOrNullResult();
×
70
    }
71
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc