<?php
namespace App\Entity;
use App\Entity\Profile\JoboffererProfile;
use App\Entity\Profile\JobseekerProfile;
use DateTime;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
*
* @ORM\Table(
* name="profile_favorizations",
* uniqueConstraints={
*
* @ORM\UniqueConstraint(name="jobseeker_profiles_id_jobofferer_profiles_id_favorer_unique_idx", columns={"jobseeker_profiles_id", "jobofferer_profiles_id", "favorer"})
* }
* )
*
* The unique constraint ensures only one favorization from a jobseeker to a jobofferer or vice versa.
*/
class ProfileFavorization
{
public const FAVORER_JOBSEEKER = 0;
public const FAVORER_JOBOFFERER = 1;
/**
* @var string
*
* @ORM\GeneratedValue(strategy="CUSTOM")
*
* @ORM\CustomIdGenerator(class="App\Utility\DatabaseIdGenerator")
*
* @ORM\Column(name="id", type="guid")
*
* @ORM\Id
*/
protected $id;
/**
* @var JobseekerProfile
*
* @ORM\ManyToOne(targetEntity="App\Entity\Profile\JobseekerProfile", inversedBy="profileFavorizations", cascade={"persist"})
*
* @ORM\JoinColumn(name="jobseeker_profiles_id", referencedColumnName="id", nullable=false, onDelete="CASCADE")
*/
protected $jobseekerProfile;
/**
* @var JoboffererProfile
*
* @ORM\ManyToOne(targetEntity="App\Entity\Profile\JoboffererProfile", inversedBy="profileFavorizations", cascade={"persist"})
*
* @ORM\JoinColumn(name="jobofferer_profiles_id", referencedColumnName="id", nullable=false, onDelete="CASCADE")
*/
protected $joboffererProfile;
/**
* @var int
*
* @ORM\Column(name="favorer", type="smallint", nullable=false)
*/
protected $favorer;
/**
* @var DateTime
*
* @ORM\Column(name="created_at", type="datetime", nullable=false)
*/
protected $createdAt;
public function isFavorer(Profile $profile)
{
if (($this->favorer === self::FAVORER_JOBSEEKER
&& $profile instanceof JobseekerProfile
&& $profile->getId() === $this->getJobseekerProfile()->getId())
|| ($this->favorer === self::FAVORER_JOBOFFERER
&& $profile instanceof JoboffererProfile
&& $profile->getId() === $this->getJoboffererProfile()->getId())
) {
return true;
} else {
return false;
}
}
public function setId(string $id)
{
$this->id = $id;
}
public function getId()
{
return $this->id;
}
/**
* @return JobseekerProfile
*/
public function getJobseekerProfile()
{
return $this->jobseekerProfile;
}
public function setJobseekerProfile(JobseekerProfile $jobseekerProfile)
{
$this->jobseekerProfile = $jobseekerProfile;
}
/**
* @return JoboffererProfile
*/
public function getJoboffererProfile()
{
return $this->joboffererProfile;
}
public function setJoboffererProfile(JoboffererProfile $joboffererProfile)
{
$this->joboffererProfile = $joboffererProfile;
}
/**
* @return int
*/
public function getFavorer()
{
return $this->favorer;
}
public function setFavorer(int $favorer)
{
$this->favorer = $favorer;
}
/**
* @return DateTime
*/
public function getCreatedAt()
{
return $this->createdAt;
}
public function setCreatedAt(DateTime $createdAt)
{
$this->createdAt = $createdAt;
}
public function __toString()
{
return $this->getId();
}
}