OpenXE/classes/Modules/DocuvitaApi/DocuvitaObject.php

145 lines
3.6 KiB
PHP
Raw Normal View History

2021-05-21 08:49:41 +02:00
<?php
namespace Xentral\Modules\DocuvitaApi;
use Xentral\Modules\DocuvitaApi\Exception\UnsupportedFileTypeException;
/**
* @property string OBJ_MAILTO
* @property string OBJ_VOUCHERDATE
* @property string OBJ_VOUCHERNUMBER
* @property string OBJ_PARENTOBJECT
* @property bool|string OBJ_NAME
* @property false|string OBJ_DATECREATED
* @property int OBJ_OBJECTTYPE
*/
class DocuvitaObject
{
/** @var array PROPERTYTYPES */
const PROPERTYTYPES = [
'S' => 'FieldValueString',
'N' => 'FieldValueNumeric',
'D' => 'FieldValueDateTime',
];
/** @var mixed $originalObject */
private $originalObject;
/**
* @param array $originalObject
* @param string $sessionGUID
*/
public function __construct($originalObject, $sessionGUID)
{
$this->originalObject = $originalObject;
$this->originalObject->SessionGuid = $sessionGUID;
$this->setVersionOriginalFilename('');
}
/**
* @param string $propertyName
* @param string $propertyValue
*
* @throws UnsupportedFileTypeException
*
* @return void
*/
public function __set($propertyName, $propertyValue)
{
foreach ($this->originalObject->ObjectPropertyList as $property) {
if ($property->FieldName === $propertyName) {
$propertyValueFieldName = self::PROPERTYTYPES[$property->FieldType];
if (!isset($propertyValueFieldName)) {
throw new UnsupportedFileTypeException(sprintf(
'Field type "%s" not supported',
$property->FieldType
));
}
$property->$propertyValueFieldName = $propertyValue;
return;
}
}
}
/**
* @param $propertyName
*
* @throws UnsupportedFileTypeException
*
* @return string|null
*/
public function __get($propertyName)
{
foreach ($this->originalObject->ObjectPropertyList as $property) {
if ($property->FieldName === $propertyName) {
$propertyValueFieldName = self::PROPERTYTYPES[$property->FieldType];
if (!isset($propertyValueFieldName)) {
throw new UnsupportedFileTypeException(sprintf(
'Field type "%s" not supported',
$property->FieldType
));
}
return $property->$propertyValueFieldName;
}
}
return null;
}
/**
* @param string $propertyName
*
* @return bool
*/
public function __isset($propertyName)
{
return $this->$propertyName !== null;
}
/**
* @return string
*/
public function getDocUploadGuid()
{
return $this->originalObject->DocUploadGuid;
}
/**
* @param string $sessionGuid
*
* @return void
*/
public function setSessionGuid($sessionGuid)
{
$this->originalObject->SessionGuid = $sessionGuid;
}
/**
* @param string $fileName
*
* @return void
*/
public function setVersionOriginalFilename($fileName)
{
$this->originalObject->VersionOriginalFilename = $fileName;
}
/**
* @returns string
*/
public function getVersionOriginalFilename()
{
return $this->originalObject->VersionOriginalFilename;
}
/**
* @return false|string
*/
public function toJSON()
{
return json_encode($this->originalObject);
}
}