|
2 | 2 |
|
3 | 3 | namespace Hackzilla\Bundle\TicketBundle\Command; |
4 | 4 |
|
| 5 | +use Doctrine\ORM\EntityManagerInterface; |
| 6 | +use Hackzilla\Bundle\TicketBundle\Entity\Ticket; |
5 | 7 | use Hackzilla\Bundle\TicketBundle\Entity\TicketMessage; |
6 | | -use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand; |
| 8 | +use Hackzilla\Bundle\TicketBundle\Manager\TicketManagerInterface; |
| 9 | +use Hackzilla\Bundle\TicketBundle\Manager\UserManagerInterface; |
| 10 | +use Symfony\Component\Console\Command\Command; |
7 | 11 | use Symfony\Component\Console\Input\InputArgument; |
8 | 12 | use Symfony\Component\Console\Input\InputInterface; |
9 | 13 | use Symfony\Component\Console\Input\InputOption; |
10 | 14 | use Symfony\Component\Console\Output\OutputInterface; |
| 15 | +use Symfony\Component\DependencyInjection\ContainerInterface; |
| 16 | +use Symfony\Component\Translation\TranslatorInterface; |
11 | 17 |
|
12 | | -class AutoClosingCommand extends ContainerAwareCommand |
| 18 | +class AutoClosingCommand extends Command |
13 | 19 | { |
14 | 20 | protected static $defaultName = 'ticket:autoclosing'; |
15 | 21 |
|
| 22 | + /** |
| 23 | + * @var TicketManagerInterface |
| 24 | + */ |
| 25 | + private $ticketManager; |
| 26 | + |
| 27 | + /** |
| 28 | + * @var UserManagerInterface |
| 29 | + */ |
| 30 | + private $userManager; |
| 31 | + |
| 32 | + /** |
| 33 | + * @var EntityManagerInterface |
| 34 | + */ |
| 35 | + private $entityManager; |
| 36 | + |
| 37 | + /** |
| 38 | + * @var string |
| 39 | + */ |
| 40 | + private $locale = 'en'; |
| 41 | + |
| 42 | + /** |
| 43 | + * @var TranslatorInterface |
| 44 | + */ |
| 45 | + private $translator; |
| 46 | + |
| 47 | + /** |
| 48 | + * BC: Replace 5th argument with "Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface" after bumping to "symfony/dependency-injection:^4.1". |
| 49 | + */ |
| 50 | + public function __construct(TicketManagerInterface $ticketManager, UserManagerInterface $userManager, EntityManagerInterface $entityManager, TranslatorInterface $translator, ContainerInterface $container) |
| 51 | + { |
| 52 | + parent::__construct(); |
| 53 | + |
| 54 | + $this->ticketManager = $ticketManager; |
| 55 | + $this->userManager = $userManager; |
| 56 | + $this->entityManager = $entityManager; |
| 57 | + $this->translator = $translator; |
| 58 | + if ($container->hasParameter('locale')) { |
| 59 | + $this->locale = $container->getParameter('locale'); |
| 60 | + } |
| 61 | + } |
| 62 | + |
16 | 63 | /** |
17 | 64 | * {@inheritdoc} |
18 | 65 | */ |
@@ -41,30 +88,26 @@ protected function configure() |
41 | 88 | */ |
42 | 89 | protected function execute(InputInterface $input, OutputInterface $output) |
43 | 90 | { |
44 | | - $ticket_manager = $this->getContainer()->get('hackzilla_ticket.ticket_manager'); |
45 | | - $userManager = $this->getContainer()->get('fos_user.user_manager'); |
46 | | - $ticketRepository = $this->getContainer()->get('doctrine')->getRepository('HackzillaTicketBundle:Ticket'); |
| 91 | + $ticketRepository = $this->entityManager->getRepository(Ticket::class); |
47 | 92 |
|
48 | | - $locale = $this->getContainer()->getParameter('locale') ? $this->getContainer()->getParameter('locale') : 'en'; |
49 | | - $translator = $this->getContainer()->get('translator'); |
50 | | - $translator->setLocale($locale); |
| 93 | + $this->translator->setLocale($this->locale); |
51 | 94 |
|
52 | 95 | $username = $input->getArgument('username'); |
53 | 96 |
|
54 | 97 | $resolved_tickets = $ticketRepository->getResolvedTicketOlderThan($input->getOption('age')); |
55 | 98 |
|
56 | 99 | foreach ($resolved_tickets as $ticket) { |
57 | | - $message = $ticket_manager->createMessage() |
| 100 | + $message = $this->ticketManager->createMessage() |
58 | 101 | ->setMessage( |
59 | | - $translator->trans('MESSAGE_STATUS_CHANGED', ['%status%' => $translator->trans('STATUS_CLOSED', [], 'HackzillaTicketBundle')], 'HackzillaTicketBundle') |
| 102 | + $this->translator->trans('MESSAGE_STATUS_CHANGED', ['%status%' => $this->translator->trans('STATUS_CLOSED', [], 'HackzillaTicketBundle')], 'HackzillaTicketBundle') |
60 | 103 | ) |
61 | 104 | ->setStatus(TicketMessage::STATUS_CLOSED) |
62 | 105 | ->setPriority($ticket->getPriority()) |
63 | | - ->setUser($userManager->findUserByUsername($username)) |
| 106 | + ->setUser($this->userManager->findUserByUsername($username)) |
64 | 107 | ->setTicket($ticket); |
65 | 108 |
|
66 | 109 | $ticket->setStatus(TicketMessage::STATUS_CLOSED); |
67 | | - $ticket_manager->updateTicket($ticket, $message); |
| 110 | + $this->ticketManager->updateTicket($ticket, $message); |
68 | 111 |
|
69 | 112 | $output->writeln('The ticket "'.$ticket->getSubject().'" has been closed.'); |
70 | 113 | } |
|
0 commit comments