Code Duplication    Length = 5-8 lines in 3 locations

src/Badger/Bundle/GameBundle/Controller/BadgeCompletionController.php 3 locations

@@ 123-130 (lines=8) @@
120
            $token = new UsernamePasswordToken($user, 'none', 'none', $user->getRoles());
121
            $isUnlockable = $this->get('security.access.decision_manager')->decide($token, ['view'], $badge);
122
123
            if (!$isUnlockable) {
124
                $this->addFlash('error', sprintf('%s does not have access to badge "%s"',
125
                    $user->getUsername(),
126
                    $badge->getTitle()
127
                ));
128
129
                return $this->redirectToRoute('admin_unlocked_badge_give');
130
            }
131
132
            $badgeCompletion = $this->get('badger.game.repository.badge_completion')
133
                ->findOneBy([
@@ 143-150 (lines=8) @@
140
                    ->create($user, $badge);
141
            }
142
143
            if (!$badgeCompletion->isPending()) {
144
                $this->addFlash('error', sprintf('%s already has the badge "%s"',
145
                    $user->getUsername(),
146
                    $badge->getTitle()
147
                ));
148
149
                return $this->redirectToRoute('admin_unlocked_badge_give');
150
            }
151
152
            $badgeCompletion->setPending(false);
153
            $badgeCompletion->setCompletionDate(new \DateTime());
@@ 201-205 (lines=5) @@
198
                    'pending' => false
199
                ]);
200
201
            if (null === $badgeCompletion) {
202
                $this->addFlash('error', sprintf('%s has no badge named "%s"', $user->getUsername(), $badge->getTitle()));
203
204
                return $this->redirectToRoute('admin_unlocked_badge_remove');
205
            }
206
207
            $badgeCompletionRemover = $this->get('badger.game.remover.badge_completion');
208
            $badgeCompletionRemover->remove($badgeCompletion);