tao-test/app/tao/models/classes/notification/implementation/NewSqlNotificationService.php

81 lines
3.5 KiB
PHP
Raw Normal View History

2022-08-29 20:14:13 +02:00
<?php
/**
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; under version 2
* of the License (non-upgradable).
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
* Copyright (c) 2020 (original work) Open Assessment Technologies SA;
*/
namespace oat\tao\model\notification\implementation;
use common_exception_InconsistentData;
use Doctrine\DBAL\Platforms\AbstractPlatform;
use Exception;
use oat\generis\Helper\UuidPrimaryKeyTrait;
use oat\generis\persistence\sql\SchemaCollection;
use oat\tao\model\notification\Notification;
/**
* Class NewSqlNotificationService
*
* @deprecated This class is used by client only. It will be moved to client specific extension
*/
class NewSqlNotificationService extends AbstractSqlNotificationService
{
use UuidPrimaryKeyTrait;
/**
* Allows a class to adapt the schemas as required
* @throws common_exception_InconsistentData
*/
public function provideSchema(SchemaCollection $schemaCollection): void
{
$schema = $schemaCollection->getSchema($this->getOption(self::OPTION_PERSISTENCE));
$table = $schema->createTable(self::NOTIFICATION_TABLE);
$table->addColumn(self::NOTIFICATION_FIELD_ID, 'string', ['length' => 36, 'notnull' => true]);
$table->addColumn(self::NOTIFICATION_FIELD_RECIPIENT, 'string', ['length' => 255, 'notnull' => true]);
$table->addColumn(self::NOTIFICATION_FIELD_STATUS, 'integer', ['length' => 255]);
$table->addColumn(self::NOTIFICATION_FIELD_TITLE, 'string', ['length' => 255]);
$table->addColumn(self::NOTIFICATION_FIELD_MESSAGE, 'text', []);
$table->addColumn(self::NOTIFICATION_FIELD_SENDER, 'string', ['length' => 255]);
$table->addColumn(self::NOTIFICATION_FIELD_SENDER_NAME, 'string', ['length' => 255]);
$table->addColumn(self::NOTIFICATION_FIELD_CREATION, 'datetime', ['notnull' => true]);
$table->addColumn(self::NOTIFICATION_FIELD_UPDATED, 'datetime', ['notnull' => true]);
$table->setPrimaryKey([self::NOTIFICATION_FIELD_ID]);
}
/**
* @throws Exception
*/
protected function prepareNotification(Notification $notification): array
{
/** @var AbstractPlatform $platform */
$platform = $this->getPersistence()->getPlatForm();
return [
self::NOTIFICATION_FIELD_ID => $this->getUniquePrimaryKey(),
self::NOTIFICATION_FIELD_RECIPIENT => $notification->getRecipient(),
self::NOTIFICATION_FIELD_STATUS => $notification->getStatus(),
self::NOTIFICATION_FIELD_SENDER => $notification->getSenderId(),
self::NOTIFICATION_FIELD_SENDER_NAME => $notification->getSenderName(),
self::NOTIFICATION_FIELD_TITLE => $notification->getTitle(),
self::NOTIFICATION_FIELD_MESSAGE => $notification->getMessage(),
self::NOTIFICATION_FIELD_CREATION => $platform->getNowExpression(),
self::NOTIFICATION_FIELD_UPDATED => $platform->getNowExpression(),
];
}
}