BonimaScore/src/Application/Controller/Admin/d3bonimascore_user.php

305 lines
9.5 KiB
PHP

<?php
/**
* This Software is the property of Data Development and is protected
* by copyright law - it is NOT Freeware.
*
* Any unauthorized use of this software without a valid license
* is a violation of the license agreement and will be prosecuted by
* civil and criminal law.
*
* http://www.shopmodule.com
*
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
* @author D3 Data Development - Daniel Seifert <support@shopmodule.com>
* @link http://www.oxidmodule.com
*/
namespace D3\Bonimascore\Application\Controller\Admin;
use D3\Bonimascore\Application\Model\d3bonimascore;
use D3\Bonimascore\Application\Model\d3bonimascoreRequest;
use D3\Bonimascore\Application\Model\d3bonimascoreResponse;
use D3\Bonimascore\Core\d3bonimascore_conf;
use D3\ModCfg\Application\Model\Configuration\d3_cfg_mod;
use D3\ModCfg\Application\Model\d3database;
use D3\ModCfg\Application\Model\Exception\d3_cfg_mod_exception;
use D3\ModCfg\Application\Model\Exception\d3ShopCompatibilityAdapterException;
use Doctrine\DBAL\DBALException;
use OxidEsales\Eshop\Application\Controller\Admin\AdminController;
use OxidEsales\Eshop\Application\Model\User;
use OxidEsales\Eshop\Core\DatabaseProvider;
use OxidEsales\Eshop\Core\Exception\DatabaseConnectionException;
use OxidEsales\Eshop\Core\Exception\DatabaseErrorException;
use OxidEsales\Eshop\Core\Exception\StandardException;
use OxidEsales\Eshop\Core\Registry;
class d3bonimascore_user extends AdminController
{
/** @var d3bonimascoreResponse */
public $bonimaresponse;
/**
* Current class template.
*
* @var string
*/
protected $_sThisTemplate = 'd3bonimascore_user.tpl';
/**
* @return string
* @throws DBALException
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
* @throws StandardException
* @throws d3ShopCompatibilityAdapterException
* @throws d3_cfg_mod_exception
*/
public function render()
{
parent::render();
$soxId = $this->_aViewData["oxid"] = $this->getEditObjectId();
if ($soxId != "-1" && isset($soxId)) {
$oUser = oxNew(User::class);
$oUser->load($soxId);
$this->_aViewData["edit"] = $oUser;
$oDb = DatabaseProvider::getDb(DatabaseProvider::FETCH_MODE_ASSOC);
$oResponse = oxNew(d3bonimascoreResponse::class);
$oRequest = oxNew(d3bonimascoreRequest::class);
$oRequest->buildRequestHash($oUser);
$oQB = d3database::getInstance()->getQueryBuilder();
$oQB->select('response')
->from($oResponse->getViewName())
->where('oxuserid = '.$oQB->createNamedParameter($soxId))
->andWhere('d3requesthash ='.$oQB->createNamedParameter($oRequest->d3GetRequestHash()))
->orderBy('date', 'DESC')
->setMaxResults(1);
if ($sResponse = $oDb->getOne($oQB->getSQL(), $oQB->getParameters())) {
$oResponse = oxNew(d3bonimascoreResponse::class);
$oResponse->assign(
array(
'response' => $sResponse
)
);
$this->bonimaresponse = $oResponse;
}
}
return $this->_sThisTemplate;
}
public function save()
{
parent::save();
$soxId = $this->getEditObjectId();
$oUser = oxNew(User::class);
$oUser->load($soxId);
if ($this->_allowAdminEdit($soxId) && $oUser->getId()) {
$aParams = Registry::getRequest()->getRequestEscapedParameter("editval");
$oUser->assign($aParams);
$oUser->save();
}
}
/**
* @return false|d3bonimascore
* @throws DBALException
* @throws DatabaseConnectionException
* @throws d3ShopCompatibilityAdapterException
* @throws d3_cfg_mod_exception
* @throws DatabaseErrorException
* @throws StandardException
*/
public function getBonimaScoreConfig()
{
if (false == $this->bonimaresponse) {
return false;
}
$oBonimaScore = oxNew(d3bonimascore::class);
$oQB = $oBonimaScore->d3BonimaScoreGetConfigSql($this->bonimaresponse);
$ConfigId = DatabaseProvider::getDb()->getOne($oQB->getSQL(), $oQB->getParameters());
$oBonimaScore->load($ConfigId);
return $oBonimaScore;
}
/**
* @param false $raw
*
* @return false|int
* @throws DBALException
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
* @throws StandardException
* @throws d3ShopCompatibilityAdapterException
* @throws d3_cfg_mod_exception
*/
public function getBonimaScoreValue($raw = false)
{
if (false == $this->bonimaresponse) {
return false;
}
return $this->bonimaresponse->d3GetScoreValue($raw);
}
/**
* @return false|string
* @throws DBALException
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
* @throws StandardException
* @throws d3ShopCompatibilityAdapterException
* @throws d3_cfg_mod_exception
*/
public function getBonimaResponseAddress()
{
if (false == $this->bonimaresponse) {
return false;
}
return $this->bonimaresponse->getResponseData()->return->auskunft->module->adresskontrollModul->adresskontrollen->adresskontrolle->adresse;
}
/**
* return string|false
* @throws DBALException
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
* @throws StandardException
* @throws d3ShopCompatibilityAdapterException
* @throws d3_cfg_mod_exception
*/
public function getBonimaResponsePerson()
{
if (false == $this->bonimaresponse) {
return false;
}
return $this->bonimaresponse->getResponseData()->return->auskunft->module->auftragModul->eingabedaten->person;
}
/**
* @return string|false
* @throws DBALException
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
* @throws StandardException
* @throws d3ShopCompatibilityAdapterException
* @throws d3_cfg_mod_exception
*/
public function getBonimaResponseValidationStatus()
{
if (false == $this->bonimaresponse) {
return false;
}
return $this->bonimaresponse->getResponseData()->return->auskunft->module->adresskontrollModul->adresskontrollen->adresskontrolle->adressvalidierungsstatusGrob;
}
/**
* @return string|false
* @throws DBALException
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
* @throws StandardException
* @throws d3ShopCompatibilityAdapterException
* @throws d3_cfg_mod_exception
*/
public function getBonimaResponsePersonIdentification()
{
if (false == $this->bonimaresponse) {
return false;
}
return $this->bonimaresponse->getResponseData()->return->auskunft->module->identModul;
}
/**
* @return array|null
* @throws DBALException
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
* @throws StandardException
* @throws d3ShopCompatibilityAdapterException
* @throws d3_cfg_mod_exception
*/
public function getBonimaResponseTaskDetails()
{
if (false == $this->bonimaresponse) {
return null;
}
$aDetails['datum'] = $this->bonimaresponse->getResponseData()->return->auskunft->module->auftragModul->auftragErstellungsdatum;
$aDetails['uhrzeit'] = $this->bonimaresponse->getResponseData()->return->auskunft->module->auftragModul->auftragErstellungsuhrzeit;
$aDetails['auftragnummer'] = $this->bonimaresponse->getResponseData()->return->auskunft->module->auftragModul->auftragNummer;
$aDetails['scores'] = $this->bonimaresponse->getResponseData()->return->auskunft->module->scoreModul->scores;
return $aDetails;
}
/**
* @return false|int
* @throws DBALException
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
* @throws StandardException
* @throws d3ShopCompatibilityAdapterException
* @throws d3_cfg_mod_exception
*/
public function getNextBonimaCheckDatetime()
{
if (false == $this->bonimaresponse) {
return false;
}
$iValidPeriod = $this->d3GetSettings()->getLicenseConfigData(d3bonimascore_conf::SERIAL_BIT_PREMIUMEDITION, 1) && $this->d3GetSettings()->getValue('iD3BonimaScoreValidPeriod')
? $this->d3GetSettings()->getValue('iD3BonimaScoreValidPeriod')
: 1; // response ist 1 Tag gültig
$aDetails = $this->getBonimaResponseTaskDetails();
$sLastCheckDatetime = strtotime($aDetails['datum'] . " " . $aDetails['uhrzeit']);
return strtotime("+$iValidPeriod day", $sLastCheckDatetime);
}
/**
* @return d3_cfg_mod|false
* @throws DBALException
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
*/
public function d3GetSettings()
{
return d3_cfg_mod::get('d3bonimascore');
}
/**
* @return bool
* @throws DBALException
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
* @throws StandardException
* @throws d3ShopCompatibilityAdapterException
* @throws d3_cfg_mod_exception
*/
public function hasPremiumOption()
{
return $this->d3GetSettings()->getLicenseConfigData(d3bonimascore_conf::SERIAL_BIT_PREMIUMEDITION, 1);
}
}