src/Console/Management/UpdateUsersTrustedStatus.php line 25

Open in your IDE?
  1. <?php
  2. namespace App\Console\Management;
  3. use App\Entity\Sales\AccountEnrollment;
  4. use App\Entity\Sales\PlacementHiding;
  5. use App\Entity\User;
  6. use App\Repository\UserRepository;
  7. use Doctrine\Persistence\ManagerRegistry;
  8. use Doctrine\ORM\EntityManagerInterface;
  9. use Money\Currency;
  10. use Money\Money;
  11. use Symfony\Component\Console\Command\Command;
  12. use Symfony\Component\Console\Input\InputInterface;
  13. use Symfony\Component\Console\Output\OutputInterface;
  14. use Symfony\Component\Console\Style\SymfonyStyle;
  15. class UpdateUsersTrustedStatus extends Command
  16. {
  17.     const ENROLLMENTS_AMOUNT_TO_TRUST 10000000//100K
  18.     protected EntityManagerInterface $entityManager;
  19.     protected UserRepository $userRepository;
  20.     public function __construct(ManagerRegistry $managerRegistry)
  21.     {
  22.         parent::__construct();
  23.         $this->entityManager $managerRegistry->getManagerForClass(PlacementHiding::class);
  24.         $this->userRepository $this->entityManager->getRepository(User::class);
  25.     }
  26.     /**
  27.      * @inheritDoc
  28.      */
  29.     protected function configure()
  30.     {
  31.         $this->setName('update:users:set-trusted');
  32.     }
  33.     /**
  34.      * @inheritDoc
  35.      */
  36.     protected function execute(InputInterface $inputOutputInterface $output): int
  37.     {
  38.         $io = new SymfonyStyle($input$output);
  39.         $io->progressStart();
  40.         $io->title('Setting trusted flag to users');
  41.         $connection $this->entityManager->getConnection();
  42.         $connection->getConfiguration()->setSQLLogger(null);
  43.         foreach ($this->userRepository->findBy(['trusted' => false'enabled' => true]) as $user) {
  44.             $sum array_reduce($user->getEnrollments()->toArray(), function(Money $sumAccountEnrollment $enrollment): Money {
  45.                 $sum $sum->add($enrollment->getEnrolledMoney());
  46.                 return $sum;
  47.             }, new Money(0, new Currency('RUB')));
  48.             if($sum->getAmount() >= self::ENROLLMENTS_AMOUNT_TO_TRUST) {
  49.                 $user->setTrusted(true);
  50.                 $this->entityManager->flush();
  51.             }
  52.             $io->progressAdvance();
  53.         }
  54.         $io->progressFinish();
  55.         $io->success('Success setting trusted flag to users');
  56.         return Command::SUCCESS;
  57.     }
  58. }