<?php
namespace App\Entity\Company;
use App\Entity\Company;
use App\Entity\Company\Person\Approver;
use App\Entity\Company\Person\FrequentFlyer;
use App\Entity\Company\Person\Passport;
use App\Entity\Company\Person\Rule;
use App\Entity\Company\Person\Visa;
use App\Entity\Term;
use App\Entity\Traits\Creation;
use App\Entity\Traits\Deleteable;
use App\Entity\Traits\Idable;
use App\Entity\User;
use App\Repository\Company\PersonRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;
#[ORM\Entity(repositoryClass: PersonRepository::class)]
#[ORM\Table(name: 'company_persons')]
class Person
{
use Idable;
use Creation;
use Deleteable;
#[ORM\ManyToOne(targetEntity: Company::class)]
protected $company;
#[ORM\OneToOne(inversedBy: 'person', targetEntity: User::class)]
protected $relatedUser;
#[ORM\ManyToOne(targetEntity: Term::class)]
protected $department;
#[ORM\Column(type: 'string', nullable: true)]
protected $avatar;
#[ORM\Column(type: 'string', length: 5, nullable: true)]
protected $greeting;
#[ORM\Column(type: 'string', length: 15, nullable: true)]
protected $title;
#[ORM\Column(type: 'boolean', nullable: true)]
protected $gender;
#[ORM\Column(type: 'string', length: 50)]
protected $name;
#[ORM\Column(type: 'string', length: 50, nullable: true)]
protected $middleName;
#[ORM\Column(type: 'string', length: 50)]
protected $surname;
#[ORM\Column(type: 'string', length: 50)]
protected $nameOrg;
#[ORM\Column(type: 'string', length: 50, nullable: true)]
protected $middleNameOrg;
#[ORM\Column(type: 'string', length: 50)]
protected $surnameOrg;
#[ORM\Column(type: 'string', length: 50)]
protected $identityNumber;
#[ORM\Column(type: 'date')]
protected $birthday;
#[ORM\Column(type: 'string', length: 2)]
protected $nationality;
#[ORM\Column(type: 'string', length: 25)]
protected $phone;
#[ORM\Column(type: 'string', length: 100)]
protected $email;
//#[ORM\Column(type: 'string', length: 100, nullable: true)]
//protected $jobTitle;
#[ORM\ManyToOne(targetEntity: Term::class)]
protected $jobTitle;
// #[ORM\Column(type: 'string', length: 100, nullable: true)]
// protected $costCenter;
#[ORM\ManyToOne(targetEntity: Term::class)]
protected $costCenter;
#[ORM\Column(type: 'string', length: 100, nullable: true)]
protected $companyUid;
#[ORM\Column(type: 'string', length: 100, nullable: true)]
protected $employeeNumber;
#[ORM\Column(type: 'string', length: 100, nullable: true)]
protected $division;
#[ORM\Column(type: 'string', length: 100, nullable: true)]
protected $locationId;
#[ORM\Column(type: 'string', length: 100, nullable: true)]
protected $departmentCustomerId;
#[ORM\Column(type: 'string', length: 100, nullable: true)]
protected $cmgNumber;
#[ORM\Column(type: 'string', length: 100, nullable: true)]
protected $projectNumber;
#[ORM\Column(type: 'string', length: 100, nullable: true)]
protected $sapCode;
#[ORM\OneToOne(targetEntity: Rule::class)]
protected $rule;
#[ORM\OneToMany(mappedBy: 'person', targetEntity: Passport::class)]
protected $passports;
#[ORM\OneToMany(mappedBy: 'person', targetEntity: Visa::class)]
protected $visas;
#[ORM\OneToMany(mappedBy: 'person', targetEntity: FrequentFlyer::class)]
protected $frequentFlyers;
#[ORM\OneToMany(mappedBy: 'person', targetEntity: Approver::class)]
protected $approvers;
public function __construct()
{
$this->passports = new ArrayCollection();
$this->visas = new ArrayCollection();
$this->frequentFlyers = new ArrayCollection();
$this->approvers = new ArrayCollection();
}
public function getNameOrg()
{
return $this->nameOrg;
}
public function setNameOrg($nameOrg): void
{
$this->nameOrg = $nameOrg;
}
public function getMiddleNameOrg()
{
return $this->middleNameOrg;
}
public function setMiddleNameOrg($middleNameOrg): void
{
$this->middleNameOrg = $middleNameOrg;
}
public function getSurnameOrg()
{
return $this->surnameOrg;
}
public function setSurnameOrg($surnameOrg): void
{
$this->surnameOrg = $surnameOrg;
}
public function getCompany()
{
return $this->company;
}
public function setCompany($company): void
{
$this->company = $company;
}
public function getDepartment()
{
return $this->department;
}
public function setDepartment($department): void
{
$this->department = $department;
}
public function getAvatar()
{
return $this->avatar;
}
public function setAvatar($avatar): void
{
$this->avatar = $avatar;
}
public function getGreeting()
{
return $this->greeting;
}
public function setGreeting($greeting): void
{
$this->greeting = $greeting;
}
public function getTitle()
{
return $this->title;
}
public function setTitle($title): void
{
$this->title = $title;
}
public function getName()
{
return $this->name;
}
public function setName($name): void
{
$this->name = $name;
}
public function getMiddleName()
{
return $this->middleName;
}
public function setMiddleName($middleName): void
{
$this->middleName = $middleName;
}
public function getSurname()
{
return $this->surname;
}
public function setSurname($surname): void
{
$this->surname = $surname;
}
public function getIdentityNumber()
{
return $this->identityNumber;
}
public function setIdentityNumber($identityNumber): void
{
$this->identityNumber = $identityNumber;
}
public function getBirthday()
{
return $this->birthday;
}
/**
* @param mixed $birthday
*/
public function setBirthday(?\DateTime $birthday): void
{
$this->birthday = $birthday;
}
public function getNationality()
{
return $this->nationality;
}
public function setNationality($nationality): void
{
$this->nationality = $nationality;
}
public function getPhone()
{
return $this->phone;
}
public function setPhone($phone): void
{
$this->phone = $phone;
}
public function getEmail()
{
return $this->email;
}
public function setEmail($email): void
{
$this->email = $email;
}
public function getJobTitle()
{
return $this->jobTitle;
}
public function setJobTitle($jobTitle): void
{
$this->jobTitle = $jobTitle;
}
public function getCostCenter()
{
return $this->costCenter;
}
public function setCostCenter($costCenter): void
{
$this->costCenter = $costCenter;
}
public function getCompanyUid()
{
return $this->companyUid;
}
public function setCompanyUid($companyUid): void
{
$this->companyUid = $companyUid;
}
public function getEmployeeNumber()
{
return $this->employeeNumber;
}
public function setEmployeeNumber($employeeNumber): void
{
$this->employeeNumber = $employeeNumber;
}
public function getDivision()
{
return $this->division;
}
public function setDivision($division): void
{
$this->division = $division;
}
public function getLocationId()
{
return $this->locationId;
}
public function setLocationId($locationId): void
{
$this->locationId = $locationId;
}
public function getDepartmentCustomerId()
{
return $this->departmentCustomerId;
}
public function setDepartmentCustomerId($departmentCustomerId): void
{
$this->departmentCustomerId = $departmentCustomerId;
}
public function getCmgNumber()
{
return $this->cmgNumber;
}
public function setCmgNumber($cmgNumber): void
{
$this->cmgNumber = $cmgNumber;
}
public function getProjectNumber()
{
return $this->projectNumber;
}
public function setProjectNumber($projectNumber): void
{
$this->projectNumber = $projectNumber;
}
public function getSapCode()
{
return $this->sapCode;
}
public function setSapCode($sapCode): void
{
$this->sapCode = $sapCode;
}
public function getPassports()
{
return $this->passports;
}
public function getVisas()
{
return $this->visas;
}
public function getRule()
{
return $this->rule;
}
public function setRule($rule): void
{
$this->rule = $rule;
}
public function getGender()
{
return $this->gender;
}
public function setGender($gender): void
{
$this->gender = $gender;
}
public function getFrequentFlyers()
{
return $this->frequentFlyers;
}
public function getRelatedUser()
{
return $this->relatedUser;
}
public function setRelatedUser($relatedUser): void
{
$this->relatedUser = $relatedUser;
}
/**
* @return ArrayCollection
*/
public function getApprovers()
{
return $this->approvers;
}
}