Initial xentral_oss_20.3.c9ffacf
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Xentral\Modules\SubscriptionCycle\Service;
|
||||
|
||||
use Xentral\Components\Database\Database;
|
||||
use Xentral\Modules\SubscriptionCycle\Data\SubscriptionCycleCacheData;
|
||||
|
||||
final class SubscriptionCycleCacheService
|
||||
{
|
||||
/** @var Database */
|
||||
private $db;
|
||||
|
||||
/** @var string TABLE_NAME */
|
||||
const TABLE_NAME = 'subscription_cycle_cache';
|
||||
|
||||
/**
|
||||
* @param Database $db
|
||||
*/
|
||||
public function __construct(Database $db)
|
||||
{
|
||||
$this->db = $db;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param SubscriptionCycleCacheData[] $data
|
||||
*/
|
||||
public function createCacheEntries(array $data): void
|
||||
{
|
||||
if (!empty($data)) {
|
||||
$insert = $this->db->insert()
|
||||
->into(self::TABLE_NAME);
|
||||
|
||||
foreach ($data as $entry) {
|
||||
$insert->addRow()
|
||||
->cols(
|
||||
[
|
||||
'subscription_article_id' => $entry->getSubscriptionArticleId(),
|
||||
'start_date' => $entry->getStartDate()->format('Y-m-d'),
|
||||
'cycles_count' => $entry->getCyclesCount(),
|
||||
'calculation_base_date' => $entry->getCalculationBaseDate()->format('Y-m-d'),
|
||||
'start_month_price_factor' => $entry->getStartMonthPriceFactor(),
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
$insertSql = $insert->getStatement();
|
||||
$values = $insert->getBindValues();
|
||||
$this->db->perform($insertSql, $values);
|
||||
}
|
||||
}
|
||||
|
||||
public function emptyCache(): void
|
||||
{
|
||||
$sql = 'TRUNCATE `subscription_cycle_cache`';
|
||||
$this->db->perform($sql);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user