Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 19
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 / 19
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 / 5
0.00% covered (danger)
0.00%
0 / 1
2
 getSkillLevelsForUserIdInCategories
0.00% covered (danger)
0.00%
0 / 14
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    /** @return array<SkillLevel> */
14    public function getSkillLevelsForUserId(int $user_id): array {
15        $sane_user_id = intval($user_id);
16        $dql = "
17            SELECT sl
18            FROM SkillLevel sl
19            WHERE sl.user = '{$sane_user_id}'";
20        $query = $this->getEntityManager()->createQuery($dql);
21        return $query->getResult();
22    }
23
24    /**
25     * @param array<int> $category_ids
26     *
27     * @return array<SkillLevel>
28     */
29    public function getSkillLevelsForUserIdInCategories(int $user_id, array $category_ids): array {
30        $sane_user_id = intval($user_id);
31        $skill_repo = $this->getEntityManager()->getRepository(Skill::class);
32        $skills = $skill_repo->getSkillsInCategories($category_ids);
33        $skill_ids = array_map(
34            function ($skill) {
35                return intval($skill->getId());
36            },
37            $skills,
38        );
39        $skill_ids_sql = implode("','", $skill_ids);
40        $dql = "
41            SELECT sl
42            FROM SkillLevel sl
43            WHERE sl.user = '{$sane_user_id}' AND sl.skill IN ('{$skill_ids_sql}')";
44        $query = $this->getEntityManager()->createQuery($dql);
45        return $query->getResult();
46    }
47}