src/Domain/Entity/TeamMember.php line 41

Open in your IDE?
  1. <?php
  2. namespace App\Domain\Entity;
  3. use ApiPlatform\Metadata\ApiResource;
  4. use ApiPlatform\Metadata\Delete;
  5. use ApiPlatform\Metadata\Get;
  6. use ApiPlatform\Metadata\GetCollection;
  7. use ApiPlatform\Metadata\Post;
  8. use ApiPlatform\Metadata\Put;
  9. use App\Application\Controller\Api\TeamMember\DeleteTeamMemberAction;
  10. use App\Domain\Entity\Behavior\Identifiable;
  11. use App\Domain\Entity\Translation\TeamMemberTranslation;
  12. use Doctrine\Common\Collections\ArrayCollection;
  13. use Gedmo\SoftDeleteable\Traits\SoftDeleteable;
  14. use Gedmo\Timestampable\Traits\Timestampable;
  15. use Locastic\ApiPlatformTranslationBundle\Model\AbstractTranslatable;
  16. /**
  17.  * Class TeamMember
  18.  *
  19.  * @package App\Domain\Entity
  20.  */
  21. #[ApiResource(
  22.     operations: [
  23.         new Delete(uriTemplate'/team_members/{uuid}'controllerDeleteTeamMemberAction::class, security"is_granted('ROLE_ADMIN')"),
  24.         new Get(),
  25.         new GetCollection(
  26.             filters: [
  27.                 'soft_delete_filter',
  28.                 'team_member.search_or_filter',
  29.                 'team_member.order_filter',
  30.             ]
  31.         ),
  32.         new Post(security"is_granted('ROLE_ADMIN')"),
  33.         new Put(security"is_granted('ROLE_ADMIN')"),
  34.     ],
  35.     normalizationContext: ['groups' => ['team_member_read']],
  36.     denormalizationContext: ['groups' => ['team_member_write']]
  37. )]
  38. class TeamMember extends AbstractTranslatable
  39. {
  40.     use Identifiable;
  41.     use SoftDeleteable;
  42.     use Timestampable;
  43.     /**
  44.      * @param string      $familyName
  45.      * @param string      $givenName
  46.      * @param bool        $isCaramapsEmployee
  47.      * @param int         $position
  48.      * @param string|null $email
  49.      * @param Locale|null $locale
  50.      * @param Media|null  $photo1
  51.      * @param Media|null  $photo2
  52.      * @param string|null $telephone
  53.      * @param array       $translations
  54.      */
  55.     public function __construct(
  56.         public string $familyName,
  57.         public string $givenName,
  58.         public bool $isCaramapsEmployee,
  59.         public int $position,
  60.         public ?string $email null,
  61.         public ?Locale $locale null,
  62.         public ?Media $photo1 null,
  63.         public ?Media $photo2 null,
  64.         public ?string $telephone null,
  65.     ) {
  66.         $this->translations = new ArrayCollection();
  67.     }
  68.     public function createTranslation(): TeamMemberTranslation
  69.     {
  70.         return new TeamMemberTranslation();
  71.     }
  72.     public function getDescription(): ?string
  73.     {
  74.         return $this->getTranslationType()->getDescription();
  75.     }
  76.     public function setDescription(?string $value): void
  77.     {
  78.         $this->getTranslationType()->setDescription($value);
  79.     }
  80.     public function getJobTitle(): ?string
  81.     {
  82.         return $this->getTranslationType()->getJobTitle();
  83.     }
  84.     public function setJobTitle(?string $value): void
  85.     {
  86.         $this->getTranslationType()->setJobTitle($value);
  87.     }
  88.     public function getTranslationType(?string $locale null): TeamMemberTranslation
  89.     {
  90.         return $this->getTranslation($locale);
  91.     }
  92. }