<?php
namespace App\Entity;
use App\Repository\ProjectMemberRepository;
use Doctrine\ORM\Mapping as ORM;
#[ORM\Entity(repositoryClass: ProjectMemberRepository::class)]
class ProjectMember
{
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column(type: 'integer')]
private $id;
#[ORM\ManyToOne(targetEntity: Project::class, inversedBy: 'projectMembers')]
#[ORM\JoinColumn(nullable: false)]
private $project;
#[ORM\ManyToOne(targetEntity: User::class, inversedBy: 'projectMembers')]
#[ORM\JoinColumn(nullable: false)]
private $user;
#[ORM\Column(type: 'string', length: 3)]
private $currency;
#[ORM\Column(type: 'float')]
private $hourlyRate;
#[ORM\Column(type: 'datetime_immutable')]
private $createdAt;
public function getId(): ?int
{
return $this->id;
}
public function getProject(): ?Project
{
return $this->project;
}
public function setProject(?Project $project): self
{
$this->project = $project;
return $this;
}
public function getUser(): ?User
{
return $this->user;
}
public function setUser(?User $user): self
{
$this->user = $user;
return $this;
}
public function getCurrency(): ?string
{
return $this->currency;
}
public function setCurrency(string $currency): self
{
$this->currency = $currency;
return $this;
}
public function getHourlyRate(): ?float
{
return $this->hourlyRate;
}
public function getHourlyRateUsd($date = null): ?float
{
global $kernel;
$dateStr = $date ? $date : date('Y-m-d');
$currencyService = $kernel->getContainer()->get('CurrencyService');
return $currencyService->convertAtDate($dateStr, $this->currency, 'USD', $this->hourlyRate);
}
public function setHourlyRate(float $hourlyRate): self
{
$this->hourlyRate = $hourlyRate;
return $this;
}
public function getCreatedAt(): ?\DateTimeImmutable
{
return $this->createdAt;
}
public function setCreatedAt(\DateTimeImmutable $createdAt): self
{
$this->createdAt = $createdAt;
return $this;
}
}