<?php
namespace App\Entity;
use App\Validator\Constraints as AcmeAssert;
use DateTime;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
use Symfony\Component\Validator\Constraints as Assert;
/**
* GoodAssignement
*
* @AcmeAssert\GoodAssignement
*/
#[ORM\Entity(repositoryClass: "App\Repository\GoodAssignementRepository")]
#[ORM\Table(name: "good_assignement")]
#[UniqueEntity(fields: ["transferNumber"])]
class GoodAssignement
{
#[ORM\Column(type: "boolean")]
private bool $isDeleted = false;
#[ORM\Column(type: "boolean")]
private bool $hasBuyerAccount = false;
#[ORM\Column(name: "createdAt", type: "datetime")]
private DateTime $createdAt;
#[ORM\Column(type: "datetime", nullable: true)]
private ?DateTime $buyerValidationDate;
#[ORM\OneToOne(targetEntity: Item::class, inversedBy: "goodAssignement")]
private Item $newItem;
#[ORM\Column(name: "id", type: "integer")]
#[ORM\Id]
#[ORM\GeneratedValue(strategy: "AUTO")]
private ?int $id;
#[ORM\ManyToOne(targetEntity: User::class, inversedBy: "goodAssignements")]
#[ORM\JoinColumn(nullable: false)]
private User $user;
#[AcmeAssert\ItemGoodAssignement]
#[ORM\ManyToOne(targetEntity: Item::class, inversedBy: "goodAssignements")]
#[ORM\JoinColumn(nullable: false)]
private Item $item;
#[ORM\Column(name: "transferNumber", type: "string", length: 255, nullable: true)]
private ?string $transferNumber;
#[Assert\Choice(callback: "getAssignementTypes", multiple: false)]
#[ORM\Column(name: "assignementType", type: "string", length: 255, nullable: true)]
private ?string $assignementType = null;
#[Assert\NotBlank(message: 'Ce champ est obligatoire', groups: ["noBuyerAccount"])]
#[ORM\Column(type: "string", length: 255, nullable: true)]
private ?string $buyerPhoneNumber;
#[Assert\Choice(callback: "getBuyerCivilitys", multiple: false)]
#[Assert\NotBlank(message: 'Ce champ est obligatoire', groups: ["noBuyerAccount"])]
#[ORM\Column(type: "string", length: 255, nullable: true)]
private ?string $buyerCivility;
/**
* @AcmeAssert\GoodAssignementBuyer
*/
#[ORM\ManyToOne(targetEntity: User::class, inversedBy: "buyerGoodAssignements")]
#[Assert\NotBlank(message: 'Ce champ est obligatoire', groups: ["hasBuyerAccount"])]
#[ORM\JoinColumn(nullable: true)]
private ?User $buyer;
#[ORM\Column(name: "saleAmount", type: "decimal", precision: 10, scale: 2, nullable: true)]
private ?float $saleAmount;
#[ORM\Column(name: "transactionPlace", type: "string", length: 255, nullable: true)]
private ?string $transactionPlace;
#[ORM\Column(name: "transactionDate", type: "datetimetz", nullable: true)]
private ?DateTime $transactionDate;
#[Assert\NotBlank(message: 'Ce champ est obligatoire', groups: ["noBuyerAccount"])]
#[ORM\Column(name: "buyerFirstName", type: "string", length: 255, nullable: true)]
private ?string $buyerFirstName;
#[Assert\NotBlank(message: 'Ce champ est obligatoire', groups: ["noBuyerAccount"])]
#[ORM\Column(name: "buyerLastName", type: "string", length: 255, nullable: true)]
private ?string $buyerLastName;
#[ORM\Column(name: "buyerAddress", type: "string", length: 255, nullable: true)]
private ?string $buyerAddress;
#[Assert\NotBlank(message: 'Ce champ est obligatoire', groups: ["noBuyerAccount"])]
#[Assert\Email]
#[ORM\Column(name: "buyerEmail", type: "string", length: 255, nullable: true)]
private ?string $buyerEmail;
#[ORM\Column(name: "paymentMeans", type: "string", length: 255, nullable: true)]
private ?string $paymentMeans;
public function __construct()
{
$this->createdAt = new DateTime();
$this->transferNumber = uniqid();
}
public function __toString()
{
return "#" . $this->id . " - " . $this->transferNumber;
}
/**
*
*/
public static function getPaymentsMeans()
{
$arr = [
'Espèces',
'Chèque',
'Chèque de banque',
'Virement bancaire'
];
return array_combine($arr, $arr);
}
/**
* Get id
*
* @return int
*/
public function getId()
{
return $this->id;
}
public static function getAssignementTypes()
{
$arr = [
"Cession à titre gratuit" => "free",
"Cession à titre onéreux" => "sale"
];
return $arr;
}
public static function getBuyerCivilitys()
{
$arr = [
"Monsieur" => "mr",
"Madame" => "mrs",
];
return $arr;
}
/**
* Set transferNumber
*
* @param string $transferNumber
*
* @return GoodAssignement
*/
public function setTransferNumber($transferNumber)
{
$this->transferNumber = $transferNumber;
return $this;
}
/**
* Get transferNumber
*
* @return string
*/
public function getTransferNumber()
{
return $this->transferNumber;
}
/**
* Set assignementType
*
* @param string $assignementType
*
* @return GoodAssignement
*/
public function setAssignementType($assignementType)
{
$this->assignementType = $assignementType;
return $this;
}
/**
* Get assignementType
*
* @return string
*/
public function getAssignementType()
{
return $this->assignementType;
}
/**
* Set saleAmount
*
* @param string $saleAmount
*
* @return GoodAssignement
*/
public function setSaleAmount($saleAmount)
{
$this->saleAmount = $saleAmount;
return $this;
}
/**
* Get saleAmount
*
* @return string
*/
public function getSaleAmount()
{
return $this->saleAmount;
}
/**
* Set transactionPlace
*
* @param string $transactionPlace
*
* @return GoodAssignement
*/
public function setTransactionPlace($transactionPlace)
{
$this->transactionPlace = $transactionPlace;
return $this;
}
/**
* Get transactionPlace
*
* @return string
*/
public function getTransactionPlace()
{
return $this->transactionPlace;
}
/**
* Set transactionDate
*
* @param DateTime $transactionDate
*
* @return GoodAssignement
*/
public function setTransactionDate($transactionDate)
{
$this->transactionDate = $transactionDate;
return $this;
}
/**
* Get transactionDate
*
* @return DateTime
*/
public function getTransactionDate()
{
return $this->transactionDate;
}
/**
* Set buyerFirstName
*
* @param string $buyerFirstName
*
* @return GoodAssignement
*/
public function setBuyerFirstName($buyerFirstName)
{
$this->buyerFirstName = $buyerFirstName;
return $this;
}
/**
* Get buyerFirstName
*
* @return string
*/
public function getBuyerFirstName()
{
return $this->buyerFirstName;
}
/**
* Set buyerLastName
*
* @param string $buyerLastName
*
* @return GoodAssignement
*/
public function setBuyerLastName($buyerLastName)
{
$this->buyerLastName = $buyerLastName;
return $this;
}
/**
* Get buyerLastName
*
* @return string
*/
public function getBuyerLastName()
{
return $this->buyerLastName;
}
/**
* Set buyerAddress
*
* @param string $buyerAddress
*
* @return GoodAssignement
*/
public function setBuyerAddress($buyerAddress)
{
$this->buyerAddress = $buyerAddress;
return $this;
}
/**
* Get buyerAddress
*
* @return string
*/
public function getBuyerAddress()
{
return $this->buyerAddress;
}
/**
* Set buyerEmail
*
* @param string $buyerEmail
*
* @return GoodAssignement
*/
public function setBuyerEmail($buyerEmail)
{
$this->buyerEmail = $buyerEmail;
return $this;
}
/**
* Get buyerEmail
*
* @return string
*/
public function getBuyerEmail()
{
return $this->buyerEmail;
}
/**
* Set paymentMeans
*
* @param string $paymentMeans
*
* @return GoodAssignement
*/
public function setPaymentMeans($paymentMeans)
{
$this->paymentMeans = $paymentMeans;
return $this;
}
/**
* Get paymentMeans
*
* @return string
*/
public function getPaymentMeans()
{
return $this->paymentMeans;
}
/**
* Set createdAt
*
* @param DateTime $createdAt
*
* @return GoodAssignement
*/
public function setCreatedAt($createdAt)
{
$this->createdAt = $createdAt;
return $this;
}
/**
* Get createdAt
*
* @return DateTime
*/
public function getCreatedAt()
{
return $this->createdAt;
}
/**
* Set user
*
* @param \App\Entity\User $user
*
* @return GoodAssignement
*/
public function setUser(\App\Entity\User $user)
{
$this->user = $user;
return $this;
}
/**
* Get user
*
* @return \App\Entity\User
*/
public function getUser()
{
return $this->user;
}
/**
* Set item
*
* @param \App\Entity\Item $item
*
* @return GoodAssignement
*/
public function setItem(\App\Entity\Item $item)
{
$this->item = $item;
return $this;
}
/**
* Get item
*
* @return \App\Entity\Item
*/
public function getItem()
{
return $this->item;
}
/**
* Set newItem
*
* @param \App\Entity\Item $newItem
*
* @return GoodAssignement
*/
public function setNewItem(\App\Entity\Item $newItem = null)
{
$this->newItem = $newItem;
return $this;
}
/**
* Get newItem
*
* @return \App\Entity\Item
*/
public function getNewItem()
{
return $this->newItem;
}
/**
* Set buyerValidationDate
*
* @param DateTime $buyerValidationDate
*
* @return GoodAssignement
*/
public function setBuyerValidationDate($buyerValidationDate)
{
$this->buyerValidationDate = $buyerValidationDate;
return $this;
}
/**
* Get buyerValidationDate
*
* @return DateTime
*/
public function getBuyerValidationDate()
{
return $this->buyerValidationDate;
}
/**
* Set hasBuyerAccount
*
* @param boolean $hasBuyerAccount
*
* @return GoodAssignement
*/
public function setHasBuyerAccount($hasBuyerAccount)
{
$this->hasBuyerAccount = $hasBuyerAccount;
return $this;
}
/**
* Get hasBuyerAccount
*
* @return boolean
*/
public function getHasBuyerAccount()
{
return $this->hasBuyerAccount;
}
/**
* Set buyerPhoneNumber
*
* @param string $buyerPhoneNumber
*
* @return GoodAssignement
*/
public function setBuyerPhoneNumber($buyerPhoneNumber)
{
$this->buyerPhoneNumber = $buyerPhoneNumber;
return $this;
}
/**
* Get buyerPhoneNumber
*
* @return string
*/
public function getBuyerPhoneNumber()
{
return $this->buyerPhoneNumber;
}
/**
* Set buyerCivility
*
* @param string $buyerCivility
*
* @return GoodAssignement
*/
public function setBuyerCivility($buyerCivility)
{
$this->buyerCivility = $buyerCivility;
return $this;
}
/**
* Get buyerCivility
*
* @return string
*/
public function getBuyerCivility()
{
return $this->buyerCivility;
}
/**
* Set buyer
*
* @param \App\Entity\User $buyer
*
* @return GoodAssignement
*/
public function setBuyer(\App\Entity\User $buyer = null)
{
$this->buyer = $buyer;
return $this;
}
/**
* Get buyer
*
* @return \App\Entity\User
*/
public function getBuyer()
{
return $this->buyer;
}
/**
* Set isDeleted
*
* @param boolean $isDeleted
*
* @return GoodAssignement
*/
public function setIsDeleted($isDeleted)
{
$this->isDeleted = $isDeleted;
return $this;
}
/**
* Get isDeleted
*
* @return boolean
*/
public function getIsDeleted()
{
return $this->isDeleted;
}
}