simedkom/app/Filament/Resources/Manage/Contacts/Actions/ReplyAction.php

50 lines
2.1 KiB
PHP

<?php
namespace App\Filament\Resources\Manage\Contacts\Actions;
use App\Filament\Support\CheerfulNotification;
use App\Mail\ContactReplyMail;
use App\Models\Contact;
use Filament\Actions\Action;
use Filament\Forms\Components\Textarea;
use Filament\Support\Icons\Heroicon;
use Illuminate\Support\Facades\Mail;
class ReplyAction extends Action
{
protected function setUp(): void
{
parent::setUp();
$this->label('Balas')
->icon(Heroicon::OutlinedChatBubbleLeftRight)
->color('success')
->modalHeading(fn () => CheerfulNotification::getMessage('Balas Pesan Kontak ✨✉️', 'Balas Pesan Kontak'))
->modalDescription(fn () => CheerfulNotification::getMessage('Tuliskan jawaban terbaik Anda di sini ya! Hati-hati, setelah dikirim tidak bisa ditarik kembali. 👋😊', 'Silakan masukkan balasan Anda untuk pesan kontak ini.'))
->schema([
Textarea::make('reply_message')
->label('Pesan Balasan')
->placeholder(fn (Contact $record): string => "Halo {$record->name}, ...")
->required()
->rows(5)
->autocomplete(false)
->autofocus(),
])
->action(function (Contact $record, array $data): void {
Mail::to($record->email)->send(new ContactReplyMail($record, $data['reply_message']));
$record->update([
'reply_message' => $data['reply_message'],
'replied_at' => now(),
'replied_by' => auth()->id(),
]);
CheerfulNotification::success(
CheerfulNotification::getMessage('Balasan Terkirim! 🚀✉️', 'Balasan Berhasil Dikirim'),
CheerfulNotification::getMessage('Pesan balasan Anda sudah meluncur ke email pengirim. Semoga membantu mereka ya! 😊', 'Pesan balasan telah berhasil dikirim ke alamat email pengirim.')
)->send();
})
->visible(fn (Contact $record): bool => $record->replied_at === null);
}
}