<?php
namespace JF\JuridicusBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
/**
* Email
*/
class Email extends InitModeEntity
{
const CLASSNAME = __CLASS__;
/**
*
*/
const KENNZIFFER = 1;
const ERINNERUNG_1 = 2;
const ERINNERUNG_2 = 3;
const ERINNERUNG_3 = 4;
const REGISTRIERUNG = 5;
const FIRST_LOGIN = 6;
const PROTOKOLL_FERTIG = 7;
const MAHNUNG_GEBUEHREN_1 = 8;
const MAHNUNG_GEBUEHREN_2 = 9;
const MAHNUNG_GEBUEHREN_3 = 10;
const MAHNUNG_STRAFE_1 = 11;
const MAHNUNG_STRAFE_2 = 12;
const MAHNUNG_STRAFE_3 = 13;
const LAST_MINUTE = 14;
const PRUEFER_PROTOKOLLE = 15;
const SMS = 16;
const EMPFEHLUNG = 17;
const WERBUNG_ZA = 18;
const WERBUNG_PR = 19;
const RESETTING = 20;
const SMS_RESETTING = 21;
const BUCHUNG = 22;
const BUCHUNG_RECHNUNG = 23;
const BUCHUNG_NACHFRAGE = 24;
const PROTOKOLL_DUPLIKAT = 25;
const DOWNLOAD_MOEGLICH = 26;
const BUCHUNG_RECHNUNG_NACHTRAG = 27;
const ERINNERUNG_VERKAEUFER_1 = 28;
const ERINNERUNG_VERKAEUFER_2 = 29;
const ERINNERUNG_VERKAEUFER_3 = 30;
const PROTOKOLL_FERTIG_ZAHLUNG = 31;
const ERINNERUNG_KEINE_BUCHUNG_1 = 32;
const ERINNERUNG_KEINE_BUCHUNG_2 = 33;
const ERINNERUNG_KEINE_BUCHUNG_3 = 34;
const MAHNUNG_STRAFE_KEINE_BUCHUNG_1 = 35;
const MAHNUNG_STRAFE_KEINE_BUCHUNG_2 = 36;
const MAHNUNG_STRAFE_KEINE_BUCHUNG_3 = 37;
const SHOUTBOX_INFO = 38;
const VERSAND_ZA_ABO = 39;
const VERSAND_PR_ABO = 40;
const VERSAND_RECHNUNG_ZA_ABO = 41;
const VERSAND_RECHNUNG_PR_ABO = 42;
const VERSAND_ZA_ABO_EINZEL = 43;
const VERSAND_PR_ABO_EINZEL = 44;
const VERSAND_RECHNUNG_ZA_ABO_EINZEL = 45;
const VERSAND_RECHNUNG_PR_ABO_EINZEL = 46;
const VERSAND_ZA_ABO_PROBE = 48;
const VERSAND_PR_ABO_PROBE = 49;
const VERSAND_RECHNUNG_ZA_ABO_PROBE = 50;
const VERSAND_RECHNUNG_PR_ABO_PROBE = 51;
const PRUEFER_BEREICH_REGISTRIERUNG = 52;
const PRUEFER_BEREICH_REGISTRIERUNG_PASSWORT = 53;
const PRUEFER_BEREICH_PASSWORT_RESET = 54;
const PRUEFER_BEREICH_PASSWORT_RESET_PASSWORT = 55;
/**
* @var array
* @access private
*/
private static $typ_options = array(
self::KENNZIFFER => 'Ungütlige Kennziffer',
self::ERINNERUNG_1 => '1. Erinnerung',
self::ERINNERUNG_2 => '2. Erinnerung',
self::ERINNERUNG_3 => '3. Erinnerung',
self::ERINNERUNG_VERKAEUFER_1 => '1. Erinnerung Verkäufer',
self::ERINNERUNG_VERKAEUFER_2 => '2. Erinnerung Verkäufer',
self::ERINNERUNG_VERKAEUFER_3 => '3. Erinnerung Verkäufer',
self::REGISTRIERUNG => 'Registrierung',
self::FIRST_LOGIN => 'Erst-Login',
self::PROTOKOLL_FERTIG => 'Protokoll fertig',
self::PROTOKOLL_FERTIG_ZAHLUNG => 'Protokoll fertig - Überweisung',
self::MAHNUNG_GEBUEHREN_1 => '1. Mahnung Grundgebühr',
self::MAHNUNG_GEBUEHREN_2 => '2. Mahnung Grundgebühr',
self::MAHNUNG_GEBUEHREN_3 => '3. Mahnung Grundgebühr',
self::MAHNUNG_STRAFE_1 => '1. Mahnung Strafgebühr',
self::MAHNUNG_STRAFE_2 => '2. Mahnung Strafgebühr',
self::MAHNUNG_STRAFE_3 => '3. Mahnung Strafgebühr',
self::LAST_MINUTE => 'Last-Minute',
self::PRUEFER_PROTOKOLLE => 'Protokollversand an Prüfer',
self::SMS => 'SMS',
self::EMPFEHLUNG => 'Empfehlung',
self::BUCHUNG => 'Buchung',
self::BUCHUNG_RECHNUNG => 'Buchung und Rechnung',
self::DOWNLOAD_MOEGLICH => 'Download möglich',
self::BUCHUNG_RECHNUNG_NACHTRAG => 'Rechnung nachträglich',
self::BUCHUNG_NACHFRAGE => 'Nachfrage bei fehlender Buchung',
self::WERBUNG_ZA => 'Werbung ZA',
self::WERBUNG_PR => 'Werbung PR',
self::RESETTING => 'Password-Reset',
self::SMS_RESETTING => 'SMS für Password-Reset',
self::PROTOKOLL_DUPLIKAT => 'Protokoll-Duplikat gefunden',
self::ERINNERUNG_KEINE_BUCHUNG_1 => '1. Erinnerung bei fehlender Buchung',
self::ERINNERUNG_KEINE_BUCHUNG_2 => '2. Erinnerung bei fehlender Buchung',
self::ERINNERUNG_KEINE_BUCHUNG_3 => '3. Erinnerung bei fehlender Buchung',
self::MAHNUNG_STRAFE_KEINE_BUCHUNG_1 => '1. Mahnung bei fehlender Buchung',
self::MAHNUNG_STRAFE_KEINE_BUCHUNG_2 => '2. Mahnung bei fehlender Buchung',
self::MAHNUNG_STRAFE_KEINE_BUCHUNG_3 => '3. Mahnung bei fehlender Buchung',
self::SHOUTBOX_INFO => 'Information bei Shoutbox-Nachricht',
self::VERSAND_PR_ABO => 'Versand einer abonnierten PR-Ausgabe (Voll/Halbjahresabo)',
self::VERSAND_ZA_ABO => 'Versand einer abonnierten ZA-Ausgabe (Voll/Halbjahresabo)',
self::VERSAND_RECHNUNG_PR_ABO => 'Versand einer Rechnung für ein PR-Abo (Vollabo)',
self::VERSAND_RECHNUNG_ZA_ABO => 'Versand einer Rechnung für ein ZA-Abo (Vollabo)',
self::VERSAND_PR_ABO_EINZEL => 'Versand einer abonnierten PR-Ausgabe (Einzelheft)',
self::VERSAND_ZA_ABO_EINZEL => 'Versand einer abonnierten ZA-Ausgabe (Einzelheft)',
self::VERSAND_RECHNUNG_PR_ABO_EINZEL => 'Versand einer Rechnung für ein PR-Abo (Einzelheft)',
self::VERSAND_RECHNUNG_ZA_ABO_EINZEL => 'Versand einer Rechnung für ein ZA-Abo (Einzelheft)',
self::VERSAND_PR_ABO_PROBE => 'Versand einer abonnierten PR-Ausgabe (Probeabo)',
self::VERSAND_ZA_ABO_PROBE => 'Versand einer abonnierten ZA-Ausgabe (Probeabo)',
self::VERSAND_RECHNUNG_PR_ABO_PROBE => 'Versand einer Rechnung für ein PR-Abo (Probeabo)',
self::VERSAND_RECHNUNG_ZA_ABO_PROBE => 'Versand einer Rechnung für ein ZA-Abo (Probeabo)',
self::PRUEFER_BEREICH_REGISTRIERUNG => 'Prüferbereich Registrierung ',
self::PRUEFER_BEREICH_REGISTRIERUNG_PASSWORT => 'Prüferbereich Passwort ',
self::PRUEFER_BEREICH_PASSWORT_RESET => 'Prüferbereich Passwort-Reset ',
self::PRUEFER_BEREICH_PASSWORT_RESET_PASSWORT => 'Prüferbereich Passwort-Reset Passwort ',
);
/**
* Zuordnung E-Mail-Templates Versand Abos
*
* @var array
*/
private static $abo_rechnung_map = array(
'PR' => array(
Abo::ABO_FULL => self::VERSAND_RECHNUNG_PR_ABO,
Abo::ABO_LOCKABO_6 => self::VERSAND_RECHNUNG_PR_ABO,
Abo::ABO_EINZELHEFT => self::VERSAND_RECHNUNG_PR_ABO_EINZEL,
Abo::ABO_LESEPROBE_GRATIS => self::VERSAND_RECHNUNG_PR_ABO_EINZEL,
Abo::ABO_PROBE_3 => self::VERSAND_RECHNUNG_PR_ABO_PROBE,
),
'ZA' => array(
Abo::ABO_FULL => self::VERSAND_RECHNUNG_ZA_ABO,
Abo::ABO_LOCKABO_6 => self::VERSAND_RECHNUNG_ZA_ABO,
Abo::ABO_EINZELHEFT => self::VERSAND_RECHNUNG_ZA_ABO_EINZEL,
Abo::ABO_LESEPROBE_GRATIS => self::VERSAND_RECHNUNG_ZA_ABO_EINZEL,
Abo::ABO_PROBE_3 => self::VERSAND_RECHNUNG_ZA_ABO_PROBE,
)
);
/**
* Zuordnung E-Mail-Templates Rechnungen Abos
* @var array
*/
private static $abo_versand_map = array(
'PR' => array(
Abo::ABO_FULL => self::VERSAND_PR_ABO,
Abo::ABO_LOCKABO_6 => self::VERSAND_PR_ABO,
Abo::ABO_EINZELHEFT => self::VERSAND_PR_ABO_EINZEL,
Abo::ABO_LESEPROBE_GRATIS => self::VERSAND_PR_ABO_EINZEL,
Abo::ABO_PROBE_3 => self::VERSAND_PR_ABO_PROBE,
),
'ZA' => array(
Abo::ABO_FULL => self::VERSAND_ZA_ABO,
Abo::ABO_LOCKABO_6 => self::VERSAND_ZA_ABO,
Abo::ABO_EINZELHEFT => self::VERSAND_ZA_ABO_EINZEL,
Abo::ABO_LESEPROBE_GRATIS => self::VERSAND_ZA_ABO_EINZEL,
Abo::ABO_PROBE_3 => self::VERSAND_ZA_ABO_PROBE,
)
);
/**
* @return array typ options
*/
public static function getTypOptions()
{
return self::$typ_options;
}
/**
* @return array typ keys
*/
public static function getTypKeys()
{
return array_keys(self::$typ_options);
}
/**
* @var integer
*/
private $id;
/**
* @var integer
* @Assert\NotNull
* @Assert\Choice(callback="getTypKeys")
*/
private $typ;
/**
* @var \DateTime
* @Assert\Type(\DateTimeInterface::class)
*/
private $created_at;
/**
* @var \JF\JuridicusBundle\Entity\Kunde
* @Assert\Valid()
*/
private $kunde;
/**
* @var \JF\JuridicusBundle\Entity\Pruefer
* @Assert\Valid()
*/
private $pruefer;
/**
* @var \JF\JuridicusBundle\Entity\KundePruefung
* @Assert\Valid()
*/
private $kunde_pruefung;
/**
* @var \JF\JuridicusBundle\Entity\ProtokollInfothekPruefer
*/
private $protokoll_infothek_pruefer;
/**
* @var \JF\JuridicusBundle\Entity\Abo
*/
private $abo;
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set typ
*
* @param integer $typ
* @return Email
*/
public function setTyp($typ)
{
$this->typ = $typ;
return $this;
}
/**
* Get typ
*
* @return int
*/
public function getTyp()
{
return $this->typ;
}
/**
* Get typ string
*
* @return string
*/
public function getTypString()
{
if (isset(self::$typ_options[$this->getTyp()])) {
return self::$typ_options[$this->getTyp()];
} else {
return 'nicht verfügbar';
}
}
/**
*
* @return string
*/
public function getTypAndTime()
{
if (isset($this->created_at)) {
return sprintf('%s (%s)', $this->getTypString(),
$this->created_at->format('d.m.Y H:i:s'));
} else {
return $this->getTypString();
}
}
/**
* Set created_at
*
* @param \DateTime $createdAt
* @return Email
*/
public function setCreatedAt(\DateTime $createdAt = null)
{
$this->created_at = $createdAt;
return $this;
}
/**
* Get created_at
*
* @return \DateTime
*/
public function getCreatedAt()
{
return $this->created_at;
}
/**
* Set kunde [OWNING SIDE]
*
* @param \JF\JuridicusBundle\Entity\Kunde $kunde
* @return Email
*/
public function setKunde(Kunde $kunde = null)
{
$this->kunde = $kunde;
return $this;
}
/**
* Get kunde
*
* @return \JF\JuridicusBundle\Entity\Kunde
*/
public function getKunde()
{
return $this->kunde;
}
/**
* Set pruefer
*
* @param \JF\JuridicusBundle\Entity\Pruefer $pruefer
* @return Email
*/
public function setPruefer(Pruefer $pruefer = null)
{
$this->pruefer = $pruefer;
return $this;
}
/**
* Get pruefer
*
* @return \JF\JuridicusBundle\Entity\Pruefer
*/
public function getPruefer()
{
return $this->pruefer;
}
/**
* Set kunde_pruefung
*
* @param \JF\JuridicusBundle\Entity\KundePruefung $kundePruefung
* @return Email
*/
public function setKundePruefung(KundePruefung $kundePruefung = null)
{
$this->kunde_pruefung = $kundePruefung;
return $this;
}
/**
* Get kunde_pruefung
*
* @return \JF\JuridicusBundle\Entity\KundePruefung
*/
public function getKundePruefung()
{
return $this->kunde_pruefung;
}
/**
* @ORM\PrePersist
*/
public function setCreatedAtValue()
{
if (!$this->init_mode AND ! isset($this->created_at)) {
$this->setCreatedAt(new \DateTime());
}
}
/**
* String representation
*
* @return string
*/
public function __toString()
{
return $this->getTypAndTime();
}
/**
* Set protokoll_infothek_pruefer
*
* @param \JF\JuridicusBundle\Entity\ProtokollInfothekPruefer $protokollInfothekPruefer
* @return Email
*/
public function setProtokollInfothekPruefer(ProtokollInfothekPruefer $protokollInfothekPruefer
= null)
{
$this->protokoll_infothek_pruefer = $protokollInfothekPruefer;
return $this;
}
/**
* Get protokoll_infothek_pruefer
*
* @return \JF\JuridicusBundle\Entity\ProtokollInfothekPruefer
*/
public function getProtokollInfothekPruefer()
{
return $this->protokoll_infothek_pruefer;
}
/**
* Set abo
*
* @param \JF\JuridicusBundle\Entity\Abo $abo
* @return Email
*/
public function setAbo(Abo $abo = null)
{
$this->abo = $abo;
return $this;
}
/**
*
* @return Email
*/
public function calculateRechnungTyp()
{
$abo = $this->getAbo();
if (!$abo) {
return $this;
}
$this->typ = self::$abo_rechnung_map[$abo->getZeitschrift()][$abo->getTyp()];
return $this;
}
/**
*
* @return Email
*/
public function calculateVersandTyp()
{
$abo = $this->getAbo();
if (!$abo) {
return $this;
}
$this->typ = self::$abo_versand_map[$abo->getZeitschrift()][$abo->getTyp()];
return $this;
}
/**
* Get abo
*
* @return \JF\JuridicusBundle\Entity\Abo
*/
public function getAbo()
{
return $this->abo;
}
}