SmartCane/laravel_app/app/Livewire/Forms/MailingForm.php
Martin Folkerts 84d8bc1d74 wip
2024-01-05 20:31:17 +01:00

51 lines
1.2 KiB
PHP

<?php
namespace App\Livewire\Forms;
use App\Models\ProjectMailing;
use App\Models\ProjectReport;
use Livewire\Attributes\Rule;
use Livewire\Form;
class MailingForm extends Form
{
#[Rule('required|min:3')]
public string $subject = '';
#[Rule('required')]
public string $message = '';
#[Rule('required')]
public array $recipients = [];
#[Rule('required')]
public ProjectReport $report;
public function setReport(ProjectReport $report)
{
$this->report = $report;
$this->subject = $report->project->mail_subject;
$this->message = $report->project->mail_template;
$this->recipients = $this->report->project->emailRecipients()->get(['email', 'name'])->toArray();
}
public function save()
{
$this->validate();
$mailing = $this->report->project->mailings()->create([
'subject' => $this->subject,
'message' => $this->message,
]);
$mailing->attachments()->create([
'name' => $this->report->name,
'path' => $this->report->path,
]);
$mailing->recipients()->createMany($this->recipients);
$this->setReport($this->report);
}
}