<?php
namespace App\Entity;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use App\Traits\CreatedUpdatedTrait;
use JMS\Serializer\Annotation as Serializer;
use JMS\Serializer\Annotation\Expose;
use Gedmo\Mapping\Annotation as Gedmo;
use JMS\Serializer\Annotation\ExclusionPolicy;
use Doctrine\Common\Collections\ArrayCollection;
use Symfony\Component\HttpFoundation\File\File;
use Vich\UploaderBundle\Mapping\Annotation as Vich;
use Symfony\Component\Security\Core\User\UserInterface;
/**
* @ORM\Table(name="v_user",indexes={
* @ORM\Index(name="api_key_idx", fields={"apiToken"}),
* @ORM\Index(name="name_idx", fields={"name"}),
* @ORM\Index(name="phone_idx", fields={"phone"}),
* @ORM\Index(name="email_idx", fields={"email"}),
* @ORM\Index(name="clinic_code_idx", fields={"clinicCode"}),
* @ORM\Index(name="firebase_id_idx", fields={"firebaseId"}),
* })
* @ORM\Entity(repositoryClass="App\Repository\UserRepository")
* @ExclusionPolicy("all")
* @Gedmo\Loggable
* @Vich\Uploadable
* @Gedmo\SoftDeleteable(fieldName="deletedAt", timeAware=false)
*/
class User implements UserInterface
{
const USER_TYPE_PATIENT = 'PATIENT';
const USER_TYPE_FOLLOWER = 'FOLLOWER';
public static function getUserTypes(){
return [
self::USER_TYPE_PATIENT => 'Patient',
self::USER_TYPE_FOLLOWER => 'Follower',
];
}
const REGISTRATION_METHOD_SMS = 'SMS';
const REGISTRATION_METHOD_EMAIL = 'EMAIL';
const REGISTRATION_METHOD_APPLE = 'APPLE';
const REGISTRATION_METHOD_FACEBOOK = 'FACEBOOK';
const REGISTRATION_METHOD_GOOGLE = 'GOOGLE';
const USER_SUBSCRIPTION_TYPE_CLINIC = 'CLINIC';
const USER_SUBSCRIPTION_TYPE_FREEMIUM = 'FREEMIUM';
const USER_SUBSCRIPTION_TYPE_NOSUB = 'NOSUB';
const USER_SUBSCRIPTION_TYPE_UNSUBSCRIBED = 'UNSUBSCRIBED';
public static function getSubscriptionTypeDefinitions(){
return [
self::USER_SUBSCRIPTION_TYPE_CLINIC => 'Clinic',
self::USER_SUBSCRIPTION_TYPE_FREEMIUM => 'Freemium',
self::USER_SUBSCRIPTION_TYPE_NOSUB => 'No Sub',
self::USER_SUBSCRIPTION_TYPE_UNSUBSCRIBED => 'Unsubscribed',
];
}
public static function getRegistrationMethodDefinitions(){
return [
self::REGISTRATION_METHOD_APPLE => 'Apple',
self::REGISTRATION_METHOD_EMAIL => 'Email',
self::REGISTRATION_METHOD_FACEBOOK => 'Facebook',
self::REGISTRATION_METHOD_GOOGLE => 'Google',
self::REGISTRATION_METHOD_SMS => 'Sms',
];
}
const USER_SUB_USER_TYPE_ACTIVE = 'ACTIVE';
const USER_SUB_USER_TYPE_INACTIVE = 'INACTIVE';
public static function getSubUserTypeDefinitions(){
return [
self::USER_SUB_USER_TYPE_ACTIVE => 'Active',
self::USER_SUB_USER_TYPE_INACTIVE => 'Inactive',
];
}
const GENDER_MALE = 'MALE';
const GENDER_FEMALE = 'FEMALE';
const GENDER_OTHER = 'OTHER';
public static function getGenderDefinitions(){
return [
self::GENDER_MALE => 'Male',
self::GENDER_FEMALE => 'Female',
self::GENDER_OTHER => 'Other',
];
}
const USER_ACTIVE_YES = 'YES';
const USER_ACTIVE_NO = 'NO';
const USER_ACTIVE_CURIOUS = 'CURIOUS';
const USER_ACTIVE_REPRESENT = 'REPRESENT';
public static function getActiveDefinitions()
{
return [
self::USER_ACTIVE_YES => 'Yes',
self::USER_ACTIVE_NO => 'No',
self::USER_ACTIVE_CURIOUS => 'Curious',
self::USER_ACTIVE_REPRESENT => 'Represent',
];
}
const USER_CLINIC_TYPE_IOM = 'IOM';
const USER_CLINIC_TYPE_HAIR_TRANSPLANTATION = 'HAIR_TRANSPLANTATION';
const USER_ACTIVE_OTHER = 'OTHER';
public static function getClinicTypeDefinitions()
{
return [
self::USER_CLINIC_TYPE_IOM => 'IOM',
self::USER_CLINIC_TYPE_HAIR_TRANSPLANTATION => 'HAIR_TRANSPLANTATION',
self::USER_ACTIVE_OTHER => 'Other',
];
}
const APP_USAGE_HELP = 'HELP';
const APP_USAGE_AFTER_CARE_SUPPORT = 'AFTER_CARE_SUPPORT';
const APP_USAGE_INFO_BUSINESS = 'INFO_BUSINESS';
public static function getAppUsageDefinitions()
{
return [
self::APP_USAGE_HELP => 'Help',
self::APP_USAGE_AFTER_CARE_SUPPORT => 'After Care Support',
self::APP_USAGE_INFO_BUSINESS => 'Info Business',
];
}
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
* @Expose
*/
private $id;
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @Expose
* @Gedmo\Versioned
*/
private $name;
/**
* @ORM\Column(type="string", length=10, nullable=true)
* @Expose
* @Gedmo\Versioned
*/
private $gender;
/**
* @ORM\Column(type="string", length=255, unique=true)
* @Expose
* @Gedmo\Versioned
*/
private $email;
/**
* @ORM\Column(type="string", length=80, nullable=true)
* @Expose
* @Gedmo\Versioned
*/
private $phone;
/**
* @ORM\Column(name="firebase_id", type="string", length=80, nullable=true)
* @Gedmo\Versioned
*/
private $firebaseId;
/**
* @var string[]
* @ORM\Column(type="json", nullable=true)
* @Gedmo\Versioned
*/
private $roles;
/**
* @var string Salt
* @ORM\Column(type="string")
*/
private $salt;
/**
* @var string The hashed password
* @ORM\Column(type="string")
*/
private $password;
/**
* Plain password. Used for model validation. Must not be persisted.
* @var string
*/
private $plainPassword;
/**
* @var boolean
* @ORM\Column(type="boolean")
* @Expose
*/
private $confirmed = false;
/**
* @var boolean
* @ORM\Column(type="boolean")
* @Expose
* @Gedmo\Versioned
*/
private $enabled = true;
/**
* @var boolean
* @ORM\Column(type="boolean")
* @Expose
* @Gedmo\Versioned
*/
private $notificationEnabled = true;
/**
* @var \DateTime
*
* @ORM\Column(name="disabled_at", type="datetime", nullable=true)
* @Expose
* @Gedmo\Versioned
*/
private $disabledAt;
/**
* @ORM\Column(name="api_token", type="string", nullable=true)
* @Expose
* @Gedmo\Versioned
*/
private $apiToken;
/**
* @ORM\Column(name="clinic_type", type="string", length=255, nullable=true)
* @Expose
* @Gedmo\Versioned
*/
private $clinicType;
/**
* @Expose
* @ORM\ManyToOne(targetEntity="App\Entity\Clinic")
*/
private $currentClinic;
/**
* @ORM\Column(name="clinic_code", type="string", length=255, nullable=true)
* @Expose
* @Gedmo\Versioned
*/
private $clinicCode;
/**
* User defined clinic name - value is from user input
* @ORM\Column(name="clinic_name", type="string", length=255, nullable=true)
* @Expose
* @Gedmo\Versioned
*/
private $clinicName;
/**
* @ORM\Column(name="follow_code", type="string", length=255, nullable=true)
* @Expose
* @Gedmo\Versioned
*/
private $followCode;
/**
* @ORM\Column(name="referral_code", type="string", length=255, nullable=true)
* @Expose
* @Gedmo\Versioned
*/
private $referralCode;
private $enableFollowCode;
/**
* @var string
* @ORM\Column(type="string", length=255, nullable=true)
* @Gedmo\Versioned
*/
private $device;
/**
* @ORM\Column(name="user_type", type="string", length=255, nullable=true)
* @Expose
*/
private $userType;
/**
* @ORM\ManyToOne(targetEntity="User", inversedBy="followers")
* @Expose
*/
private $parent;
/**
* @ORM\OneToMany(targetEntity="User", mappedBy="parent", orphanRemoval=true, cascade={"persist", "remove"})
*/
private $followers;
/**
* @var string
*
* @ORM\Column(type="string", length=40, nullable=true)
* @Expose
*/
private $registrationMethod;
/**
* @ORM\Column(name="subscription_type", type="string", length=255, nullable=true)
* @Expose
*/
private $subscriptionType;
/**
* @var array
* @ORM\Column(name="extra_data", type="json", nullable=true)
* @Expose
* @Gedmo\Versioned
*/
private $extraData;
/**
* @var ArrayCollection | UserClinic[]
*
* @ORM\OneToMany(targetEntity="App\Entity\UserClinic", mappedBy="user")
* @Expose
*/
private $clinics;
/**
* @ORM\Column(name="dob", type="date", nullable=true)
* @Gedmo\Versioned
* @Expose
*/
private $dob;
/**
* @var string
*
* @ORM\Column(name="app_version", type="string", length=80, nullable=true)
* @Expose
*/
private $appVersion;
/**
* @var string
*
* @ORM\Column(name="country", type="string", length=255, nullable=true)
* @Expose
*/
private $country;
/**
* @var string
*
* @ORM\Column(name="region", type="string", length=255, nullable=true)
* @Expose
*/
private $region;
/**
* @var string
*
* @ORM\Column(name="city", type="string", length=255, nullable=true)
* @Expose
*/
private $city;
/**
* @var string
*
* @ORM\Column(name="location", type="string", length=255, nullable=true)
* @Expose
*/
private $location;
/**
* @var string
*
* @ORM\Column(name="bio", type="text", nullable=true)
* @Expose
*/
private $bio;
/**
* @var string
* @ORM\Column(type="string", length=20, nullable=true)
* @Expose
* @Gedmo\Versioned
*/
private $active;
/**
* @var string
* @ORM\Column(type="string", length=40, nullable=true)
* @Expose
* @Gedmo\Versioned
*/
private $appUsage;
/**
* @var boolean
* @ORM\Column(type="boolean")
* @Expose
* @Gedmo\Versioned
*/
private $futureTreatmentReminder = false;
/**
* @var string
*
* @ORM\Column(name="custom_protocol_value", type="string", length=255, nullable=true)
* @Expose
* @Gedmo\Versioned
*/
private $customProtocolValue;
/**
* @var string
*
* @ORM\Column(name="sub_user_type", type="string", length=255, nullable=true)
* @Expose
* @Gedmo\Versioned
*/
private $subUserType = self::USER_SUB_USER_TYPE_INACTIVE;
/**
* @var string
*
* @ORM\Column(name="fcmid", type="text", nullable=true)
*/
private $fcmId;
/**
* @Vich\UploadableField(mapping="user_image", fileNameProperty="imageName")
*
* @var File
*/
private $imageFile;
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @Expose
*
* @var string
*/
private $imageName;
/**
* @var boolean
* @ORM\Column(type="boolean")
* @Expose
*/
private $tutorialMain = false;
/**
* @var boolean
* @ORM\Column(type="boolean")
* @Expose
*/
private $tutorialCommunity = false;
/**
* @var boolean
* @ORM\Column(type="boolean")
* @Expose
*/
private $communityWelcomeScreenViewed = false;
/**
* @var boolean
* @ORM\Column(type="boolean")
* @Expose
*/
private $personalBoardWelcomeScreenViewed = false;
/**
* Random string sent to the user email/sms address in order to verify it.
*
* @var string|null
* @ORM\Column(name="confirmation_token", type="string", length=180, unique=true, nullable=true)
* @Expose
*/
protected $confirmationToken;
/**
* @var \DateTime|null
* @ORM\Column(name="last_login", type="datetime", nullable=true)
*/
protected $lastLogin;
/**
* @ORM\Column(name="deleted_at", type="datetime", nullable=true)
*/
private $deletedAt;
/**
* @var string|null
* @ORM\Column(name="mixpanel_distinct_id", type="string", length=255, nullable=true)
*/
private $mixpanelDistinctId;
/**
* @var string|null
* @ORM\Column(name="already_have_hair_transplant", type="string", length=20, nullable=true)
*/
private $alreadyHaveHairTransplant;
/**
* @var string|null
* @ORM\Column(name="new_treatment_protocol_start_date", type="datetime", nullable=true)
*/
private $newTreatmentProtocolStartDate;
/**
* @ORM\OneToOne(targetEntity="App\Entity\Patient")
*/
private $patient;
/**
* @var \App\Entity\UserContentBlockHistory
* @ORM\OneToMany(targetEntity="App\Entity\UserContentBlockHistory", mappedBy="user")
* @ORM\OrderBy({"created": "DESC"})
* @Expose
*/
private $contentBlockHistories;
/**
* @ORM\OneToMany(targetEntity="App\Entity\Picture", mappedBy="user")
*/
private $pictures;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\User")
* @Serializer\Type("Relation")
*/
private $referredBy;
/**
* @var string
*
* @ORM\Column(name="locale", type="string", length=10, nullable=true)
* @Expose
*/
private $locale;
/**
* @var string
*
* @ORM\Column(name="source", type="string", length=100, nullable=true)
* @Expose
*/
private $source;
/**
* @var boolean
* @ORM\Column(type="boolean")
* @Expose
*/
private $membership = false;
use CreatedUpdatedTrait;
public function __construct()
{
$this->salt = base_convert(sha1(uniqid(mt_rand(), true)), 16, 36);
$this->followers = new ArrayCollection();
$this->treatmentsForms = new ArrayCollection();
}
public function __toString()
{
return (string) $this->name;
}
public function getId(): ?int
{
return $this->id;
}
/**
* @return mixed
*/
public function getName()
{
return $this->name;
}
/**
* @param mixed $name
*/
public function setName($name): void
{
$this->name = $name;
}
/**
* @return mixed
*/
public function getGender()
{
return $this->gender;
}
/**
* @param mixed $gender
*/
public function setGender($gender): void
{
$this->gender = $gender;
}
public function getEmail(): ?string
{
return $this->email;
}
public function setEmail(string $email): self
{
$this->email = $email;
return $this;
}
/**
* @return mixed
*/
public function getPhone()
{
return $this->phone;
}
/**
* @param mixed $phone
*/
public function setPhone($phone): void
{
$this->phone = $phone;
}
/**
* @return mixed
*/
public function getFirebaseId()
{
return $this->firebaseId;
}
/**
* @param mixed $firebaseId
*/
public function setFirebaseId($firebaseId): void
{
$this->firebaseId = $firebaseId;
}
/**
* A visual identifier that represents this user.
*
* @see UserInterface
*/
public function getUsername(): string
{
return (string) $this->email;
}
/**
* @see UserInterface
*/
public function getRoles(): array
{
$roles = $this->roles;
// guarantee every user at least has ROLE_USER
$roles[] = 'ROLE_USER';
return array_unique($roles);
}
public function setRoles(array $roles): self
{
$this->roles = $roles;
return $this;
}
/**
* @see UserInterface
*/
public function getPassword(): string
{
return (string) $this->password;
}
public function setPassword(string $password): self
{
$this->password = $password;
return $this;
}
/**
* @return string
*/
public function getPlainPassword(): ?string
{
return $this->plainPassword;
}
/**
* @param string $plainPassword
*/
public function setPlainPassword(string $plainPassword): void
{
$this->plainPassword = $plainPassword;
}
/**
* @return string|void|null
*/
public function getSalt()
{
$this->salt;
}
/**
* @see UserInterface
*/
public function eraseCredentials()
{
// If you store any temporary, sensitive data on the user, clear it here
// $this->plainPassword = null;
}
/**
* @return bool
*/
public function isConfirmed(): bool
{
return $this->confirmed;
}
/**
* @param bool $confirmed
*/
public function setConfirmed(bool $confirmed): void
{
$this->confirmed = $confirmed;
}
/**
* @return bool
*/
public function isEnabled(): bool
{
return $this->enabled;
}
/**
* @param bool $enabled
*/
public function setEnabled(bool $enabled): void
{
$this->enabled = $enabled;
}
/**
* @return bool
*/
public function isNotificationEnabled(): bool
{
return $this->notificationEnabled;
}
/**
* @param bool $notificationEnabled
*/
public function setNotificationEnabled(bool $notificationEnabled): void
{
$this->notificationEnabled = $notificationEnabled;
}
/**
* @return \DateTime
*/
public function getDisabledAt(): ?\DateTime
{
return $this->disabledAt;
}
/**
* @param \DateTime $disabledAt
*/
public function setDisabledAt($disabledAt): void
{
$this->disabledAt = $disabledAt;
}
/**
* @return mixed
*/
public function getApiToken()
{
return $this->apiToken;
}
/**
* @param mixed $apiToken
*/
public function setApiToken($apiToken): void
{
$this->apiToken = $apiToken;
}
/**
* @return mixed
*/
public function getClinicType()
{
return $this->clinicType;
}
/**
* @param mixed $clinicType
*/
public function setClinicType($clinicType): void
{
$this->clinicType = $clinicType;
}
/**
* @return mixed
*/
public function getExtraData()
{
return $this->extraData;
}
/**
* @param mixed $extraData
*/
public function setExtraData($extraData): void
{
$this->extraData = $extraData;
}
/**
* @return mixed
*/
public function getClinicCode()
{
return $this->clinicCode;
}
/**
* @param mixed $clinicCode
*/
public function setClinicCode($clinicCode): void
{
$this->clinicCode = $clinicCode;
}
/**
* @return mixed
*/
public function getClinicName()
{
return $this->clinicName;
}
/**
* @param mixed $clinicName
*/
public function setClinicName($clinicName): void
{
$this->clinicName = $clinicName;
}
/**
* @return string
*/
public function getDevice()
{
return $this->device;
}
/**
* @param string $device
*/
public function setDevice($device): void
{
$this->device = $device;
}
/**
* @return mixed
*/
public function getFollowCode()
{
return $this->followCode;
}
/**
* @param mixed $followCode
*/
public function setFollowCode($followCode): void
{
$this->followCode = $followCode;
}
/**
* @return mixed
*/
public function getReferralCode()
{
return $this->referralCode;
}
/**
* @param mixed $referralCode
*/
public function setReferralCode($referralCode): void
{
$this->referralCode = $referralCode;
}
/**
* @return mixed
*/
public function getEnableFollowCode()
{
return $this->enableFollowCode;
}
/**
* @param mixed $enableFollowCode
*/
public function setEnableFollowCode($enableFollowCode): void
{
$this->enableFollowCode = $enableFollowCode;
}
/**
* @return mixed
*/
public function getUserType()
{
return $this->userType;
}
/**
* @param mixed $userType
*/
public function setUserType($userType): void
{
$this->userType = $userType;
}
/**
* @return mixed
*/
public function getParent()
{
return $this->parent;
}
/**
* @param mixed $parent
*/
public function setParent($parent): void
{
$this->parent = $parent;
}
/**
* @return mixed
*/
public function getFollowers()
{
return $this->followers;
}
/**
* @param mixed $followers
*/
public function setFollowers($followers): void
{
$this->followers = $followers;
}
/**
* @return string
*/
public function getRegistrationMethod(): ?string
{
return $this->registrationMethod;
}
/**
* @param string $registrationMethod
*/
public function setRegistrationMethod(string $registrationMethod): void
{
$this->registrationMethod = $registrationMethod;
}
/**
* @return mixed
*/
public function getCurrentClinic()
{
return $this->currentClinic;
}
/**
* @param mixed $currentClinic
*/
public function setCurrentClinic($currentClinic): void
{
$this->currentClinic = $currentClinic;
}
/**
* @return mixed
*/
public function getSubscriptionType()
{
return $this->subscriptionType;
}
/**
* @param mixed $subscriptionType
*/
public function setSubscriptionType($subscriptionType): void
{
$this->subscriptionType = $subscriptionType;
}
/**
* @return mixed
*/
public function getDob()
{
return $this->dob;
}
/**
* @param mixed $dob
*/
public function setDob($dob): void
{
$this->dob = $dob;
}
/**
* @return string
*/
public function getAppVersion(): ?string
{
return $this->appVersion;
}
/**
* @param string $appVersion
*/
public function setAppVersion(?string $appVersion): void
{
$this->appVersion = $appVersion;
}
/**
* @return string
*/
public function getCountry(): ?string
{
return $this->country;
}
/**
* @param string $country
*/
public function setCountry(?string $country): void
{
$this->country = $country;
}
/**
* @return string
*/
public function getRegion(): ?string
{
return $this->region;
}
/**
* @param string $region
*/
public function setRegion(?string $region): void
{
$this->region = $region;
}
/**
* @return string
*/
public function getCity(): ?string
{
return $this->city;
}
/**
* @param string $city
*/
public function setCity(?string $city): void
{
$this->city = $city;
}
/**
* @return string
*/
public function getLocation(): ?string
{
return $this->location;
}
/**
* @param string $location
*/
public function setLocation(?string $location): void
{
$this->location = $location;
}
/**
* @return string
*/
public function getBio(): ?string
{
return $this->bio;
}
/**
* @param string $bio
*/
public function setBio(?string $bio): void
{
$this->bio = $bio;
}
/**
* @return bool
*/
public function getActive(): ?string
{
return $this->active;
}
/**
* @param string $active
*/
public function setActive(?string $active): void
{
$this->active = $active;
}
/**
* @return string
*/
public function getAppUsage(): ?string
{
return $this->appUsage;
}
/**
* @param string $appUsage
*/
public function setAppUsage(?string $appUsage): void
{
$this->appUsage = $appUsage;
}
/**
* @return \DateTime
*/
public function getFertilityStartDate(): ?\DateTime
{
return $this->fertilityStartDate;
}
/**
* @param \DateTime $fertilityStartDate
*/
public function setFertilityStartDate(?\DateTime $fertilityStartDate): void
{
$this->fertilityStartDate = $fertilityStartDate;
}
/**
* @return bool
*/
public function isFutureTreatmentReminder(): ?bool
{
return $this->futureTreatmentReminder;
}
/**
* @param bool $futureTreatmentReminder
*/
public function setFutureTreatmentReminder(?bool $futureTreatmentReminder): void
{
$this->futureTreatmentReminder = $futureTreatmentReminder;
}
/**
* @return string
*/
public function getSubUserType(): ?string
{
return $this->subUserType;
}
/**
* @param string $subUserType
*/
public function setSubUserType(?string $subUserType): void
{
$this->subUserType = $subUserType;
}
/**
* @return string
*/
public function getFcmId(): ?string
{
return $this->fcmId;
}
/**
* @param string $fcmId
*/
public function setFcmId(?string $fcmId): void
{
$this->fcmId = $fcmId;
}
/**
* If manually uploading a file (i.e. not using Symfony Form) ensure an instance
* of 'UploadedFile' is injected into this setter to trigger the update. If this
* bundle's configuration parameter 'inject_on_load' is set to 'true' this setter
* must be able to accept an instance of 'File' as the bundle will inject one here
* during Doctrine hydration.
*
* @param File|\Symfony\Component\HttpFoundation\File\UploadedFile $image
*/
public function setImageFile(File $image = null)
{
$this->imageFile = $image;
if ($image) {
// It is required that at least one field changes if you are using doctrine
// otherwise the event listeners won't be called and the file is lost
$this->updated = new \DateTime('now');
}
}
/**
* @return File
*/
public function getImageFile()
{
return $this->imageFile;
}
/**
* @param string $imageName
*/
public function setImageName($imageName)
{
$this->imageName = $imageName;
}
/**
* @return string
*/
public function getImageName()
{
return $this->imageName;
}
/**
* @return bool
*/
public function isTutorialMain(): ?bool
{
return $this->tutorialMain;
}
/**
* @param bool $tutorialMain
*/
public function setTutorialMain(?bool $tutorialMain): void
{
$this->tutorialMain = $tutorialMain;
}
/**
* @return bool
*/
public function isTutorialCommunity(): ?bool
{
return $this->tutorialCommunity;
}
/**
* @param bool $tutorialCommunity
*/
public function setTutorialCommunity(?bool $tutorialCommunity): void
{
$this->tutorialCommunity = $tutorialCommunity;
}
public function isCommunityWelcomeScreenViewed(){
return $this->communityWelcomeScreenViewed;
}
public function setCommunityWelcomeScreenViewed($communityWelcomeScreenViewed){
$this->communityWelcomeScreenViewed = $communityWelcomeScreenViewed;
}
/**
* @return bool
*/
public function isPersonalBoardWelcomeScreenViewed(): ?bool
{
return $this->personalBoardWelcomeScreenViewed;
}
/**
* @param bool $personalBoardWelcomeScreenViewed
*/
public function setPersonalBoardWelcomeScreenViewed(?bool $personalBoardWelcomeScreenViewed): void
{
$this->personalBoardWelcomeScreenViewed = $personalBoardWelcomeScreenViewed;
}
/**
* @return string|null
*/
public function getConfirmationToken(): ?string
{
return $this->confirmationToken;
}
/**
* @param string|null $confirmationToken
*/
public function setConfirmationToken(?string $confirmationToken): void
{
$this->confirmationToken = $confirmationToken;
}
/**
* @return \DateTime|null
*/
public function getLastLogin(): ?\DateTime
{
return $this->lastLogin;
}
/**
* @param \DateTime|null $lastLogin
*/
public function setLastLogin(?\DateTime $lastLogin): void
{
$this->lastLogin = $lastLogin;
}
/**
* @return mixed
*/
public function getDeletedAt()
{
return $this->deletedAt;
}
/**
* @param mixed $deletedAt
*/
public function setDeletedAt($deletedAt): void
{
$this->deletedAt = $deletedAt;
}
/**
* @return string|null
*/
public function getMixpanelDistinctId(): ?string
{
return $this->mixpanelDistinctId;
}
/**
* @param string|null $mixpanelDistinctId
*/
public function setMixpanelDistinctId(?string $mixpanelDistinctId): void
{
$this->mixpanelDistinctId = $mixpanelDistinctId;
}
/**
* @return string|null
*/
public function getAlreadyHaveHairTransplant(): ?string
{
return $this->alreadyHaveHairTransplant;
}
/**
* @param string|null $alreadyHaveHairTransplant
*/
public function setAlreadyHaveHairTransplant(?string $alreadyHaveHairTransplant): void
{
$this->alreadyHaveHairTransplant = $alreadyHaveHairTransplant;
}
/**
* @return string|null
*/
public function getNewTreatmentProtocolStartDate(): ?string
{
return $this->newTreatmentProtocolStartDate;
}
/**
* @param string|null $newTreatmentProtocolStartDate
*/
public function setNewTreatmentProtocolStartDate(?string $newTreatmentProtocolStartDate): void
{
$this->newTreatmentProtocolStartDate = $newTreatmentProtocolStartDate;
}
/**
* @return mixed
*/
public function getPatient()
{
return $this->patient;
}
/**
* @param mixed $patient
*/
public function setPatient($patient): void
{
$this->patient = $patient;
}
public function getContentBlockHistories(){
return $this->contentBlockHistories;
}
private $treatment;
/**
* @ORM\OneToMany(targetEntity=TreatmentsForm::class, mappedBy="user")
*/
private $treatmentsForms;
/**
* @Serializer\VirtualProperty()
* @Serializer\SerializedName("treatment")
* @Serializer\Expose
*/
public function getTreatment()
{
return $this->patient ? $this->patient->getTreatment() : null;
}
public function getPictures()
{
return $this->pictures;
}
/**
* @return mixed
*/
public function getReferredBy()
{
return $this->referredBy;
}
/**
* @param mixed $referredBy
*/
public function setReferredBy($referredBy): void
{
$this->referredBy = $referredBy;
}
/**
* @return string
*/
public function getLocale(): ?string
{
return $this->locale;
}
/**
* @param string $locale
*/
public function setLocale(?string $locale): void
{
$this->locale = $locale;
}
/**
* @return string
*/
public function getSource(): ?string
{
return $this->source;
}
/**
* @param string $source
*/
public function setSource(?string $source): void
{
$this->source = $source;
}
/**
* @return bool
*/
public function isMembership(): ?bool
{
return $this->membership;
}
/**
* @param bool $membership
*/
public function setMembership(?bool $membership): void
{
$this->membership = $membership;
}
/**
* @return Collection<int, TreatmentsForm>
*/
public function getTreatmentsForms(): Collection
{
return $this->treatmentsForms;
}
public function addTreatmentsForm(TreatmentsForm $treatmentsForm): self
{
if (!$this->treatmentsForms->contains($treatmentsForm)) {
$this->treatmentsForms[] = $treatmentsForm;
$treatmentsForm->setUser($this);
}
return $this;
}
public function removeTreatmentsForm(TreatmentsForm $treatmentsForm): self
{
if ($this->treatmentsForms->removeElement($treatmentsForm)) {
// set the owning side to null (unless already changed)
if ($treatmentsForm->getUser() === $this) {
$treatmentsForm->setUser(null);
}
}
return $this;
}
}