Code Duplication    Length = 21-21 lines in 2 locations

src/Badger/Bundle/GameBundle/Doctrine/Repository/AdventureRepository.php 2 locations

@@ 21-41 (lines=21) @@
18
    /**
19
     * {@inheritdoc}
20
     */
21
    public function getAvailableAdventuresForUser(TaggableInterface $user)
22
    {
23
        $tagIds = [];
24
        foreach ($user->getTags() as $tag) {
25
            $tagIds[] = $tag->getId();
26
        }
27
28
        $qb = $this->createQueryBuilder('adventure');
29
        $qb->leftJoin('adventure.tags', 'tags')
30
            ->leftJoin('adventure.steps', 's')
31
            ->leftJoin('s.completions', 'sc', 'WITH', 'sc.user = :user AND sc.pending = 0')
32
            ->setParameter('user', $user)
33
            ->having('COUNT(sc) < COUNT(s)')
34
            ->andWhere('tags.id IN (:tagIds)')
35
            ->setMaxResults(15)
36
            ->groupBy('adventure.id')
37
            ->setParameter('tagIds', $tagIds, Connection::PARAM_STR_ARRAY)
38
        ;
39
40
        return $qb->getQuery()->getResult();
41
    }
42
43
    /**
44
     * {@inheritdoc}
@@ 46-66 (lines=21) @@
43
    /**
44
     * {@inheritdoc}
45
     */
46
    public function getCompletedAdventuresForUser(TaggableInterface $user)
47
    {
48
        $tagIds = [];
49
        foreach ($user->getTags() as $tag) {
50
            $tagIds[] = $tag->getId();
51
        }
52
53
        $qb = $this->createQueryBuilder('adventure');
54
        $qb->leftJoin('adventure.tags', 'tags')
55
            ->leftJoin('adventure.steps', 's')
56
            ->leftJoin('s.completions', 'sc', 'WITH', 'sc.user = :user AND sc.pending = 0')
57
            ->setParameter('user', $user)
58
            ->having('COUNT(sc) = COUNT(s)')
59
            ->andWhere('tags.id IN (:tagIds)')
60
            ->setMaxResults(15)
61
            ->groupBy('adventure.id')
62
            ->setParameter('tagIds', $tagIds, Connection::PARAM_STR_ARRAY)
63
        ;
64
65
        return $qb->getQuery()->getResult();
66
    }
67
}
68