DolibarrAccountDataProvider.php 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\DataProvider\Dolibarr;
  4. use ApiPlatform\Core\DataProvider\ItemDataProviderInterface;
  5. use ApiPlatform\Core\DataProvider\RestrictedDataProviderInterface;
  6. use App\ApiResources\Dolibarr\DolibarrAccount;
  7. use App\ApiResources\Dolibarr\DolibarrBill;
  8. use App\Service\Dolibarr\DolibarrService;
  9. /**
  10. * Custom provider pour les DolibarrAccounts récupérés via l'api dolibarr
  11. * @package App\DataProvider\Utils
  12. */
  13. final class DolibarrAccountDataProvider implements ItemDataProviderInterface, RestrictedDataProviderInterface
  14. {
  15. private DolibarrService $dolibarrService;
  16. public function __construct(
  17. DolibarrService $dolibarrService,
  18. )
  19. {
  20. $this->dolibarrService = $dolibarrService;
  21. }
  22. public function supports(string $resourceClass, string $operationName = null, array $context = []): bool
  23. {
  24. return DolibarrAccount::class === $resourceClass;
  25. }
  26. public function getItem(string $resourceClass, $id, string $operationName = null, array $context = []): ?DolibarrAccount
  27. {
  28. $dolibarrAccount = new DolibarrAccount();
  29. $accountData = $this->dolibarrService->getSociety($id);
  30. $billsData = $this->dolibarrService->getBills($accountData['id']);
  31. $dolibarrAccount->setOrganizationId($id);
  32. $dolibarrAccount->setSocId($accountData['id']);
  33. $dolibarrAccount->setClientNumber($accountData['code_client']);
  34. $dolibarrAccount->setProduct($accountData['array_options']['options_2iopen_software_used']);
  35. // $dolibarrAccount->setSmsCredit();
  36. // $dolibarrAccount->setServices($accountData['code_client']);
  37. foreach ($billsData as $billData) {
  38. $bill = new DolibarrBill();
  39. $bill->setBillId($billData['id']);
  40. $bill->setSocId($dolibarrAccount->getSocId());
  41. $bill->setAmount($billData['total_ttc']);
  42. $bill->setDate($billData['date']);
  43. $bill->setPaid((bool)$billData['paye']);
  44. $dolibarrAccount->addBill($bill);
  45. }
  46. return $dolibarrAccount;
  47. }
  48. }