Application/Api/Document/Standard/Repository/PasswordChange/PasswordChange.php
<?php
namespace SPHERE\Application\Api\Document\Standard\Repository\PasswordChange;
use SPHERE\Application\Api\Document\AbstractDocument;
use SPHERE\Application\Contact\Address\Address;
use SPHERE\Application\Document\Generator\Repository\Document;
use SPHERE\Application\Document\Generator\Repository\Element;
use SPHERE\Application\Document\Generator\Repository\Frame;
use SPHERE\Application\Document\Generator\Repository\Page;
use SPHERE\Application\Document\Generator\Repository\Section;
use SPHERE\Application\Document\Generator\Repository\Slice;
use SPHERE\Application\People\Person\Person;
use SPHERE\Application\People\Relationship\Relationship;
use SPHERE\Application\Setting\Authorization\Account\Account as AccountAuthorization;
use SPHERE\Application\Setting\Consumer\Consumer;
use SPHERE\Application\Setting\User\Account\Account;
class PasswordChange extends AbstractDocument
{
const BLOCK_SPACE = '30px';
/**
* PasswordChange constructor.
*
* @param array $Data
*
* @throws \Doctrine\ORM\ORMException
* @throws \Doctrine\ORM\OptimisticLockException
* @throws \Doctrine\ORM\TransactionRequiredException
*/
function __construct($Data)
{
$this->setFieldValue($Data);
}
/**
* @var array
*/
private $FieldValue = array();
/**
* @param array $DataPost
*
* @return $this
* @throws \Doctrine\ORM\ORMException
* @throws \Doctrine\ORM\OptimisticLockException
* @throws \Doctrine\ORM\TransactionRequiredException
*/
private function setFieldValue($DataPost)
{
$tblAccount = false;
// Common
$this->FieldValue['PersonSalutation'] = '';
$this->FieldValue['PersonFirstLastName'] = '';
$this->FieldValue['PersonTitle'] = '';
$this->FieldValue['PersonLastName'] = '';
$this->FieldValue['Gender'] = 0;
$this->FieldValue['UserAccount'] = '';
$this->FieldValue['Street'] = '';
$this->FieldValue['District'] = '';
$this->FieldValue['City'] = '';
// Text choose decision
$this->FieldValue['IsParent'] = (isset($DataPost['IsParent']) ? $DataPost['IsParent'] : false);
$this->FieldValue['ChildCount'] = 0;
// School
$this->FieldValue['CompanyName'] = (isset($DataPost['CompanyName']) && $DataPost['CompanyName'] != '' ? $DataPost['CompanyName'] : ' ');
$this->FieldValue['CompanyExtendedName'] = (isset($DataPost['CompanyExtendedName']) && $DataPost['CompanyExtendedName'] != '' ? $DataPost['CompanyExtendedName'] : ' ');
$this->FieldValue['CompanyStreet'] = (isset($DataPost['CompanyStreet']) && $DataPost['CompanyStreet'] != '' ? $DataPost['CompanyStreet'] : ' ');
$this->FieldValue['CompanyDistrict'] = (isset($DataPost['CompanyDistrict']) && $DataPost['CompanyDistrict'] != '' ? $DataPost['CompanyDistrict'] : ' ');
$this->FieldValue['CompanyCity'] = (isset($DataPost['CompanyCity']) && $DataPost['CompanyCity'] != '' ? $DataPost['CompanyCity'] : ' ');
// Contact
$this->FieldValue['Phone'] = (isset($DataPost['Phone']) && $DataPost['Phone'] != '' ? $DataPost['Phone'] : ' ');
$this->FieldValue['Fax'] = (isset($DataPost['Fax']) && $DataPost['Fax'] != '' ? $DataPost['Fax'] : ' ');
$this->FieldValue['Mail'] = (isset($DataPost['Mail']) && $DataPost['Mail'] != '' ? $DataPost['Mail'] : ' ');
$this->FieldValue['Web'] = (isset($DataPost['Web']) && $DataPost['Web'] != '' ? $DataPost['Web'] : ' ');
//Signer
$this->FieldValue['Place'] = (isset($DataPost['Place']) && $DataPost['Place'] != '' ? $DataPost['Place'].', den ' : '');
$this->FieldValue['Date'] = (isset($DataPost['Date']) && $DataPost['Date'] != '' ? $DataPost['Date'] : ' ');
//Account
$UserAccountId = (isset($DataPost['UserAccountId']) && $DataPost['UserAccountId'] != '' ? $DataPost['UserAccountId'] : false);
if($UserAccountId){
$tblUserAccount = Account::useService()->getUserAccountById($UserAccountId);
$tblAccount = $tblUserAccount->getServiceTblAccount();
if($tblAccount){
$this->FieldValue['UserAccount'] = $tblAccount->getUsername();
}
}
// Student/Custody
$this->FieldValue['PersonId'] = (isset($DataPost['PersonId']) && $DataPost['PersonId'] != '' ? $DataPost['PersonId'] : false);
if ($this->FieldValue['PersonId'] && ($tblPerson = Person::useService()->getPersonById($this->FieldValue['PersonId']))) {
$ChildCount = 0;
if($this->FieldValue['IsParent']){
if(($tblRelationshipList = Relationship::useService()->getPersonRelationshipAllByPerson($tblPerson))){
foreach($tblRelationshipList as $tblRelationship){
$tblType = $tblRelationship->getTblType();
if($tblType->getName() == 'Sorgeberechtigt'){
$ChildCount++;
}
}
}
}
if($ChildCount == 1){
$this->FieldValue['ChildCount'] = 1;
}elseif($ChildCount > 1){
$this->FieldValue['ChildCount'] = 2;
}
if(($tblCommon = $tblPerson->getCommon())) {
if(($tblCommonBirthDates = $tblCommon->getTblCommonBirthDates())){
if(($tblCommonGender = $tblCommonBirthDates->getTblCommonGender())){
if($tblCommonGender->getName() == "Männlich"){
$this->FieldValue['Gender'] = 1;
}
if($tblCommonGender->getName() == "Weiblich") {
$this->FieldValue['Gender'] = 2;
}
}
}
}
$this->FieldValue['PersonTitle'] = $tblPerson->getTitle();
$this->FieldValue['PersonLastName'] = $tblPerson->getLastName();
$this->FieldValue['PersonSalutation'] = $tblPerson->getSalutation();
$this->FieldValue['PersonFirstLastName'] = $tblPerson->getFirstName().' '.$tblPerson->getLastName();
$tblAddress = Address::useService()->getAddressByPerson($tblPerson);
if($tblAddress){
$this->FieldValue['Street'] = $tblAddress->getStreetName().' '.$tblAddress->getStreetNumber();
$tblCity = $tblAddress->getTblCity();
if($tblCity){
$this->FieldValue['District'] = $tblCity->getDistrict();
$this->FieldValue['City'] = $tblCity->getCode().' '.$tblCity->getName();
}
}
}
//generate new Password
$this->FieldValue['Password'] = $Password = Account::useService()->generatePassword();
// remove tblAccount
if ($tblAccount && $Password) {
AccountAuthorization::useService()->changePassword($Password, $tblAccount);
Account::useService()->changePassword($tblAccount, $Password);
};
return $this;
}
/**
* @return string
*/
public function getName()
{
return 'Passwort-Schulsoftware';
}
/**
* @param array $pageList
*
* @return Frame
*/
public function buildDocument($pageList = array())
{
return (new Frame())->addDocument((new Document())
->addPage($this->buildPageOne())
);
}
/**
* @return Slice
*/
private function getAddressHead()
{
$Slice = new Slice();
$Slice->addElement((new Element())
->setContent($this->FieldValue['CompanyName'])
->styleTextSize('8pt')
);
if($this->FieldValue['CompanyExtendedName'] != ' '){
$Slice->addElement((new Element())
->setContent($this->FieldValue['CompanyExtendedName'])
->styleTextSize('8pt')
);
}
$Slice->addElement((new Element())
->setContent(
($this->FieldValue['CompanyDistrict'] != ' '
? $this->FieldValue['CompanyDistrict'].' '
: '')
.$this->FieldValue['CompanyStreet'].' '
.$this->FieldValue['CompanyCity'])
->styleTextSize('8pt')
->stylePaddingBottom('15px')
);
// $Slice->addElement((new Element())
// ->setContent('Empfänger')
// ->styleTextSize('8pt')
// );
$Slice->addElement((new Element())
->setContent($this->FieldValue['PersonSalutation'].' '.$this->FieldValue['PersonFirstLastName'])
);
if($this->FieldValue['District']){
$Slice->addElement((new Element())
->setContent($this->FieldValue['District'])
);
}
$Slice->addElement((new Element())
->setContent($this->FieldValue['Street'])
);
$Slice->addElement((new Element())
->setContent($this->FieldValue['City'])
);
return $Slice;
}
/**
* @return Slice
*/
private function getContactData()
{
$Slice = new Slice();
$Slice->addSection((new Section())
->addElementColumn((new Element())
->setContent('Telefon:')
->styleTextSize('8pt')
, '20%')
->addElementColumn((new Element())
->setContent($this->FieldValue['Phone'])
->styleTextSize('8pt')
, '80%')
);
$Slice->addSection((new Section())
->addElementColumn((new Element())
->setContent('Telefax:')
->styleTextSize('8pt')
, '20%')
->addElementColumn((new Element())
->setContent($this->FieldValue['Fax'])
->styleTextSize('8pt')
, '80%')
);
$Slice->addSection((new Section())
->addElementColumn((new Element())
->setContent('E-Mail:')
->styleTextSize('8pt')
, '20%')
->addElementColumn((new Element())
->setContent($this->FieldValue['Mail'])
->styleTextSize('8pt')
, '80%')
);
$Slice->addSection((new Section())
->addElementColumn((new Element())
->setContent('Internet:')
->styleTextSize('8pt')
->stylePaddingTop('10px')
, '20%')
->addElementColumn((new Element())
->setContent($this->FieldValue['Web'])
->styleTextSize('8pt')
->stylePaddingTop('10px')
, '80%')
);
$Slice->addElement((new Element())
->setContent($this->FieldValue['Place'].$this->FieldValue['Date'])
// ->styleTextSize('8pt')
->stylePaddingTop('10px')
);
$Slice->stylePaddingTop('10px');
return $Slice;
}
private function getFirstLetterContent($Height = '500px')
{
$Slice = new Slice();
if ($this->FieldValue['IsParent']) {
$Slice->addSection((new Section())
->addElementColumn((new Element())
->setContent(' ')
, '4%'
)
->addElementColumn((new Element())
->setContent('Ihre neuen Zugangsdaten zur Notenübersicht
{% if '.$this->FieldValue['ChildCount'].' == 1 %}
Ihres Kindes
{% elseif '.$this->FieldValue['ChildCount'].' == 2 %}
Ihrer Kinder
{% else %}
Ihres Kindes / Ihrer Kinder
{% endif %}')
->styleTextBold()
)
->addElementColumn((new Element())
->setContent(' ')
, '4%'
))
->addElement((new Element())
->setContent(' ')
->styleHeight('40px')
)
->addSection((new Section())
->addElementColumn((new Element())
->setContent(' ')
, '4%'
)
->addElementColumn((new Element())
->setContent('
{% if '.$this->FieldValue['Gender'].' == 1 %}
Lieber
{% elseif '.$this->FieldValue['Gender'].' == 2 %}
Liebe
{% else %}
Liebe(r)
{% endif %}'
.'{% if '.$this->FieldValue['PersonSalutation'].' == "" %}
Herr/Frau
{% else %}
'.$this->FieldValue["PersonSalutation"].' '.'
{% endif %}'
. $this->FieldValue['PersonTitle'].' '
. $this->FieldValue['PersonLastName'].',')
)
->addElementColumn((new Element())
->setContent(' ')
, '4%'
)
)
->addSection((new Section())
->addElementColumn((new Element())
->setContent(' ')
, '4%'
)
->addElementColumn((new Element())
->setContent('sollten Sie das Passwort vergessen, bestehen zwei Möglichkeiten, das Passwort zurückzusetzen:')
->stylePaddingTop('12px')
->styleAlignJustify()
)
->addElementColumn((new Element())
->setContent(' ')
, '4%'
)
)
->addSection((new Section())
->addElementColumn((new Element())
->setContent(' ')
, '4%'
)
->addElementColumn((new Element())
->setContent('1. Wir setzen das Passwort auf das Initialpasswort zurück. Diese Möglichkeit ist für Sie kostenfrei.')
->stylePaddingTop(self::BLOCK_SPACE)
->styleAlignJustify()
->stylePaddingLeft('35px')
)
->addElementColumn((new Element())
->setContent(' ')
, '4%'
)
)
->addSection((new Section())
->addElementColumn((new Element())
->setContent(' ')
, '4%'
)
->addElementColumn((new Element())
->setContent('2. Wir generieren neue Zugangsdaten für Sie und übersenden Ihnen diese. Hierfür erheben
wir einen Unkostenbeitrag von 5 €, der Ihnen bei der nächsten Abrechnung belastet wird.')
->stylePaddingTop('5px')
->styleAlignJustify()
->stylePaddingLeft('35px')
)
->addElementColumn((new Element())
->setContent(' ')
, '4%'
)
)
->addSection((new Section())
->addElementColumn((new Element())
->setContent(' ')
, '4%'
)
->addElementColumn((new Element())
->setContent('Wunschgemäß übersenden wir Ihnen Ihre neuen Zugangsdaten zur Einsicht der Noten
{% if '.$this->FieldValue['ChildCount'].' == 1 %}
Ihres Kindes.
{% elseif '.$this->FieldValue['ChildCount'].' == 2 %}
Ihrer Kinder.
{% else %}
Ihres Kindes / Ihrer Kinder.
{% endif %}')
->stylePaddingTop(self::BLOCK_SPACE)
->styleAlignJustify()
)
->addElementColumn((new Element())
->setContent(' ')
, '4%'
)
)
->addSection((new Section())
->addElementColumn((new Element())
->setContent(' ')
, '4%'
)
->addElementColumn((new Element())
->setContent('Benutzername:')
->stylePaddingTop(self::BLOCK_SPACE)
->stylePaddingLeft('35px')
, '22%'
)
->addElementColumn((new Element())
->setContent($this->FieldValue['UserAccount'])
->stylePaddingTop(self::BLOCK_SPACE)
->stylePaddingLeft('10px')
, '70%'
)
->addElementColumn((new Element())
->setContent(' ')
, '4%'
)
)
->addSection((new Section())
->addElementColumn((new Element())
->setContent(' ')
, '4%'
)
->addElementColumn((new Element())
->setContent('Passwort:')
->stylePaddingTop()
->stylePaddingLeft('35px')
, '22%'
)
->addElementColumn((new Element())
->setContent($this->FieldValue['Password'])
->stylePaddingTop()
->stylePaddingLeft('10px')
, '70%'
)
->addElementColumn((new Element())
->setContent(' ')
, '4%'
)
)
->addSection((new Section())
->addElementColumn((new Element())
->setContent(' ')
, '4%'
)
->addElementColumn((new Element())
->setContent('Bitte ändern Sie das Initialpasswort und notieren Sie sich das neue Passwort hier:')
->stylePaddingTop(self::BLOCK_SPACE)
, '73%'
)
->addElementColumn((new Element())
->setContent(' ')
->stylePaddingTop(self::BLOCK_SPACE)
->styleBorderBottom()
, '19%'
)
->addElementColumn((new Element())
->setContent(' ')
, '4%'
)
)
->addSection((new Section())
->addElementColumn((new Element())
->setContent(' ')
, '4%'
)
->addElementColumn((new Element())
->setContent('Hierfür erheben wir einen Unkostenbeitrag von 5 €, der Ihnen bei der nächsten Abrechnung belastet wird.')
->stylePaddingTop(self::BLOCK_SPACE)
)
->addElementColumn((new Element())
->setContent(' ')
, '4%'
)
)
->addSection((new Section())
->addElementColumn((new Element())
->setContent(' ')
, '4%'
)
->addElementColumn((new Element())
->setContent('Bitte heben Sie sich dieses Schreiben gut auf.')
->styleTextBold()
->stylePaddingTop(self::BLOCK_SPACE)
)
->addElementColumn((new Element())
->setContent(' ')
, '4%'
)
)
->addSection((new Section())
->addElementColumn((new Element())
->setContent(' ')
, '4%'
)
->addElementColumn((new Element())
->setContent('Für Rückfragen stehen wir Ihnen gern zur Verfügung.')
->stylePaddingTop(self::BLOCK_SPACE)
)
->addElementColumn((new Element())
->setContent(' ')
, '4%'
)
)
->addSection((new Section())
->addElementColumn((new Element())
->setContent(' ')
, '4%'
)
->addElementColumn((new Element())
->setContent('Dieses Schreiben wurde maschinell erstellt und ist auch ohne Unterschrift rechtsgültig.')
->stylePaddingTop(self::BLOCK_SPACE)
)
->addElementColumn((new Element())
->setContent(' ')
, '4%'
)
)
->styleHeight($Height);
} else {
$Slice->addSection((new Section())
->addElementColumn((new Element())
->setContent(' ')
, '4%'
)
->addElementColumn((new Element())
->setContent('Deine neuen Zugangsdaten zur Notenübersicht')
->styleTextBold()
)
->addElementColumn((new Element())
->setContent(' ')
, '4%'
))
->addElement((new Element())
->setContent(' ')
->styleHeight('40px')
)
->addSection((new Section())
->addElementColumn((new Element())
->setContent(' ')
, '4%'
)
->addElementColumn((new Element())
->setContent('
{% if '.$this->FieldValue['Gender'].' == 1 %}
Lieber
{% elseif '.$this->FieldValue['Gender'].' == 2 %}
Liebe
{% else %}
Liebe(r)
{% endif %}'
. $this->FieldValue['PersonFirstLastName'].',')
)
->addElementColumn((new Element())
->setContent(' ')
, '4%'
)
)
->addSection((new Section())
->addElementColumn((new Element())
->setContent(' ')
, '4%'
)
->addElementColumn((new Element())
->setContent('solltest Du das Passwort vergessen, bestehen zwei Möglichkeiten, das Passwort zurückzusetzen:')
->stylePaddingTop('12px')
->styleAlignJustify()
)
->addElementColumn((new Element())
->setContent(' ')
, '4%'
)
)
->addSection((new Section())
->addElementColumn((new Element())
->setContent(' ')
, '4%'
)
->addElementColumn((new Element())
->setContent('1. Wir setzen das Passwort auf das Initialpasswort zurück. Diese Möglichkeit ist für Deine Eltern kostenfrei.')
->stylePaddingTop(self::BLOCK_SPACE)
->styleAlignJustify()
->stylePaddingLeft('35px')
)
->addElementColumn((new Element())
->setContent(' ')
, '4%'
)
)
->addSection((new Section())
->addElementColumn((new Element())
->setContent(' ')
, '4%'
)
->addElementColumn((new Element())
->setContent('2. Wir generieren neue Zugangsdaten für Dich und übersenden Dir diese. Hierfür erheben wir einen Unkostenbeitrag von 5 €, der Deinen Eltern berechnet wird.')
->stylePaddingTop('5px')
->styleAlignJustify()
->stylePaddingLeft('35px')
)
->addElementColumn((new Element())
->setContent(' ')
, '4%'
)
)
->addSection((new Section())
->addElementColumn((new Element())
->setContent(' ')
, '4%'
)
->addElementColumn((new Element())
->setContent('Wunschgemäß übersenden wir Dir neue Zugangsdaten zur Einsicht Deiner Noten.')
->stylePaddingTop(self::BLOCK_SPACE)
->styleAlignJustify()
)
->addElementColumn((new Element())
->setContent(' ')
, '4%'
)
)
->addSection((new Section())
->addElementColumn((new Element())
->setContent(' ')
, '4%'
)
->addElementColumn((new Element())
->setContent('Benutzername:')
->stylePaddingTop(self::BLOCK_SPACE)
->stylePaddingLeft('35px')
, '22%'
)
->addElementColumn((new Element())
->setContent($this->FieldValue['UserAccount'])
->stylePaddingTop(self::BLOCK_SPACE)
->stylePaddingLeft('10px')
, '70%'
)
->addElementColumn((new Element())
->setContent(' ')
, '4%'
)
)
->addSection((new Section())
->addElementColumn((new Element())
->setContent(' ')
, '4%'
)
->addElementColumn((new Element())
->setContent('Passwort:')
->stylePaddingTop()
->stylePaddingLeft('35px')
, '22%'
)
->addElementColumn((new Element())
->setContent($this->FieldValue['Password'])
->stylePaddingTop()
->stylePaddingLeft('10px')
, '70%'
)
->addElementColumn((new Element())
->setContent(' ')
, '4%'
)
)
->addSection((new Section())
->addElementColumn((new Element())
->setContent(' ')
, '4%'
)
->addElementColumn((new Element())
->setContent('Bitte ändere das Initialpasswort und notiere das neue Passwort hier:')
->stylePaddingTop(self::BLOCK_SPACE)
, '61%'
)
->addElementColumn((new Element())
->setContent(' ')
->stylePaddingTop(self::BLOCK_SPACE)
->styleBorderBottom()
, '31%'
)
->addElementColumn((new Element())
->setContent(' ')
, '4%'
)
)
->addSection((new Section())
->addElementColumn((new Element())
->setContent(' ')
, '4%'
)
->addElementColumn((new Element())
->setContent('Hierfür erheben wir einen Unkostenbeitrag von 5 €, der Deinen Eltern berechnet wird.')
->stylePaddingTop(self::BLOCK_SPACE)
)
->addElementColumn((new Element())
->setContent(' ')
, '4%'
)
)
->addSection((new Section())
->addElementColumn((new Element())
->setContent(' ')
, '4%'
)
->addElementColumn((new Element())
->setContent('Bitte hebe dieses Schreiben gut auf.')
->styleTextBold()
->stylePaddingTop(self::BLOCK_SPACE)
)
->addElementColumn((new Element())
->setContent(' ')
, '4%'
)
)
->addSection((new Section())
->addElementColumn((new Element())
->setContent(' ')
, '4%'
)
->addElementColumn((new Element())
->setContent('Falls Du Rückfragen oder Probleme mit der Anwendung hast, so wende Dich bitte an unser Sekretariat.')
->stylePaddingTop(self::BLOCK_SPACE)
)
->addElementColumn((new Element())
->setContent(' ')
, '4%'
)
)
->addSection((new Section())
->addElementColumn((new Element())
->setContent(' ')
, '4%'
)
->addElementColumn((new Element())
->setContent('Dieses Schreiben wurde maschinell erstellt und ist auch ohne Unterschrift rechtsgültig.')
->stylePaddingTop(self::BLOCK_SPACE)
)
->addElementColumn((new Element())
->setContent(' ')
, '4%'
)
)
->styleHeight($Height);
}
return $Slice;
}
/**
* @return Page
*/
private function buildPageOne()
{
return (new Page())
->addSlice((new Slice())
->addSection((new Section())
->addElementColumn((new Element())
->setContent(' ')
, '50%'
)
->addElementColumn(
$this->getPicturePasswordChange()
->styleAlignCenter()
, '50%')
)
->styleHeight('120px')
)
->addSlice((new Slice())
->addSection((new Section())
->addElementColumn((new Element())
->setContent(' ')
, '4%'
)
->addSliceColumn(
$this->getAddressHead()
, '52%')
->addSliceColumn(
$this->getContactData()
, '40%')
->addElementColumn((new Element())
->setContent(' ')
, '4%'
)
)
->styleHeight('160px')
// ->styleBorderAll()
)
->addSlice($this->getFirstLetterContent());
}
/**
* @param string $with
*
* @return Element|Element\Image
*/
protected function getPicturePasswordChange($with = 'auto')
{
$picturePath = $this->getPasswordUsedPicture();
if ($picturePath != '') {
$height = $this->getPasswordPictureHeight();
$column = (new Element\Image($picturePath, $with, $height));
} else {
$column = (new Element())
->setContent(' ');
}
return $column;
}
/**
* @return string
*/
private function getPasswordUsedPicture()
{
if (($tblSetting = Consumer::useService()->getSetting(
'Api', 'Document', 'Standard', 'PasswordChange_PictureAddress'))
) {
return (string)$tblSetting->getValue();
}
return '';
}
/**
* @return string
*/
private function getPasswordPictureHeight()
{
$value = '';
if (($tblSetting = Consumer::useService()->getSetting(
'Api', 'Document', 'Standard', 'PasswordChange_PictureHeight'))
) {
$value = (string)$tblSetting->getValue();
}
return $value ? $value : '120px';
}
}