*/
private EmailTemplate $template;
+ public $showOnTableRow = true;
+
public $confirmButtonText = "Envoyer";
/**
*/
public function handle(ActionFields $fields, Collection $models)
{
- $models->map(fn(User $user) => $user->sendTemplateEmail($fields->subject, $fields->content));
+ $models->map(fn($sendsEmail) => $sendsEmail->sendTemplateEmail($fields->subject, $fields->content));
return Action::message(sprintf('%d messages envoyés', $models->count()));
}
Trix::make('Contenu', 'content')->withMeta(['value' => $this->template->content]),
];
}
+
+ /**
+ * @return array
+ */
+ public static function getActions()
+ {
+ return \App\EmailTemplate::inActionsMenu()->get()->mapInto(self::class)->toArray();
+ }
}
+
+
namespace App\Nova\Actions;
use App\EmailTemplate;
+use App\SendsEmails;
use App\User;
use FontLib\Table\Type\name;
use Illuminate\Bus\Queueable;
public function handle(ActionFields $fields, Collection $models)
{
- $models->map(fn(User $user) => $user->sendEmailFromTemplate($fields->notification));
+ $models->map(fn($sendsEmail) => $sendsEmail->sendEmailFromTemplate($fields->notification));
return Action::message(sprintf('%d messages envoyés', $models->count()));
}
{
return [
Text::make('Nom code', 'slug')->hideFromIndex(),
- Text::make('Nom', 'name'),
+ Text::make('Nom', 'name')->required(),
Text::make('Sujet', 'subject'),
- Trix::make('Contenu', 'content')->alwaysShow(),
+ Trix::make('Contenu', 'content')->alwaysShow()->required(),
Boolean::make('Dans menu action ?', 'show_in_actions'),
];
}
namespace App\Nova;
+use App\Nova\Actions\SendCustomNotification;
+use App\Nova\Actions\SendNotification;
use App\Nova\Actions\SetSubscriptionStatus;
use App\Nova\Filters\SubscriptionStatusFilter;
use App\Nova\Filters\TypeFilter;
*/
public function actions(Request $request)
{
- return [
+ return array_merge([
new SetSubscriptionStatus(true),
new SetSubscriptionStatus(false),
- ];
+ new SendNotification,
+ ], SendCustomNotification::getActions());
}
}
// new VerifyEmail,
new ValidateAddress,
],
- \App\EmailTemplate::inActionsMenu()->get()->mapInto(SendCustomNotification::class)->toArray(),
+ SendCustomNotification::getActions(),
);
}
}
* @property string name
* @property boolean $subscription_active
*/
-class Organization extends Model
+class Organization extends Model implements SendsEmails
{
use Searchable;
return $this->name;
}
+
+ /**
+ * @param $template
+ */
+ public function sendEmailFromTemplate($template)
+ {
+ $this->members->map->sendEmailFromTemplate($template);
+ }
+
+ /**
+ * @param $subject
+ * @param $content
+ */
+ public function sendTemplateEmail($subject, $content)
+ {
+ $this->members->map->sendTemplateEmail($subject, $content);
+ }
}
--- /dev/null
+<?php
+
+
+namespace App;
+
+
+interface SendsEmails
+{
+
+public function sendEmailFromTemplate($template);
+public function sendTemplateEmail($subject, $content);
+
+}
*
* @property string $status
*/
-class User extends Authenticatable implements MustVerifyEmail
+class User extends Authenticatable implements MustVerifyEmail, SendsEmails
{
use Notifiable;
use Searchable;
{
Schema::create('email_templates', function (Blueprint $table) {
$table->id();
- $table->string('slug');
+ $table->string('slug')->nullable();
$table->string('name');
$table->text('subject')->nullable();
$table->text('content');