4 use Doctrine\Common\Collections\ArrayCollection
;
5 use Doctrine\ORM\Mapping
as ORM
;
6 use JMS\Serializer\Annotation\ExclusionPolicy
;
7 use JMS\Serializer\Annotation\Expose
;
11 * @ORM\Table(name="Person", indexes={@ORM\Index(name="authentification_idx", columns={"email", "password"}),
12 * @ORM\Index(name="search_idx", columns={"firstname", "lastname", "email"})});
18 * @ORM\Column(type="bigint")
19 * @ORM\GeneratedValue(strategy="AUTO")
24 * @ORM\Column(type="string")
29 * @ORM\Column(type="string")
34 * @ORM\Column(type="string", unique=true)
39 * @ORM\Column(type="string")
44 * @ORM\Column(type="boolean", options={"default":false})
49 * One person have many friends
50 * @ORM\OneToMany(targetEntity="App\Entity\Friendship", mappedBy="person", cascade={"all"})
55 * One person have many friends
56 * @ORM\OneToMany(targetEntity="App\Entity\Friendship", mappedBy="friend", cascade={"all"})
58 protected $friends_with_me;
61 * [__construct description]
62 * NOTE: Should we forbid reverse pairs (person_id=123 and friend_id=456
63 * can be viewed as the same as person_id=456 and friend_id=123)
64 * if we view friendship as a bidirectionnal association?
66 public function __construct()
68 $this->friends
= new ArrayCollection();
69 $this->friends_with_me
= new ArrayCollection();
72 public function getId()
77 public function getFirstName()
79 return $this->firstname
;
82 public function getLastName()
84 return $this->lastname
;
87 public function getEmail()
92 public function getPassword()
94 return $this->password
;
97 public function getOnline()
102 public function getFriends()
104 return $this->friends
;
107 public function getFriendsWithMe()
109 return $this->friends_with_me
;
112 public function setId($id)
118 public function setFirstName($firstname)
120 $this->firstname
= $firstname;
124 public function setLastName($lastname)
126 $this->lastname
= $lastname;
130 public function setEmail($email)
132 $this->email
= $email;
136 public function setPassword($password)
138 $this->password
= $password;
142 public function setOnline($online)
144 $this->online
= $online;
148 public function addFriendship(Friendship
$friendship)
150 $this->friends
->add($friendship);
151 $friendship->friend
->addFriendshipWithMe($friendship);
154 public function addFriendshipWithMe(Friendship
$friendship)
156 $this->friends_with_me
->add($friendship);
159 public function addFriend(Person
$friend)
161 $fs = new Friendship();
162 $fs->setPerson($this);
163 $fs->setFriend($friend);
164 // set defaults validation to true for now
165 $fs->setIsValid(true);
167 $this->addFriendship($fs);