php artisan make:migration seed_t09_system_communications_resources_table
<?php
use WeMake\Sgi\Core\Models\SystemCommunicationTemplate;
use WeMake\Sgi\Core\SeederClasses\GardenerResourceSeeder;
return new class extends GardenerResourceSeeder {
/**
* Run the migrations.
*
* @return void
*/
public function up(): void
{
$module = DB::table('t00_modules')->where('slug', '=', 'suppliers')->first();
$data = [
[
'module_id' => $module->id,
'slug' => 'suppliers.system-communications',
'model' => SystemCommunicationTemplate::class,
'description' => null,
'actions' => ['manage', 'edit', 'view'],
'translations' => [
'en' => 'System communications',
'es' => 'Comunicaciones de sistema',
'pt' => 'Comunicações de sistema',
'fr' => 'Communications système',
],
],
];
$this->insertResources($data);
$this->insertTranslations($data);
$this->insertPermissionActions($data);
$this->insertPermissions($data);
}
};
Atribuir permissões por defeito ao utilizador root:
php artisan make:migration seed_t09_system_communications_permission_table
<?php
return new class extends SeedT00PermissionRoleTable {
/**
* Module slug
*
* @var string
*/
protected $moduleSlug = 'suppliers';
/**
* Run the database seeds.
*
* @return void
*/
public function up(): void
{
$this->loadRolesAndModulePermissions();
$this->insertGlobalAdministratorData();
$this->insertModuleAdministratorData();
}
/**
* Inserts module administrator data
*
* @return void
*/
private function insertModuleAdministratorData(): void
{
$permissions = [
"$this->moduleSlug.system-communications.manage",
];
$this->insertData("$this->moduleSlug.administrator", $permissions);
}
};
<?php
use WeMake\Sgi\Core\SeederClasses\SystemCommunicationTemplatesSeeder;
return new class extends SystemCommunicationTemplatesSeeder {
protected string $moduleSlug = 'suppliers';
protected string $templateSlug = 'suppliers.mail.supplier-evaluation';
protected array $wildcards = [
':evaluation_date' => 'form.field.evaluation-date',
':classification' => 'form.field.classification',
];
protected array $translations = [
'en' => [
'subject' => 'Supplier evaluation results - :evaluation_date',
'body' => <<<BODY
The supplier evaluation was completed with the classification **:classification points**
BODY,
],
'es' => [
'subject' => 'Resultados de evaluación de proveedores - :evaluation_date',
'body' => <<<BODY
La evaluación del proveedor se completó con la clasificación **:classification pontos**
BODY,
],
'fr' => [
'subject' => 'Résultats de l\'évaluation des fournisseurs - :evaluation_date',
'body' => <<<BODY
L'évaluation du fournisseur a été complétée par un score de **: points de classement **
BODY,
],
'pt' => [
'subject' => 'Resultados da avaliação de fornecedor - :evaluation_date',
'body' => <<<BODY
A avaliação de fornecedores foi concluída com a pontuação **:classification pontos**
BODY,
],
];
};
Exemplo: ':evaluation_date' => 'form.field.evaluation-date',
Onde :evaluation_date é o wildcard, e a respetiva tradução form.field.evaluation-date
Sempre que seja necessária a implementação de modelos de sistema para um módulo, é apenas necessária a importação do componente:
<require from="wemake-modules/administration/system-communication-templates/list/index"></require>
<system-communications-list if.bind="canManageSystemCommunicationTemplates" module-slug="suppliers"></system-communications-list>
Podemos exibir a lista condicionalmente, utilizando as permissões do módulo.
import { computedFrom } from 'aurelia-framework';
//...
@computedFrom('this.appContainer.authenticatedUser.user.allPermissions')
get
canManageSystemCommunicationTemplates()
{
return this.appContainer.authenticatedUser.can([
'suppliers.system-communications.manage',
'suppliers.system-communications.view',
]);
}
protected
SystemCommunicationTemplateTranslation
$translation;
$this->translation = SystemCommunicationTemplate::where('slug', '=', 'suppliers.mail.supplier-evaluation')
->
first()
->
translate(App::getLocale());
Podemos aceder ao assunto e ao corpo da communicação através de:
$this->translation->subject e $this->translation->body