70 lines
1.9 KiB
PHP
70 lines
1.9 KiB
PHP
<?php
|
|
namespace App\Model\Table;
|
|
|
|
use App\Model\Table\AppTable;
|
|
use Cake\Database\Schema\TableSchemaInterface;
|
|
use Cake\Database\Type;
|
|
use Cake\ORM\Table;
|
|
use Cake\ORM\RulesChecker;
|
|
use Cake\Validation\Validator;
|
|
use Cake\Http\Exception\NotFoundException;
|
|
use Cake\ORM\TableRegistry;
|
|
|
|
Type::map('json', 'Cake\Database\Type\JsonType');
|
|
|
|
class OutboxTable extends AppTable
|
|
{
|
|
public $severityVariant;
|
|
|
|
public function initialize(array $config): void
|
|
{
|
|
parent::initialize($config);
|
|
$this->addBehavior('UUID');
|
|
$this->addBehavior('Timestamp');
|
|
$this->belongsTo('Users');
|
|
$this->addBehavior('AuditLog');
|
|
$this->setDisplayField('title');
|
|
|
|
$this->Inbox = TableRegistry::getTableLocator()->get('Inbox');
|
|
$this->severityVariant = $this->Inbox->severityVariant;
|
|
}
|
|
|
|
protected function _initializeSchema(TableSchemaInterface $schema): TableSchemaInterface
|
|
{
|
|
$schema->setColumnType('data', 'json');
|
|
|
|
return $schema;
|
|
}
|
|
|
|
public function validationDefault(Validator $validator): Validator
|
|
{
|
|
$validator
|
|
->notEmptyString('scope')
|
|
->notEmptyString('action')
|
|
->notEmptyString('title')
|
|
->datetime('created')
|
|
|
|
->requirePresence([
|
|
'scope' => ['message' => __('The field `scope` is required')],
|
|
'action' => ['message' => __('The field `action` is required')],
|
|
'title' => ['message' => __('The field `title` is required')],
|
|
], 'create');
|
|
return $validator;
|
|
}
|
|
|
|
public function buildRules(RulesChecker $rules): RulesChecker
|
|
{
|
|
$rules->add($rules->existsIn('user_id', 'Users'), [
|
|
'message' => 'The provided `user_id` does not exist'
|
|
]);
|
|
|
|
return $rules;
|
|
}
|
|
|
|
public function createEntry($entryData, $user = null)
|
|
{
|
|
$savedEntry = $this->save($entryData);
|
|
return $savedEntry;
|
|
}
|
|
}
|