<?php
namespace Give\Subscriptions\DataTransferObjects;
use DateTime;
use Give\Framework\Support\Facades\DateTime\Temporal;
use Give\Subscriptions\Models\SubscriptionNote;
use Give\Subscriptions\ValueObjects\SubscriptionNoteType;
/**
* Class SubscriptionNoteQueryData
*
* @since 4.8.0
*/
final class SubscriptionNoteQueryData
{
/**
* @var int
*/
public $id;
/**
* @var string
*/
public $content;
/**
* @var int
*/
public $subscriptionId;
/**
* @var SubscriptionNoteType
*/
public $type;
/**
* @var DateTime
*/
public $createdAt;
/**
* Convert data from Subscription Note Object to Subscription Note Model
*
* @since 4.8.0
*/
public static function fromObject($subscriptionNoteQueryObject): self
{
$self = new static();
$self->id = (int)$subscriptionNoteQueryObject->id;
$self->content = $subscriptionNoteQueryObject->content;
$self->subscriptionId = (int)$subscriptionNoteQueryObject->subscriptionId;
$self->type = $subscriptionNoteQueryObject->type ? new SubscriptionNoteType($subscriptionNoteQueryObject->type) : SubscriptionNoteType::ADMIN();
$self->createdAt = Temporal::toDateTime($subscriptionNoteQueryObject->createdAt);
return $self;
}
/**
* Convert DTO to Subscription Note
*
* @since 4.8.0
*/
public function toSubscriptionNote(): SubscriptionNote
{
$attributes = get_object_vars($this);
return new SubscriptionNote($attributes);
}
}