OpenXE/classes/Modules/SubscriptionCycle/Data/SubscriptionCycleCacheData.php

90 lines
2.0 KiB
PHP
Raw Normal View History

2021-05-21 08:49:41 +02:00
<?php
declare(strict_types=1);
namespace Xentral\Modules\SubscriptionCycle\Data;
use DateTimeImmutable;
use DateTimeInterface;
final class SubscriptionCycleCacheData
{
/** @var int $subscriptionArticleId */
private $subscriptionArticleId;
/** @var DateTimeInterface $startDate */
private $startDate;
/** @var DateTimeInterface $calculationBaseDate */
private $calculationBaseDate;
/** @var float $startMonthPriceFactor */
private $startMonthPriceFactor;
/** @var int $cyclesCount */
private $cyclesCount;
private function __construct()
{
}
/**
* @param array $data
*
* @return SubscriptionCycleCacheData
*/
public static function fromDbState(array $data): SubscriptionCycleCacheData
{
$cacheData = new SubscriptionCycleCacheData();
$cacheData->subscriptionArticleId = (int)$data['subscription_article_id'];
$cacheData->startDate = new DateTimeImmutable($data['start_date']);
$cacheData->cyclesCount = (int)$data['cycles_count'];
$cacheData->calculationBaseDate = new DateTimeImmutable($data['calculation_base_date']);
$cacheData->startMonthPriceFactor = (float)$data['start_month_price_factor'];
return $cacheData;
}
/**
* @return int
*/
public function getSubscriptionArticleId(): int
{
return $this->subscriptionArticleId;
}
/**
* @return DateTimeInterface
*/
public function getStartDate(): DateTimeInterface
{
return $this->startDate;
}
/**
* @return DateTimeInterface
*/
public function getCalculationBaseDate(): DateTimeInterface
{
return $this->calculationBaseDate;
}
/**
* @return float
*/
public function getStartMonthPriceFactor(): float
{
return $this->startMonthPriceFactor;
}
/**
* @return int
*/
public function getCyclesCount(): int
{
return $this->cyclesCount;
}
}