Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 21
0.00% covered (danger)
0.00%
0 / 2
CRAP
0.00% covered (danger)
0.00%
0 / 1
SkillLevelRepository
0.00% covered (danger)
0.00%
0 / 21
0.00% covered (danger)
0.00%
0 / 2
6
0.00% covered (danger)
0.00%
0 / 1
 getSkillLevelsForUserId
0.00% covered (danger)
0.00%
0 / 6
0.00% covered (danger)
0.00%
0 / 1
2
 getSkillLevelsForUserIdInCategories
0.00% covered (danger)
0.00%
0 / 15
0.00% covered (danger)
0.00%
0 / 1
2
1<?php
2
3namespace Olz\Repository\Quiz;
4
5use Olz\Entity\Quiz\Skill;
6use Olz\Entity\Quiz\SkillLevel;
7use Olz\Repository\Common\OlzRepository;
8
9/**
10 * @extends OlzRepository<SkillLevel>
11 */
12class SkillLevelRepository extends OlzRepository {
13    protected string $entityClass = SkillLevel::class;
14
15    /** @return array<SkillLevel> */
16    public function getSkillLevelsForUserId(int $user_id): array {
17        $sane_user_id = intval($user_id);
18        $dql = "
19            SELECT sl
20            FROM {$this->entityClass} sl
21            WHERE sl.user = '{$sane_user_id}'";
22        $query = $this->getEntityManager()->createQuery($dql);
23        return $query->getResult();
24    }
25
26    /**
27     * @param array<int> $category_ids
28     *
29     * @return array<SkillLevel>
30     */
31    public function getSkillLevelsForUserIdInCategories(int $user_id, array $category_ids): array {
32        $sane_user_id = intval($user_id);
33        $skill_repo = $this->getEntityManager()->getRepository(Skill::class);
34        $skills = $skill_repo->getSkillsInCategories($category_ids);
35        $skill_ids = array_map(
36            function ($skill) {
37                return intval($skill->getId());
38            },
39            $skills,
40        );
41        $skill_ids_sql = implode("','", $skill_ids);
42        $dql = "
43            SELECT sl
44            FROM {$this->entityClass} sl
45            WHERE sl.user = '{$sane_user_id}' AND sl.skill IN ('{$skill_ids_sql}')";
46        $query = $this->getEntityManager()->createQuery($dql);
47        return $query->getResult();
48    }
49}