<?php
namespace App\Entity;
use ApiPlatform\Metadata\ApiResource;
use App\Repository\LivraisonsRepository;
use Doctrine\DBAL\Types\Types;
use Doctrine\ORM\Mapping as ORM;
#[ORM\Entity(repositoryClass: LivraisonsRepository::class)]
#[ApiResource]
class Livraisons
{
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column]
#[ORM\OrderBy(["id" => "DESC"])]
private ?int $id = null;
#[ORM\Column(length: 255)]
private ?float $distance = 0.0;
#[ORM\Column(length: 255)]
private ?string $latitude = null;
#[ORM\Column(length: 255)]
private ?string $longitude = null;
#[ORM\Column(length: 255)]
private ?string $pays = null;
#[ORM\Column(length: 255)]
private ?string $adresse_depart = null;
#[ORM\Column(length: 255)]
private ?string $adresse_arrivee = null;
#[ORM\Column]
private ?int $creditslivraisons = 3;
#[ORM\Column(length: 355, nullable: true)]
private ?string $description = null;
#[Assert\Positive(message: "La valeur doit être un nombre positif.")]
#[ORM\Column]
private ?int $poids = null;
#[ORM\ManyToOne(targetEntity: Livreurs::class, inversedBy: 'livraisons')]
#[ORM\JoinColumn(nullable: true, onDelete: 'SET NULL')]
private ?Livreurs $id_livreurs = null;
#[ORM\ManyToOne(inversedBy: 'livraisons')]
private ?TypeLivraison $type_livraison = null;
#[ORM\ManyToOne(inversedBy: 'livraisons')]
private ?StatutLivraison $statut_livraison = null;
#[ORM\Column(length: 255)]
private ?string $userprofile = null;
#[ORM\ManyToOne(inversedBy: 'livraisons')]
private ?ZoneLivraison $zonelivraison = null;
#[ORM\ManyToOne(inversedBy: 'livraisonsarrivee')]
private ?ZoneLivraison $zonearrivee = null;
#[ORM\Column(type: Types::DATETIME_MUTABLE)]
private ?\DateTimeInterface $depart = null;
#[ORM\Column(type: Types::DATETIME_MUTABLE)]
private ?\DateTimeInterface $arrivee = null;
#[ORM\ManyToOne(inversedBy: 'livraisons')]
#[ORM\JoinColumn(nullable: true)] // Permet à la relation d’être NULL
private ?PaymentMethod $paymentMethod = null;
#[ORM\ManyToOne(inversedBy: 'livraisons')]
#[ORM\JoinColumn(nullable: false, onDelete: 'CASCADE')]
private ?User $users = null;
#[ORM\Column(length: 255, nullable: true)]
private ?string $photo = null;
#[ORM\Column(nullable: true)]
private ?float $montant = null;
public function getIdLivreurs(): ?Livreurs
{
return $this->id_livreurs;
}
public function setIdLivreurs(?Livreurs $id_livreurs)
{
$this->id_livreurs = $id_livreurs;
return $this;
}
public function getId(): ?int
{
return $this->id;
}
public function getPays(): ?string
{
return $this->pays;
}
public function setPays(string $pays)
{
$this->pays = $pays;
return $this;
}
public function getAdresseDepart(): ?string
{
return $this->adresse_depart;
}
public function setAdresseDepart(string $adresse_depart)
{
$this->adresse_depart = $adresse_depart;
return $this;
}
public function getAdresseArrivee(): ?string
{
return $this->adresse_arrivee;
}
public function setAdresseArrivee(string $adresse_arrivee)
{
$this->adresse_arrivee = $adresse_arrivee;
return $this;
}
public function getPoids(): ?int
{
return $this->poids;
}
public function setPoids(int $poids)
{
$this->poids = $poids;
return $this;
}
public function getTypeLivraison(): ?TypeLivraison
{
return $this->type_livraison;
}
public function setTypeLivraison(?TypeLivraison $type_livraison): static
{
$this->type_livraison = $type_livraison;
return $this;
}
public function getLatitude(): ?string
{
return $this->latitude;
}
public function setLatitude(?string $latitude): static
{
$this->latitude = $latitude;
return $this;
}
public function getLongitude(): ?string
{
return $this->longitude;
}
public function setLongitude(?string $longitude): static
{
$this->longitude = $longitude;
return $this;
}
public function getDistance(): ?float
{
return $this->distance;
}
public function setDistance(float $distance): static
{
$this->distance = $distance;
return $this;
}
public function getStatutLivraison(): ?StatutLivraison
{
return $this->statut_livraison;
}
public function setStatutLivraison(?StatutLivraison $statut_livraison): self
{
$this->statut_livraison = $statut_livraison;
return $this;
}
public function getCreditslivraisons(): ?int
{
return $this->creditslivraisons;
}
public function setCreditslivraisons(int $creditslivraisons): self
{
$this->creditslivraisons = $creditslivraisons;
return $this;
}
public function getDescription(): ?string
{
return $this->description;
}
public function setDescription(string $description): static
{
$this->description = $description;
return $this;
}
public function getUserprofile(): ?string
{
return $this->userprofile;
}
public function setUserprofile(string $userprofile): static
{
$this->userprofile = $userprofile;
return $this;
}
public function getZonelivraison(): ?ZoneLivraison
{
return $this->zonelivraison;
}
public function setZonelivraison(?ZoneLivraison $zonelivraison): static
{
$this->zonelivraison = $zonelivraison;
return $this;
}
public function getZonearrivee(): ?ZoneLivraison
{
return $this->zonearrivee;
}
public function setZonearrivee(?ZoneLivraison $zonearrivee): static
{
$this->zonearrivee = $zonearrivee;
return $this;
}
public function getDepart(): ?\DateTimeInterface
{
return $this->depart;
}
public function setDepart(\DateTimeInterface $depart): static
{
$this->depart = $depart;
return $this;
}
public function getArrivee(): ?\DateTimeInterface
{
return $this->arrivee;
}
public function setArrivee(\DateTimeInterface $arrivee): static
{
$this->arrivee = $arrivee;
return $this;
}
public function getPaymentMethod(): ?PaymentMethod
{
return $this->paymentMethod;
}
public function setPaymentMethod(?PaymentMethod $paymentMethod): static
{
$this->paymentMethod = $paymentMethod;
return $this;
}
public function getUsers(): ?User
{
return $this->users;
}
public function setUsers(?User $users): static
{
$this->users = $users;
return $this;
}
public function getPhoto(): ?string
{
return $this->photo;
}
public function setPhoto(?string $photo): static
{
$this->photo = $photo;
return $this;
}
public function getMontant(): ?float
{
return $this->montant;
}
public function setMontant(?float $montant): static
{
$this->montant = $montant;
return $this;
}
}