MobytUserStatusCreator.php 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. <?php
  2. namespace App\Service\Mobyt;
  3. use App\ApiResources\Mobyt\MobytUserStatus;
  4. use App\Repository\Organization\OrganizationRepository;
  5. class MobytUserStatusCreator
  6. {
  7. public function __construct(
  8. private MobytService $mobytService,
  9. private OrganizationRepository $organizationRepository,
  10. ) {}
  11. /**
  12. * Retrieve the status of the user from the Mobyt Api (via MobytService)
  13. *
  14. * @param int $organizationId
  15. * @return MobytUserStatus
  16. * @throws \JsonException
  17. */
  18. public function getUserStatus(int $organizationId): MobytUserStatus {
  19. $userStatus = new MobytUserStatus();
  20. $userStatus->setOrganizationId($organizationId);
  21. $organization = $this->organizationRepository->find($organizationId);
  22. $parameters = $organization->getParameters();
  23. $mobytLogin = $parameters->getUsernameSMS();
  24. $mobytPassword = $parameters->getPasswordSMS();
  25. if (!$mobytLogin) {
  26. return $userStatus;
  27. }
  28. $userStatusData = $this->mobytService->getUserStatus($mobytLogin, $mobytPassword);
  29. $userStatus->setActive(true);
  30. $userStatus->setMoney($userStatusData['money']);
  31. $topQualitySmsAmount = 0;
  32. foreach ($userStatusData['sms'] as $_ => $smsTypeData) {
  33. // we only retrieve the 'top quality sms', which are identified by the letter N in the mobyt api
  34. if ($smsTypeData['type'] === 'N') {
  35. $topQualitySmsAmount = $smsTypeData['quantity'];
  36. }
  37. }
  38. $userStatus->setAmount($topQualitySmsAmount);
  39. return $userStatus;
  40. }
  41. }