<?php
namespace Diplix\KMGBundle\Entity;
use Diplix\KMGBundle\Entity\Accounting\CoopMember;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Table(name="availability", indexes={@ORM\Index(name="be_deleted",columns={"be_deleted"})})
* @ORM\Entity(repositoryClass="Diplix\KMGBundle\Repository\AvailabilityRepository")
*/
class Availability extends BasicEntity implements \JsonSerializable
{
const RECUR_WEEKLY= 'W';
const RECUR_MONTHLY= 'M';
const RECUR_DAILY= 'D';
public static $recurMap = [
self::RECUR_DAILY => 'Tag',
self::RECUR_WEEKLY => 'Woche',
self::RECUR_MONTHLY => 'Monat'
];
const KMG = 'A';
const NOT_AVAILABLE = 'N';
const UNKNOWN = 'Z';
const READY = 'R';
const FFL = 'FFL';
const KLF = 'KLF';
const BASF = 'BASF';
const ZUSATZ = 'ZUS';
const INFO = 'I';
public static $displayMap = [
self::READY => "Bereit",
self::KMG => 'Belegt',
self::NOT_AVAILABLE => 'Nicht verfügbar',
self::UNKNOWN => 'Unbekannt',
self::FFL => ' FFL',
self::KLF => ' KLF',
self::BASF => 'BASF',
self::ZUSATZ => 'Zusatzfahrzeug',
self::INFO => 'Info'
];
public static $shortDisplayMap = [
self::READY => '',
self::KMG => '',
self::NOT_AVAILABLE => 'N/V',
self::UNKNOWN => '?',
self::FFL => 'FFL',
self::KLF => 'KLF',
self::BASF => 'BASF',
self::ZUSATZ => 'Zusatz',
self::INFO => 'Info'
];
public static $colorMap = [ // css color, pdf color
self::READY => [ 'royalblue', [ 100,100,255]],
self::KMG => [ '#006400', [ 200,240,200]],
self::FFL => [ '#00A800', [ 200,255,200]],
self::KLF => [ '#00EE00', [ 200,250,70]],
self::NOT_AVAILABLE => [ 'darkred', [ 255,200,200]],
self::UNKNOWN => [ 'transparent',[ 200,200,200]],
self::BASF => [ '#FF00FF', [ 255,200,255]],
self::ZUSATZ => [ '#F5F5F5', [ 240,240,240]],
self::INFO => [ '#E6E600', [ 230,230,0] ]
];
/**
* @ORM\Column(type="integer",name="id")
* @ORM\Id()
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="datetime",nullable=false)
*/
protected $availFrom;
/**
* @ORM\Column(type="datetime",nullable=false)
*/
protected $availUntil;
/**
* @ORM\Column(type="string", length=4, options={"fixed" = true})
*/
protected $availType = self::NOT_AVAILABLE;
/**
* @ORM\Column(type="string")
*/
protected $extraInfo = '';
/**
* @ORM\ManyToOne(targetEntity="Diplix\KMGBundle\Entity\Accounting\CoopMember")
* @ORM\JoinColumn(nullable=false)
*/
protected $member;
/**
* @ORM\Column(type="boolean")
*/
protected $recurring = false;
/**
* @ORM\Column(type="string")
*/
protected $recurType = '';
/**
* @ORM\Column(type="integer")
*/
protected $recurInterval = 1;
/**
* @ORM\Column(type="datetime",nullable=true)
*/
protected $recurEnd = null;
/**
* @ORM\ManyToOne(targetEntity="Diplix\KMGBundle\Entity\Availability")
*/
protected $recurParent = null;
/**
* @ORM\Column(type="string", nullable=true)
*/
protected $createdFromRemoteOrderId = null;
public function contextAwareClone()
{
$a = clone $this;
$a->id = null;
if ($this->getRecurring())
{
$a->setRecurParent($this);
}
$a->setRecurring(false);
$a->setBeCreated(new \DateTime());
$a->setBeEdited(null);
return $a;
}
/**
* @return mixed
*/
public function getId()
{
return $this->id;
}
/**
* @return \DateTime|null
*/
public function getAvailFrom()
{
return $this->availFrom;
}
/**
* @param mixed $availFrom
*/
public function setAvailFrom($availFrom)
{
$this->availFrom = $availFrom;
}
/**
* @return \DateTime|null
*/
public function getAvailUntil()
{
return $this->availUntil;
}
/**
* @param mixed $availUntil
*/
public function setAvailUntil($availUntil)
{
$this->availUntil = $availUntil;
}
/**
* @return mixed
*/
public function getAvailType()
{
return $this->availType;
}
/**
* @param mixed $availType
*/
public function setAvailType($availType)
{
$this->availType = $availType;
}
/**
* @return mixed
*/
public function getExtraInfo()
{
return $this->extraInfo;
}
/**
* @param mixed $extraInfo
*/
public function setExtraInfo($extraInfo)
{
$this->extraInfo = $extraInfo;
}
/**
* @return CoopMember
*/
public function getMember()
{
return $this->member;
}
/**
* @param mixed $member
*/
public function setMember($member)
{
$this->member = $member;
}
/**
* @return mixed
*/
public function getRecurring()
{
return $this->recurring;
}
/**
* @param mixed $recurring
*/
public function setRecurring($recurring)
{
$this->recurring = $recurring;
}
/**
* @return mixed
*/
public function getRecurType()
{
return $this->recurType;
}
/**
* @param mixed $recurType
*/
public function setRecurType($recurType)
{
$this->recurType = $recurType;
}
/**
* @return mixed
*/
public function getRecurInterval()
{
return $this->recurInterval;
}
/**
* @param mixed $recurInterval
*/
public function setRecurInterval($recurInterval)
{
$this->recurInterval = $recurInterval;
}
/**
* @return mixed
*/
public function getRecurParent()
{
return $this->recurParent;
}
/**
* @param mixed $recurParent
*/
public function setRecurParent($recurParent)
{
$this->recurParent = $recurParent;
}
/**
* @return null|\DateTime
*/
public function getRecurEnd()
{
return $this->recurEnd;
}
/**
* @param mixed $recurEnd
*/
public function setRecurEnd($recurEnd)
{
$this->recurEnd = $recurEnd;
}
/**
* @return mixed
*/
public function getCreatedFromRemoteOrderId()
{
return $this->createdFromRemoteOrderId;
}
/**
* @param mixed $createdFromRemoteOrderId
*/
public function setCreatedFromRemoteOrderId($createdFromRemoteOrderId)
{
$this->createdFromRemoteOrderId = $createdFromRemoteOrderId;
}
/**
* Specify data which should be serialized to JSON
*/
function jsonSerialize()
{
return [
'id'=>$this->getId(),
'availFrom' => $this->getAvailFrom()->format("Y-m-d H:i"),
'availUntil' => $this->getAvailUntil()->format("Y-m-d H:i"),
'availType'=>$this->getAvailType(),
'extraInfo'=>$this->getExtraInfo(),
'member'=>$this->getMember()->getId(),
'beCreated'=> $this->getBeCreated() !== null ? $this->getBeCreated()->format("Y-m-d H:i") : '',
'beEdited'=>$this->getBeEdited() !==null ? $this->getBeEdited()->format("Y-m-d H:i") : '',
'beOwner' => $this->getBeOwner()!==null ? [
'id' => $this->getBeOwner()->getId(),
'firstName'=>$this->getBeOwner()->getFirstName(),
'lastName' => $this->getBeOwner()->getLastName()
] : null,
'recurring' =>$this->getRecurring(),
'recurParent'=> ($this->getRecurParent() !== null ? $this->getRecurParent()->getId() : 0 )
];
}
}