<?php
namespace App\Entity\Master;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\DBAL\Types\Types;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Table(name="eposm_m_order")
* @ORM\Entity(repositoryClass="App\Repository\Master\OrderRepository")
*/
class Order
{
function getIsEditable(){
if($this->status == 'inserted')
return true;
return false;
}
function getIsDeletable(){
if($this->status == 'inserted')
return true;
return false;
}
function getDisplayItems($displayCost){
$result = '<table class="table table-sm b_none m_b_none"><thead><tr><th></th><th class="td_w_130p txt_a_c"><label class="form_label m_b_none">Data attivazione</label></th><th class="td_w_130p txt_a_c"><label class="form_label m_b_none">Data scadenza</label></th>';
if($displayCost){
$result.= '<th class="td_w_100p txt_a_c"><label class="form_label m_b_none">Costo</label></th>';
$total = 'Totale';
}
$result.= '</tr></thead><tbody>';
foreach($this->items as $item){
if($item->getFeature() != null)
$result.= $item->getDisplayTableRow($displayCost);
}
foreach($this->items as $item){
if($item->getService() != null)
$result.= $item->getDisplayTableRow($displayCost);
}
if($displayCost)
$result.= '<tr><th colspan="3"><label class="form_label m_b_none">'.$total.'</label></th><th class="txt_a_c">'.$this->getTotalAmount().'</th></tr>';
$result.= '</tbody></table>';
return $result;
}
function getDisplayStatus(){
switch($this->status){
case 'inserted':
$result = '<ul class="skills">
<li data-percent="100"><span>Ordine inserito</span><div class="progress skills-animated checkmark width_100"><div class="progress-percent checkmark"><i class="icon-checkmark"></i></div></div></li>
<li data-percent="100"><span>Contratto inviato</span><div class="progress skills-animated remove width_100"><div class="progress-percent remove"><i class="icon-remove"></i></div></div></li>
<li data-percent="100"><span>Contratto firmato</span><div class="progress skills-animated remove width_100"><div class="progress-percent remove"><i class="icon-remove"></i></div></div></li>
<li data-percent="100"><span>Fattura emessa</span><div class="progress skills-animated remove width_100"><div class="progress-percent remove"><i class="icon-remove"></i></div></div></li>
<li data-percent="100"><span>Pagamento ricevuto</span><div class="progress skills-animated remove width_100"><div class="progress-percent remove"><i class="icon-remove"></i></div></div></li>
<li data-percent="100"><span>Ordine archiviato</span><div class="progress skills-animated remove width_100"><div class="progress-percent remove"><i class="icon-remove"></i></div></div></li>
</ul>';
break;
case 'contract_sended':
$result = '<ul class="skills">
<li data-percent="100"><span>Ordine inserito</span><div class="progress skills-animated checkmark width_100"><div class="progress-percent checkmark"><i class="icon-checkmark"></i></div></div></li>
<li data-percent="100"><span>Contratto inviato</span><div class="progress skills-animated checkmark width_100"><div class="progress-percent checkmark"><i class="icon-checkmark"></i></div></div></li>
<li data-percent="100"><span>Contratto firmato</span><div class="progress skills-animated remove width_100"><div class="progress-percent remove"><i class="icon-remove"></i></div></div></li>
<li data-percent="100"><span>Fattura emessa</span><div class="progress skills-animated remove width_100"><div class="progress-percent remove"><i class="icon-remove"></i></div></div></li>
<li data-percent="100"><span>Pagamento ricevuto</span><div class="progress skills-animated remove width_100"><div class="progress-percent remove"><i class="icon-remove"></i></div></div></li>
<li data-percent="100"><span>Ordine archiviato</span><div class="progress skills-animated remove width_100"><div class="progress-percent remove"><i class="icon-remove"></i></div></div></li>
</ul>';
break;
case 'contract_signed':
$result = '<ul class="skills">
<li data-percent="100"><span>Ordine inserito</span><div class="progress skills-animated checkmark width_100"><div class="progress-percent checkmark"><i class="icon-checkmark"></i></div></div></li>
<li data-percent="100"><span>Contratto inviato</span><div class="progress skills-animated checkmark width_100"><div class="progress-percent checkmark"><i class="icon-checkmark"></i></div></div></li>
<li data-percent="100"><span>Contratto firmato</span><div class="progress skills-animated checkmark width_100"><div class="progress-percent checkmark"><i class="icon-checkmark"></i></div></div></li>
<li data-percent="100"><span>Fattura emessa</span><div class="progress skills-animated remove width_100"><div class="progress-percent remove"><i class="icon-remove"></i></div></div></li>
<li data-percent="100"><span>Pagamento ricevuto</span><div class="progress skills-animated remove width_100"><div class="progress-percent remove"><i class="icon-remove"></i></div></div></li>
<li data-percent="100"><span>Ordine archiviato</span><div class="progress skills-animated remove width_100"><div class="progress-percent remove"><i class="icon-remove"></i></div></div></li>
</ul>';
break;
case 'invoice_issued':
$result = '<ul class="skills">
<li data-percent="100"><span>Ordine inserito</span><div class="progress skills-animated checkmark width_100"><div class="progress-percent checkmark"><i class="icon-checkmark"></i></div></div></li>
<li data-percent="100"><span>Contratto inviato</span><div class="progress skills-animated checkmark width_100"><div class="progress-percent checkmark"><i class="icon-checkmark"></i></div></div></li>
<li data-percent="100"><span>Contratto firmato</span><div class="progress skills-animated checkmark width_100"><div class="progress-percent checkmark"><i class="icon-checkmark"></i></div></div></li>
<li data-percent="100"><span>Fattura emessa</span><div class="progress skills-animated checkmark width_100"><div class="progress-percent checkmark"><i class="icon-checkmark"></i></div></div></li>
<li data-percent="100"><span>Pagamento ricevuto</span><div class="progress skills-animated remove width_100"><div class="progress-percent remove"><i class="icon-remove"></i></div></div></li>
<li data-percent="100"><span>Ordine archiviato</span><div class="progress skills-animated remove width_100"><div class="progress-percent remove"><i class="icon-remove"></i></div></div></li>
</ul>';
break;
case 'payment_received':
$result = '<ul class="skills">
<li data-percent="100"><span>Ordine inserito</span><div class="progress skills-animated checkmark width_100"><div class="progress-percent checkmark"><i class="icon-checkmark"></i></div></div></li>
<li data-percent="100"><span>Contratto inviato</span><div class="progress skills-animated checkmark width_100"><div class="progress-percent checkmark"><i class="icon-checkmark"></i></div></div></li>
<li data-percent="100"><span>Contratto firmato</span><div class="progress skills-animated checkmark width_100"><div class="progress-percent checkmark"><i class="icon-checkmark"></i></div></div></li>
<li data-percent="100"><span>Fattura emessa</span><div class="progress skills-animated checkmark width_100"><div class="progress-percent checkmark"><i class="icon-checkmark"></i></div></div></li>
<li data-percent="100"><span>Pagamento ricevuto</span><div class="progress skills-animated checkmark width_100"><div class="progress-percent checkmark"><i class="icon-checkmark"></i></div></div></li>
<li data-percent="100"><span>Ordine archiviato</span><div class="progress skills-animated remove width_100"><div class="progress-percent remove"><i class="icon-remove"></i></div></div></li>
</ul>';
break;
case 'archived':
$result = '<ul class="skills">
<li data-percent="100"><span>Ordine inserito</span><div class="progress skills-animated checkmark width_100"><div class="progress-percent checkmark"><i class="icon-checkmark"></i></div></div></li>
<li data-percent="100"><span>Contratto inviato</span><div class="progress skills-animated checkmark width_100"><div class="progress-percent checkmark"><i class="icon-checkmark"></i></div></div></li>
<li data-percent="100"><span>Contratto firmato</span><div class="progress skills-animated checkmark width_100"><div class="progress-percent checkmark"><i class="icon-checkmark"></i></div></div></li>
<li data-percent="100"><span>Fattura emessa</span><div class="progress skills-animated checkmark width_100"><div class="progress-percent checkmark"><i class="icon-checkmark"></i></div></div></li>
<li data-percent="100"><span>Pagamento ricevuto</span><div class="progress skills-animated checkmark width_100"><div class="progress-percent checkmark"><i class="icon-checkmark"></i></div></div></li>
<li data-percent="100"><span>Ordine archiviato</span><div class="progress skills-animated checkmark width_100"><div class="progress-percent checkmark"><i class="icon-checkmark"></i></div></div></li>
</ul>';
break;
default: break;
}
return $result;
}
function getTotalAmount(){
$total = 0;
foreach($this->items as $item)
$total = $total + ($item->getQuantity() * $item->getCost());
return number_format($total, '2', ',', '.').' €';
}
/**
* @ORM\Column(name="id", type="bigint")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(name="status", type="string", length=191)
*/
protected $status = "inserted";
/**
* @ORM\Column(name="issue_date", type="date")
*/
protected $issueDate;
/**
* @ORM\Column(name="confirm_date", type="date", nullable=true)
*/
protected $confirmDate;
/**
* @ORM\Column(name="notes", type="text", nullable=true)
*/
protected $notes;
/**
* @ORM\Column(name="contract_path", type="string", length=191, nullable=true)
*/
protected $contractPath;
// ManyToOne
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Master\Company", inversedBy="orders")
* @ORM\JoinColumn(name="company_id", referencedColumnName="id")
*/
private $company;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Master\Company", inversedBy="signalerForOrders")
* @ORM\JoinColumn(name="signaler_id", referencedColumnName="id")
*/
private $signaler;
//
// OneToMany
/**
* @ORM\OneToMany(targetEntity="App\Entity\Master\OrderItem", mappedBy="order", cascade={"persist", "remove"})
*/
private $items;
//
public function __construct()
{
$this->items = new ArrayCollection();
}
public function getId(): ?string
{
return $this->id;
}
public function getStatus(): ?string
{
return $this->status;
}
public function setStatus(string $status): self
{
$this->status = $status;
return $this;
}
public function getIssueDate(): ?\DateTimeInterface
{
return $this->issueDate;
}
public function setIssueDate(\DateTimeInterface $issueDate): self
{
$this->issueDate = $issueDate;
return $this;
}
public function getConfirmDate(): ?\DateTimeInterface
{
return $this->confirmDate;
}
public function setConfirmDate(?\DateTimeInterface $confirmDate): self
{
$this->confirmDate = $confirmDate;
return $this;
}
public function getNotes(): ?string
{
return $this->notes;
}
public function setNotes(?string $notes): self
{
$this->notes = $notes;
return $this;
}
public function getContractPath(): ?string
{
return $this->contractPath;
}
public function setContractPath(?string $contractPath): self
{
$this->contractPath = $contractPath;
return $this;
}
public function getCompany(): ?Company
{
return $this->company;
}
public function setCompany(?Company $company): self
{
$this->company = $company;
return $this;
}
public function getSignaler(): ?Company
{
return $this->signaler;
}
public function setSignaler(?Company $signaler): self
{
$this->signaler = $signaler;
return $this;
}
/**
* @return Collection<int, OrderItem>
*/
public function getItems(): Collection
{
return $this->items;
}
public function addItem(OrderItem $item): self
{
if (!$this->items->contains($item)) {
$this->items->add($item);
$item->setOrder($this);
}
return $this;
}
public function removeItem(OrderItem $item): self
{
if ($this->items->removeElement($item)) {
// set the owning side to null (unless already changed)
if ($item->getOrder() === $this) {
$item->setOrder(null);
}
}
return $this;
}
}