<?php
namespace App\Entity;
use Symfony\Component\Validator\Constraints as Assert;
use JsonSerializable;
class Order implements JsonSerializable
{
/**
* @Assert\Type("App\Entity\Address")
* @Assert\Valid()
*/
private Address $addressA;
/**
* @Assert\Type("App\Entity\Coordinates")
* @Assert\Valid()
*/
private Coordinates $coordinatesA;
/**
* @Assert\Type("App\Entity\OrderTime")
* @Assert\Valid()
*/
private OrderTime $timeA;
/**
* @Assert\Type("App\Entity\Address")
* @Assert\Valid()
*/
private Address $addressB;
/**
* @Assert\Type("App\Entity\Coordinates")
* @Assert\Valid()
*/
private Coordinates $coordinatesB;
/**
* @Assert\Type("App\Entity\OrderTime")
* @Assert\Valid()
*/
private OrderTime $timeB;
/**
* @Assert\Type("string")
*
* @Assert\NotBlank(
* message="Pole nesmí být prázdné."
* )
* @Assert\Length(
* min = 1,
* minMessage = "Vložte validní hodnotu.",
* )
* @Assert\Regex(
* pattern="/[0-9]/",
* message="Hodnota není validní."
* )
*/
private $price;
/**
* @Assert\Type("App\Entity\Address")
* @Assert\Valid()
*/
private Address $addressF;
/**
* @Assert\Type("string")
*
* @Assert\Length(
* min = 2,
* max = 50,
* minMessage = "Vložte validní hodnotu.",
* maxMessage = "Vložte validní hodnotu.",
* )
*/
private $ic;
/**
* @Assert\Type("string")
*
* @Assert\Length(
* min = 2,
* max = 50,
* minMessage = "Vložte validní hodnotu.",
* maxMessage = "Vložte validní hodnotu.",
* )
*/
private $dic;
/**
* @Assert\Type("string")
*
* @Assert\NotBlank(
* message="Pole nesmí být prázdné."
* )
*
* @Assert\Length(
* min = 2,
* max = 50,
* minMessage = "Vložte validní e-mail.",
* maxMessage = "Vložte validní e-mail.",
* )
*/
private $email;
/**
* @Assert\Type("string")
*
* @Assert\Length(
* max = 50,
* maxMessage = "Vložte validní hodnotu.",
* )
*/
private $company;
/**
* @Assert\NotBlank(
* message="Pole nesmí být prázdné."
* )
*
* @Assert\Length(
* max = 50,
* maxMessage = "Max 50 znaků.",
* )
*/
private $weight;
/**
* @Assert\Type("string")
*
* @Assert\Length(
* max = 20,
* maxMessage = "Max 20 znaků.",
* )
*/
private $note;
/**
* @Assert\Type("string")
*
* @Assert\NotBlank(
* message="Pole nesmí být prázdné."
* )
*
* @Assert\Length(
* max = 70,
* maxMessage = "Max 70 znaků.",
* )
*/
private $contentOfPackage;
public function getAddressA(): ?Address
{
return $this->addressA;
}
public function setAddressA(Address $addressA): self
{
$this->addressA = $addressA;
return $this;
}
public function getCoordinatesA(): ?Coordinates
{
return $this->coordinatesA;
}
public function setCoordinatesA(Coordinates $coordinatesA): self
{
$this->coordinatesA = $coordinatesA;
return $this;
}
public function getTimeA(): ?OrderTime
{
return $this->timeA;
}
public function setTimeA(OrderTime $timeA): self
{
$this->timeA = $timeA;
return $this;
}
public function getAddressB(): ?Address
{
return $this->addressB;
}
public function setAddressB(Address $addressB): self
{
$this->addressB = $addressB;
return $this;
}
public function getCoordinatesB(): ?Coordinates
{
return $this->coordinatesB;
}
public function setCoordinatesB(Coordinates $coordinatesB): self
{
$this->coordinatesB = $coordinatesB;
return $this;
}
public function getTimeB(): ?OrderTime
{
return $this->timeB;
}
public function setTimeB(OrderTime $timeB): self
{
$this->timeB = $timeB;
return $this;
}
public function getPrice(): ?string
{
return $this->price;
}
public function setPrice(string $price): self
{
$this->price = $price;
return $this;
}
public function getAddressF(): ?Address
{
return $this->addressF;
}
public function setAddressF(Address $addressF): self
{
$this->addressF = $addressF;
return $this;
}
public function getIc(): ?string
{
return $this->ic;
}
public function setIc(string $ic): self
{
$this->ic = $ic;
return $this;
}
public function getDic(): ?string
{
return $this->dic;
}
public function setDic(?string $dic): self
{
$this->dic = $dic;
return $this;
}
public function getEmail(): ?string
{
return $this->email;
}
public function setEmail(string $email): self
{
$this->email = $email;
return $this;
}
public function getCompany(): ?string
{
return $this->company;
}
public function setCompany(string $company): self
{
$this->company = $company;
return $this;
}
public function getWeight(): ?string
{
return $this->weight;
}
public function setWeight(string $weight): self
{
$this->weight = $weight;
return $this;
}
public function getNote(): ?string
{
return $this->note;
}
public function setNote(string $note): self
{
$this->note = $note;
return $this;
}
public function getContentOfPackage(): ?string
{
return $this->contentOfPackage;
}
public function setContentOfPackage(string $contentOfPackage): self
{
$this->contentOfPackage = $contentOfPackage;
return $this;
}
/**
* @return mixed
*/
public function jsonSerialize() : mixed
{
return [
'email' => $this->email,
'pickup' => [
'time' => $this->timeA,
'address' => $this->addressA,
'coordinates' => $this->coordinatesA,
],
'delivery' => [
'time' => $this->timeB,
'address' => $this->addressB,
'coordinates' => $this->coordinatesB,
],
'invoice' => [
'address' => $this->addressF,
'company_name' => $this->company,
'tax_id' => $this->dic,
'business_id' => $this->ic,
],
'weight' => $this->weight,
'note' => $this->note,
'content_of_package' => $this->contentOfPackage,
'price' => $this->price,
];
}
}