<?phpnamespace App\Entity;use App\Entity\Enum\CreditCostStateEnum;use App\Repository\CreditCostRepository;use Doctrine\ORM\Mapping as ORM;/** * @ORM\Entity(repositoryClass=CreditCostRepository::class) * @ORM\EntityListeners({"App\Listener\CreditCostListener"}) */class CreditCost{ /** * Nb of credit to "buy" a prospect. */ const NB_CREDIT_ONE_PROSPECT = 1; /** * @ORM\Id() * @ORM\GeneratedValue() * @ORM\Column(type="integer") */ private int $id; /** * @ORM\Column(type="integer") */ private int $nbCredit; /** * @ORM\ManyToOne(targetEntity=Freelancer::class, inversedBy="creditCosts") */ private ?Freelancer $administrator; /** * @ORM\ManyToOne(targetEntity=CentralPurchasing::class, inversedBy="creditCosts") */ private ?CentralPurchasing $centralPurchasing; /** * State: manage the state of the credit cost if it was created in a "pay as you go" mode. * @ORM\Column(type="string", length=5, nullable=true) */ private ?string $state=null; /** * @ORM\ManyToOne(targetEntity=Order::class, inversedBy="creditCosts") */ private ?Order $order; /** * @ORM\OneToOne(targetEntity=ProspectOnStore::class, mappedBy="cost") */ private $prospectOnStore; /** * CreditCost constructor. * - A prospect is cost 1 crédit by default */ public function __construct() { $this->setNbCredit(self::NB_CREDIT_ONE_PROSPECT); } public function getId(): ?int { return $this->id; } public function getNbCredit(): ?int { return $this->nbCredit; } public function setNbCredit(int $nbCredit): self { $this->nbCredit = $nbCredit; return $this; } public function getAdministrator(): ?Administrator { return $this->administrator; } public function getFreelancer(): ?Freelancer { return $this->administrator; } public function setAdministrator(?Administrator $administrator): self { $this->administrator = $administrator; return $this; } public function getCentralPurchasing(): ?CentralPurchasing { return $this->centralPurchasing; } public function setCentralPurchasing(?CentralPurchasing $centralPurchasing): self { $this->centralPurchasing = $centralPurchasing; return $this; } public function getState(): ?string { return $this->state; } public function getStateLabel(): ?string { return is_null($this->state)?'':CreditCostStateEnum::getStateName($this->state); } public function markAsPending(): void { $this->state = CreditCostStateEnum::STATE_PENDING; } public function isPending(): bool { return $this->state == CreditCostStateEnum::STATE_PENDING; } public function markAsBilled(): void { $this->state = CreditCostStateEnum::STATE_BILLED; } public function getOrder(): ?Order { return $this->order; } public function setOrder(?Order $order): void { $this->order = $order; } /** * @return mixed */ public function getProspectOnStore() { return $this->prospectOnStore; } /** * @param mixed $prospectOnStore */ public function setProspectOnStore($prospectOnStore): void { $this->prospectOnStore = $prospectOnStore; }}