| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- <?php
- declare(strict_types=1);
- namespace App\DataProvider\Dolibarr;
- use ApiPlatform\Core\DataProvider\ItemDataProviderInterface;
- use ApiPlatform\Core\DataProvider\RestrictedDataProviderInterface;
- use App\ApiResources\Dolibarr\DolibarrAccount;
- use App\ApiResources\Dolibarr\DolibarrBill;
- use App\Service\Dolibarr\DolibarrService;
- /**
- * Custom provider pour les DolibarrAccounts récupérés via l'api dolibarr
- * @package App\DataProvider\Utils
- */
- final class DolibarrAccountDataProvider implements ItemDataProviderInterface, RestrictedDataProviderInterface
- {
- private DolibarrService $dolibarrService;
- public function __construct(
- DolibarrService $dolibarrService,
- )
- {
- $this->dolibarrService = $dolibarrService;
- }
- public function supports(string $resourceClass, string $operationName = null, array $context = []): bool
- {
- return DolibarrAccount::class === $resourceClass;
- }
- public function getItem(string $resourceClass, $id, string $operationName = null, array $context = []): ?DolibarrAccount
- {
- $dolibarrAccount = new DolibarrAccount();
- $accountData = $this->dolibarrService->getSociety($id);
- $billsData = $this->dolibarrService->getBills($accountData['id']);
- $dolibarrAccount->setOrganizationId($id);
- $dolibarrAccount->setSocId($accountData['id']);
- $dolibarrAccount->setClientNumber($accountData['code_client']);
- $dolibarrAccount->setProduct($accountData['array_options']['options_2iopen_software_used']);
- // $dolibarrAccount->setSmsCredit();
- // $dolibarrAccount->setServices($accountData['code_client']);
- foreach ($billsData as $billData) {
- $bill = new DolibarrBill();
- $bill->setBillId($billData['id']);
- $bill->setSocId($dolibarrAccount->getSocId());
- $bill->setAmount($billData['total_ttc']);
- $bill->setDate($billData['date']);
- $bill->setPaid((bool)$billData['paye']);
- $dolibarrAccount->addBill($bill);
- }
- return $dolibarrAccount;
- }
- }
|