mirror of
https://github.com/OpenXE-org/OpenXE.git
synced 2024-12-25 14:10:28 +01:00
175 lines
4.1 KiB
PHP
175 lines
4.1 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Xentral\Modules\GoogleCalendar\Data;
|
|
|
|
use Xentral\Modules\GoogleCalendar\Exception\InvalidArgumentException;
|
|
|
|
final class GoogleCalendarEventAttendeeValue
|
|
{
|
|
/** @var string STATUS_ACCEPTED */
|
|
public const STATUS_ACCEPTED = 'accepted';
|
|
|
|
/** @var string STATUS_TENTATIVE */
|
|
public const STATUS_TENTATIVE = 'tentative';
|
|
|
|
/** @var string STATUS_NEEDSACTION */
|
|
public const STATUS_NEEDSACTION = 'needsAction';
|
|
|
|
/** @var string STATUS_DECLINED */
|
|
public const STATUS_DECLINED = 'declined';
|
|
|
|
/** @var string $email */
|
|
private $email;
|
|
|
|
/** @var bool $self */
|
|
private $self;
|
|
|
|
/** @var string $displayName */
|
|
private $displayName;
|
|
|
|
/** @var string $identifier */
|
|
private $identifier;
|
|
|
|
/** @var string $responseStatus */
|
|
private $responseStatus;
|
|
|
|
/** @var bool $optional */
|
|
private $optional;
|
|
|
|
/**
|
|
* @param string $email
|
|
* @param string $displayName
|
|
* @param bool $optional
|
|
* @param string $identifier
|
|
* @param string $responseStatus
|
|
* @param bool $self
|
|
*/
|
|
public function __construct(
|
|
string $email,
|
|
string $displayName = '',
|
|
bool $optional = false,
|
|
string $identifier = '',
|
|
string $responseStatus = '',
|
|
bool $self = false
|
|
) {
|
|
if ($email === '' || $email === null) {
|
|
throw new InvalidArgumentException('Email address is required.');
|
|
}
|
|
$this->email = $email;
|
|
$this->self = $self;
|
|
$this->identifier = $identifier;
|
|
$this->displayName = $displayName;
|
|
$this->responseStatus = $responseStatus;
|
|
$this->optional = $optional;
|
|
}
|
|
|
|
/**
|
|
* @param array $data
|
|
*
|
|
* @return GoogleCalendarEventAttendeeValue
|
|
*/
|
|
public static function createFromJsonArray(array $data): GoogleCalendarEventAttendeeValue
|
|
{
|
|
if (!isset($data['email'])) {
|
|
throw new InvalidArgumentException('Invalid data format.');
|
|
}
|
|
$email = $data['email'];
|
|
$self = false;
|
|
if (isset($data['self'])) {
|
|
$self = (bool)$data['self'];
|
|
}
|
|
$displayName = '';
|
|
if (isset($data['displayName'])) {
|
|
$displayName = $data['displayName'];
|
|
}
|
|
$id = '';
|
|
if (isset($data['id'])) {
|
|
$id = $data['id'];
|
|
}
|
|
$responseStatus = '';
|
|
if (isset($data['responseStatus'])) {
|
|
$responseStatus = $data['responseStatus'];
|
|
}
|
|
|
|
return new self($email, $displayName, false, $id, $responseStatus, $self);
|
|
}
|
|
|
|
/**
|
|
* @return array
|
|
*/
|
|
public function toDataArray(): array
|
|
{
|
|
$data = [];
|
|
$data['email'] = $this->getEmail();
|
|
$data['displayName'] = $this->getDisplayName();
|
|
$data['optional'] = $this->isOptional();
|
|
if ($this->getIdentifier() !== '') {
|
|
$data['id'] = $this->getIdentifier();
|
|
}
|
|
if ($this->responseStatus !== '') {
|
|
$data['responseStatus'] = $this->responseStatus;
|
|
}
|
|
|
|
return $data;
|
|
}
|
|
|
|
/**
|
|
* @return string
|
|
*/
|
|
public function getEmail(): string
|
|
{
|
|
return $this->email;
|
|
}
|
|
|
|
/**
|
|
* @return bool
|
|
*/
|
|
public function isSelf(): bool
|
|
{
|
|
return $this->self;
|
|
}
|
|
|
|
/**
|
|
* @return string
|
|
*/
|
|
public function getDisplayName(): string
|
|
{
|
|
$display = $this->displayName;
|
|
if ($display === '' || $display === null) {
|
|
$display = $this->email;
|
|
}
|
|
|
|
return $display;
|
|
}
|
|
|
|
/**
|
|
* @return string
|
|
*/
|
|
public function getIdentifier(): string
|
|
{
|
|
return $this->identifier;
|
|
}
|
|
|
|
/**
|
|
* @return bool
|
|
*/
|
|
public function isAttending(): bool
|
|
{
|
|
return (
|
|
$this->responseStatus === self::STATUS_ACCEPTED
|
|
|| $this->responseStatus === self::STATUS_TENTATIVE
|
|
|| $this->responseStatus === self::STATUS_NEEDSACTION
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @return bool
|
|
*/
|
|
public function isOptional(): bool
|
|
{
|
|
return $this->optional;
|
|
}
|
|
}
|