src/Entity/UserProfile.php line 10

Open in your IDE?
  1. <?php
  2. namespace App\Entity;
  3. use App\Repository\UserProfileRepository;
  4. use Doctrine\ORM\Mapping as ORM;
  5. use Symfony\Component\Serializer\Annotation\Groups;
  6. #[ORM\Entity(repositoryClassUserProfileRepository::class)]
  7. class UserProfile
  8. {
  9.     #[ORM\Id]
  10.     #[ORM\GeneratedValue]
  11.     #[ORM\Column]
  12.     private ?int $id null;
  13.     #[ORM\OneToOne(inversedBy'profile')]
  14.     #[ORM\JoinColumn(nullablefalse)]
  15.     private ?User $user null;
  16.     #[ORM\Column(length255nullabletrue)]
  17.     #[Groups(["chat_message"])]
  18.     private ?string $avatar null;
  19.     #[ORM\Column(type'text'nullabletrue)]
  20.     private ?string $bio null;
  21.     #[ORM\Column(type'json'nullabletrue)]
  22.     #[Groups(["chat_message"])]
  23.     private ?array $preferences null;
  24.     
  25.     #[ORM\Column(length255nullabletrue)]
  26.     private ?string $location null;
  27.     
  28.     #[ORM\Column(length255nullabletrue)]
  29.     private ?string $jobTitle null;
  30.     
  31.     #[ORM\Column(length255nullabletrue)]
  32.     private ?string $linkedinUrl null;
  33.     
  34.     #[ORM\Column(length255nullabletrue)]
  35.     private ?string $twitterUrl null;
  36.     
  37.     #[ORM\Column(length255nullabletrue)]
  38.     private ?string $instagramUrl null;
  39.     public function getId(): ?int
  40.     {
  41.         return $this->id;
  42.     }
  43.     public function getUser(): ?User
  44.     {
  45.         return $this->user;
  46.     }
  47.     public function setUser(User $user): static
  48.     {
  49.         $this->user $user;
  50.         return $this;
  51.     }
  52.     public function getAvatar(): ?string
  53.     {
  54.         return $this->avatar;
  55.     }
  56.     public function setAvatar(?string $avatar): static
  57.     {
  58.         $this->avatar $avatar;
  59.         return $this;
  60.     }
  61.     public function getBio(): ?string
  62.     {
  63.         return $this->bio;
  64.     }
  65.     public function setBio(?string $bio): static
  66.     {
  67.         $this->bio $bio;
  68.         return $this;
  69.     }
  70.     public function getPreferences(): ?array
  71.     {
  72.         return $this->preferences;
  73.     }
  74.     public function setPreferences(?array $preferences): static
  75.     {
  76.         $this->preferences $preferences;
  77.         return $this;
  78.     }
  79.     // Helper methods for specific chat preferences
  80.     public function isChatSoundEnabled(): bool
  81.     {
  82.         return $this->preferences['chat_sound_enabled'] ?? true// Default to true
  83.     }
  84.     public function setChatSoundEnabled(bool $enabled): static
  85.     {
  86.         $this->preferences['chat_sound_enabled'] = $enabled;
  87.         return $this;
  88.     }
  89.     public function isDirectMessagesAllowed(): bool
  90.     {
  91.         return $this->preferences['allow_direct_messages'] ?? true// Default to true
  92.     }
  93.     public function setDirectMessagesAllowed(bool $allowed): static
  94.     {
  95.         $this->preferences['allow_direct_messages'] = $allowed;
  96.         return $this;
  97.     }
  98.     
  99.     public function getLocation(): ?string
  100.     {
  101.         return $this->location;
  102.     }
  103.     
  104.     public function setLocation(?string $location): static
  105.     {
  106.         $this->location $location;
  107.         
  108.         return $this;
  109.     }
  110.     
  111.     public function getJobTitle(): ?string
  112.     {
  113.         return $this->jobTitle;
  114.     }
  115.     
  116.     public function setJobTitle(?string $jobTitle): static
  117.     {
  118.         $this->jobTitle $jobTitle;
  119.         
  120.         return $this;
  121.     }
  122.     
  123.     public function getLinkedinUrl(): ?string
  124.     {
  125.         return $this->linkedinUrl;
  126.     }
  127.     
  128.     public function setLinkedinUrl(?string $linkedinUrl): static
  129.     {
  130.         $this->linkedinUrl $linkedinUrl;
  131.         
  132.         return $this;
  133.     }
  134.     
  135.     public function getTwitterUrl(): ?string
  136.     {
  137.         return $this->twitterUrl;
  138.     }
  139.     
  140.     public function setTwitterUrl(?string $twitterUrl): static
  141.     {
  142.         $this->twitterUrl $twitterUrl;
  143.         
  144.         return $this;
  145.     }
  146.     
  147.     public function getInstagramUrl(): ?string
  148.     {
  149.         return $this->instagramUrl;
  150.     }
  151.     
  152.     public function setInstagramUrl(?string $instagramUrl): static
  153.     {
  154.         $this->instagramUrl $instagramUrl;
  155.         
  156.         return $this;
  157.     }
  158.     
  159.     /**
  160.      * Get social media links as an array
  161.      */
  162.     public function getSocialLinks(): array
  163.     {
  164.         $links = [];
  165.         
  166.         if ($this->linkedinUrl) {
  167.             $links['linkedin'] = $this->linkedinUrl;
  168.         }
  169.         
  170.         if ($this->twitterUrl) {
  171.             $links['twitter'] = $this->twitterUrl;
  172.         }
  173.         
  174.         if ($this->instagramUrl) {
  175.             $links['instagram'] = $this->instagramUrl;
  176.         }
  177.         
  178.         return $links;
  179.     }
  180. }