middleware(['auth', 'isAdmin']);
// Model
$this->modelClass = Message::class;
$this->modelType = StringHelper::toURL(__('models.messageboard'));
$this->modelData = [
'users' => [
'type' => 'checkboxSelection',
'name' => 'name',
'label' => __('models.receiver'),
'checked' => false,
'foreign' => [
'class' => User::class,
'model' => 'users',
'column' => 'name',
'label' => 'name',
'order' => [
'column' => 'name',
'direction' => 'ASC'
],
'conditions' => [
[
'column' => 'email',
'value' => '',
'condition' => '<>'
],
],
]
],
'title' => [
'type' => 'inputText',
'label' => __('models.title'),
'placeholder' => __('models.title'),
'validation' => [
'rules' => 'required|min:3',
]
],
'text' => [
'type' => 'inputTextarea',
'label' => __('models.text'),
'placeholder' => __('models.text'),
'toolbar' => [
[
'insertfile',
'undo',
'redo',
],
[
'bold',
'italic',
'strikethrough'
],
[
'alignleft',
'aligncenter',
'alignright',
'alignjustify'
],
[
'bullist',
'numlist'
],
[
'link',
'image',
'media'
]
],
'plugins' =>
[
'paste',
'lists',
'media',
'link',
'image',
'imagetools',
'contextmenu'
],
'validation' => [
'rules' => 'required',
]
],
];
if(AccessHelper::hasPermissionRoles(['Seitendesigner']))
{
$this->modelData['text']['plugins'] = array_merge($this->modelData['text']['plugins'], [
'preview',
'fullpage',
'searchreplace',
'autolink',
'directionality',
'visualblocks',
'visualchars',
'fullscreen',
'template',
'codesample',
'table',
'charmap',
'hr',
'pagebreak',
'nonbreaking',
'anchor',
'toc',
'insertdatetime',
'advlist',
'lists',
'textcolor',
'wordcount',
'contextmenu',
'colorpicker',
'textpattern'
]);
}
// URL options
$this->url = 'messageboard';
$this->route = StringHelper::toURL(__('models.messageboard'));
$this->adminIndexOptions = [
'orderBy' => 'updated_at',
'orderDirection' => 'DESC',
'paginate' => 10,
'listdata' => [
'title' => [],
'updated_at' => [
'label' => __('general.datetime'),
'format' => __('general.datetime_format_short')
]
]
];
$this->wizardOptions = [
'buttons' => [
'save' => [
'label' => __('models.send'),
'style' => 'btn-primary',
'icon' => 'fas fa-paper-plane'
]
]
];
parent::__construct();
}
protected function hook_after_action_update(&$model, Request &$request)
{
$receiverCount = count($model->users);
$receivers = array();
// Schicke die Nachricht per Email an alle gewählten Benutzer
$model->users->each(function($user) use ($model, $receiverCount, &$receivers){
$job = (new MailUserMessage(
config('mail.from.address'),
__('admin.notify title'),
$user->email,
$model->title,
$model->text,
'inc.emails.mailUserMessage'))->delay(1);
dispatch($job);
$receivers[] = $user->name;
});
// Admin-Nachricht in Abhängigkeit von der Anzahl der Empfänger
// Bei 3 oder weniger Empfängern
if($receiverCount <= 3)
{
foreach($receivers as $receiver)
{
$this->addMessageInfo(__("admin.notification sent to"), $receiver);
}
}
// Bei 4 oder mehr Empfängern
else
{
$receiverString = implode(",
", array_slice($receivers, 0, 3))."
".__("admin.:number more", ['number' => ($receiverCount - 3)]);
$this->addMessageInfo(__("admin.notification sent to"), $receiverString);
}
return $model;
}
}