<?php
namespace App\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\DBAL\Types\Types;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Form\Extension\Core\DataTransformer\DateTimeToStringTransformer;
/**
* @ORM\Entity(repositoryClass="App\Repository\ReferralRepository")
* @ORM\Table(name="referral")
* @ORM\HasLifecycleCallbacks()
*/
class ReferralEntity
{
/**
* @ORM\Column(type="bigint")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(name="status", type="string")
*/
protected $status;
/**
* @ORM\Column(name="referrent_email", type="string", nullable =true)
*/
protected $referrentEmail;
/**
* @ORM\Column(name="level", type="integer")
*/
protected $level;
/**
* @ORM\Column(name="created_by", type="string", length=50)
*/
protected $createdBy;
/**
* @ORM\Column(name="created_at", type="datetime")
*/
protected $createdAt;
/**
* @ORM\Column(name="updated_by", type="string", length=50)
*/
protected $updatedBy;
/**
* @ORM\Column(name="updated_at", type="datetime")
*/
protected $updatedAt;
/**
* @ORM\OneToOne(targetEntity="UserEntity", inversedBy="referral")
*/
protected $referrent;
/**
* @ORM\ManyToOne(targetEntity="UserEntity", inversedBy="referrals")
* @ORM\JoinColumn(name="referrer_id", referencedColumnName="id")
*/
protected $referrer;
/**
* @ORM\OneToMany(targetEntity="UserBonusTokenEntity", mappedBy="referral", cascade={"remove"})
*/
protected $userBonusTokens;
/**
* @ORM\OneToMany(targetEntity="UserBonusTokenEntity", mappedBy="secondaryReferral", cascade={"remove"})
*/
protected $secondaryUserBonusTokens;
/**
* @ORM\OneToMany(targetEntity="UserBonusTokenEntity", mappedBy="thirdReferral", cascade={"remove"})
*/
protected $thirdUserBonusTokens;
/**
* Set createdAt
*
* @ORM\PrePersist
*/
public function setCreatedAtValue()
{
$this->createdBy = isset($_COOKIE['username']) ? $_COOKIE['username'] : 'System';
$this->createdAt = new \DateTime();
$this->updatedBy = isset($_COOKIE['username']) ? $_COOKIE['username'] : 'System';
$this->updatedAt = new \DateTime();
$this->status = 'Completed';
}
/**
*
* Set updatedAt
*
* @ORM\PreUpdate
*/
public function setUpdatedAtValue()
{
$this->updatedBy = isset($_COOKIE['username']) ? $_COOKIE['username'] : 'System';
$this->updatedAt = new \DateTime();
$this->status = 'Completed';
}
public function __construct($data=null)
{
if(!is_null($data)) {
}
$this->userBonusTokens = new ArrayCollection();
$this->secondaryUserBonusTokens = new ArrayCollection();
$this->thirdUserBonusTokens = new ArrayCollection();
}
/*--------------------------------------------------------------------------------------------------------*/
/* User Defined Setters and Getters */
/*--------------------------------------------------------------------------------------------------------*/
/**
* Get totalEarning
*
* @return string
*/
public function getTotalEarning($type) {
$earning = 0;
if($type == 'primary'){
foreach ($this->userBonusTokens as $bonus){
if(in_array($bonus->getBonus()->getCode(), array('PRP','PRSU','TRSU'))){
$earning+= $bonus->getAmount();
}
}
}
return $earning;
}
/**
* Get idEncoded
*
* @return string
*/
public function getIdEncoded() {
return base64_encode($this->id);
}
/**
* Get createdDateAsTime
*
* @return string
*/
public function getCreatedAtAsTime()
{
$dttst = new DateTimeToStringTransformer();
return !empty($this->createdAt) ? strtotime($dttst->transform($this->createdAt)) : 0;
}
/**
* Get createdAtAsString
*
* @return string
*/
public function getCreatedAtAsString() {
$dttst = new DateTimeToStringTransformer();
return !empty($this->createdAt) ? date('m/d/Y', strtotime($dttst->transform($this->createdAt))) : '';
}
/*--------------------------------------------------------------------------------------------------------*/
/* Setters and Getters */
/*--------------------------------------------------------------------------------------------------------*/
/**
* Get id.
*
* @return int
*/
public function getId()
{
return $this->id;
}
/**
* Set status.
*
* @param string $status
*
* @return ReferralEntity
*/
public function setStatus($status)
{
$this->status = $status;
return $this;
}
/**
* Get status.
*
* @return string
*/
public function getStatus()
{
return $this->status;
}
/**
* Set createdBy.
*
* @param string $createdBy
*
* @return ReferralEntity
*/
public function setCreatedBy($createdBy)
{
$this->createdBy = $createdBy;
return $this;
}
/**
* Get createdBy.
*
* @return string
*/
public function getCreatedBy()
{
return $this->createdBy;
}
/**
* Set createdAt.
*
* @param \DateTime $createdAt
*
* @return ReferralEntity
*/
public function setCreatedAt($createdAt)
{
$this->createdAt = $createdAt;
return $this;
}
/**
* Get createdAt.
*
* @return \DateTime
*/
public function getCreatedAt()
{
return $this->createdAt;
}
/**
* Set updatedBy.
*
* @param string $updatedBy
*
* @return ReferralEntity
*/
public function setUpdatedBy($updatedBy)
{
$this->updatedBy = $updatedBy;
return $this;
}
/**
* Get updatedBy.
*
* @return string
*/
public function getUpdatedBy()
{
return $this->updatedBy;
}
/**
* Set updatedAt.
*
* @param \DateTime $updatedAt
*
* @return ReferralEntity
*/
public function setUpdatedAt($updatedAt)
{
$this->updatedAt = $updatedAt;
return $this;
}
/**
* Get updatedAt.
*
* @return \DateTime
*/
public function getUpdatedAt()
{
return $this->updatedAt;
}
/**
* Set referrer.
*
* @param \App\Entity\UserEntity|null $referrer
*
* @return ReferralEntity
*/
public function setReferrer(\App\Entity\UserEntity $referrer = null)
{
$this->referrer = $referrer;
return $this;
}
/**
* Get referrer.
*
* @return \App\Entity\UserEntity|null
*/
public function getReferrer()
{
return $this->referrer;
}
/**
* Set user.
*
* @param \App\Entity\UserEntity|null $user
*
* @return ReferralEntity
*/
public function setUser(\App\Entity\UserEntity $user = null)
{
$this->user = $user;
return $this;
}
/**
* Get user.
*
* @return \App\Entity\UserEntity|null
*/
public function getUser()
{
return $this->user;
}
/**
* Add userBonusToken.
*
* @param \App\Entity\UserBonusTokenEntity $userBonusToken
*
* @return ReferralEntity
*/
public function addUserBonusToken(\App\Entity\UserBonusTokenEntity $userBonusToken)
{
$this->userBonusTokens[] = $userBonusToken;
return $this;
}
/**
* Remove userBonusToken.
*
* @param \App\Entity\UserBonusTokenEntity $userBonusToken
*
* @return boolean TRUE if this collection contained the specified element, FALSE otherwise.
*/
public function removeUserBonusToken(\App\Entity\UserBonusTokenEntity $userBonusToken)
{
return $this->userBonusTokens->removeElement($userBonusToken);
}
/**
* Get userBonusTokens.
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getUserBonusTokens()
{
return $this->userBonusTokens;
}
/**
* Add secondaryUserBonusToken.
*
* @param \App\Entity\UserBonusTokenEntity $secondaryUserBonusToken
*
* @return ReferralEntity
*/
public function addSecondaryUserBonusToken(\App\Entity\UserBonusTokenEntity $secondaryUserBonusToken)
{
$this->secondaryUserBonusTokens[] = $secondaryUserBonusToken;
return $this;
}
/**
* Remove secondaryUserBonusToken.
*
* @param \App\Entity\UserBonusTokenEntity $secondaryUserBonusToken
*
* @return boolean TRUE if this collection contained the specified element, FALSE otherwise.
*/
public function removeSecondaryUserBonusToken(\App\Entity\UserBonusTokenEntity $secondaryUserBonusToken)
{
return $this->secondaryUserBonusTokens->removeElement($secondaryUserBonusToken);
}
/**
* Get secondaryUserBonusTokens.
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getSecondaryUserBonusTokens()
{
return $this->secondaryUserBonusTokens;
}
/**
* Add thirdUserBonusToken.
*
* @param \App\Entity\UserBonusTokenEntity $thirdUserBonusToken
*
* @return ReferralEntity
*/
public function addThirdUserBonusToken(\App\Entity\UserBonusTokenEntity $thirdUserBonusToken)
{
$this->thirdUserBonusTokens[] = $thirdUserBonusToken;
return $this;
}
/**
* Remove thirdUserBonusToken.
*
* @param \App\Entity\UserBonusTokenEntity $thirdUserBonusToken
*
* @return boolean TRUE if this collection contained the specified element, FALSE otherwise.
*/
public function removeThirdUserBonusToken(\App\Entity\UserBonusTokenEntity $thirdUserBonusToken)
{
return $this->thirdUserBonusTokens->removeElement($thirdUserBonusToken);
}
/**
* Get thirdUserBonusTokens.
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getThirdUserBonusTokens()
{
return $this->thirdUserBonusTokens;
}
public function getLevel()
{
return $this->level;
}
public function setLevel($level): self
{
$this->level = $level;
return $this;
}
public function getReferrent(): ?UserEntity
{
return $this->referrent;
}
public function setReferrent(?UserEntity $referrent): self
{
$this->referrent = $referrent;
return $this;
}
public function getReferrentEmail(): ?string
{
return $this->referrentEmail;
}
public function setReferrentEmail(?string $referrentEmail): self
{
$this->referrentEmail = $referrentEmail;
return $this;
}
}