DolibarrAccount.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. <?php
  2. declare (strict_types=1);
  3. namespace App\ApiResources\Dolibarr;
  4. use ApiPlatform\Metadata\Link;
  5. use ApiPlatform\Metadata\Get;
  6. use ApiPlatform\Metadata\ApiResource;
  7. use ApiPlatform\Metadata\ApiProperty;
  8. use App\ApiResources\ApiResourcesInterface;
  9. use App\State\Provider\Dolibarr\DolibarrAccountProvider;
  10. use Doctrine\Common\Collections\ArrayCollection;
  11. use Doctrine\Common\Collections\Collection;
  12. use JetBrains\PhpStorm\Pure;
  13. use Symfony\Component\Serializer\Annotation\Groups;
  14. /**
  15. * Données de l'organization retournées par l'API Dolibarr
  16. * (aussi nommé 'ThirdParty' ou 'Society' dans dolibarr)
  17. */
  18. #[ApiResource(
  19. operations: [
  20. new Get(
  21. uriTemplate: '/dolibarr/account/{organizationId}',
  22. requirements: ['organizationId' => '\\d+'],
  23. normalizationContext: ['groups' => ['dolibarr_get']],
  24. security: '(is_granted("ROLE_ADMIN_CORE") or
  25. is_granted("ROLE_ADMINISTRATIF_MANAGER_CORE") or
  26. is_granted("ROLE_PEDAGOGICS_MANAGER_CORE") or
  27. is_granted("ROLE_FINANCIAL_MANAGER_CORE")
  28. ) and object.getOrganizationId() == user.getOrganization().getId()',
  29. provider: DolibarrAccountProvider::class
  30. )
  31. ]
  32. )]
  33. class DolibarrAccount implements ApiResourcesInterface
  34. {
  35. #[ApiProperty(identifier: true)]
  36. #[Groups('dolibarr_get')]
  37. private int $organizationId;
  38. /**
  39. * Dolibarr societies pk
  40. */
  41. #[Groups('dolibarr_get')]
  42. private ?int $socId = null;
  43. /**
  44. * Opentalent client ref
  45. */
  46. #[Groups('dolibarr_get')]
  47. private string $clientNumber = "";
  48. /**
  49. * Opentalent product owned
  50. */
  51. #[Groups('dolibarr_get')]
  52. private string $product = "";
  53. /**
  54. * Contract and services currently active
  55. */
  56. #[Groups('dolibarr_get')]
  57. private ?DolibarrContract $contract = null;
  58. /**
  59. * Last bills
  60. */
  61. #[Groups('dolibarr_get')]
  62. private Collection $bills;
  63. #[Pure]
  64. public function __construct()
  65. {
  66. $this->bills = new ArrayCollection();
  67. }
  68. public function getOrganizationId(): int
  69. {
  70. return $this->organizationId;
  71. }
  72. public function setOrganizationId(int $organizationId): self
  73. {
  74. $this->organizationId = $organizationId;
  75. return $this;
  76. }
  77. public function getSocId(): ?int
  78. {
  79. return $this->socId;
  80. }
  81. public function setSocId(?int $socId): self
  82. {
  83. $this->socId = $socId;
  84. return $this;
  85. }
  86. public function getClientNumber(): string
  87. {
  88. return $this->clientNumber;
  89. }
  90. public function setClientNumber(string $clientNumber): self
  91. {
  92. $this->clientNumber = $clientNumber;
  93. return $this;
  94. }
  95. public function getProduct(): string
  96. {
  97. return $this->product;
  98. }
  99. public function setProduct(string $product): self
  100. {
  101. $this->product = $product;
  102. return $this;
  103. }
  104. public function getContract(): ?object
  105. {
  106. return $this->contract;
  107. }
  108. public function setContract(?object $contract): self
  109. {
  110. $this->contract = $contract;
  111. return $this;
  112. }
  113. public function getBills(): Collection
  114. {
  115. return $this->bills;
  116. }
  117. public function addBill(DolibarrBill $bill): self
  118. {
  119. $this->bills[] = $bill;
  120. return $this;
  121. }
  122. public function removeBill(DolibarrBill $bill): self
  123. {
  124. $this->bills->removeElement($bill);
  125. return $this;
  126. }
  127. }