Compare commits

...

4 commits

Author SHA1 Message Date
Anna-Sara Sélea
5d1a0a77a8 Changed mail texts 2025-02-28 08:35:44 +01:00
Anna-Sara Sélea
6a95830a9c Changed mail texts 2025-02-28 08:29:07 +01:00
Anna-Sara Sélea
128e0955cf Changed mail texts 2025-02-28 08:23:41 +01:00
Anna-Sara Sélea
9fb530c28e Mail will be sent and reservation and delivery 2025-02-28 07:59:14 +01:00
9 changed files with 239 additions and 1 deletions

View file

@ -30,6 +30,7 @@ use Filament\Infolists\Components\TextEntry;
use Filament\Infolists\Components\Section;
use Filament\Tables\Contracts\HasTable;
use Filament\Tables\Concerns\InteractsWithTable;
use Filament\Infolists\Components\ImageEntry;
class Reserve extends BasePage implements HasTable
{
@ -86,6 +87,7 @@ class Reserve extends BasePage implements HasTable
->infolist([
Section::make('Game')
->schema([
ImageEntry::make('image'),
TextEntry::make('desc'),
TextEntry::make('acquisition_date'),
TextEntry::make('category.name'),

View file

@ -25,7 +25,11 @@ use Filament\Forms\Components\TextInput;
use Carbon\Carbon;
use Filament\Support\Enums\IconPosition;
use Filament\Infolists\Components\TextEntry;
use Filament\Infolists\Components\ImageEntry;
use Filament\Infolists\Components\Section;
use Illuminate\Support\Facades\Mail;
use App\Mail\ReservationCreatedUser;
use App\Mail\ReservationCreated;
class ItemResource extends Resource
@ -159,6 +163,7 @@ class ItemResource extends Resource
->infolist([
Section::make('Game')
->schema([
ImageEntry::make('image'),
TextEntry::make('desc'),
TextEntry::make('acquisition_date'),
TextEntry::make('category.name'),
@ -171,6 +176,7 @@ class ItemResource extends Resource
->hidden(fn ($record) => $record->type === "item"),
Section::make('Item')
->schema([
ImageEntry::make('image'),
TextEntry::make('desc'),
TextEntry::make('acquisition_date'),
TextEntry::make('category.name'),
@ -198,13 +204,17 @@ class ItemResource extends Resource
->required(),
])
->action(function (array $data, Item $record): void {
Reserveditem::create([
$reservation = Reserveditem::create([
'item_id' => $record->id,
'reserved_date' => Carbon::now(),
'username' => $data['username'],
'email' => $data['email']
]);
Item::where('id', $record->id)->update(['reserved' => true]);
Mail::to($data['email'])
->send(new ReservationCreatedUser($reservation));
Mail::to(env('MAIL_FROM_ADDRESS'))
->send(new ReservationCreated($reservation));
})
->hidden(fn ($record) => $record->reserved)
])

View file

@ -8,6 +8,8 @@ use Filament\Resources\Pages\EditRecord;
use Carbon\Carbon;
use App\Models\Item;
use App\Models\Reserveditem;
use Illuminate\Support\Facades\Mail;
use App\Mail\Delivered;
class EditReserveditem extends EditRecord
{
@ -45,6 +47,14 @@ class EditReserveditem extends EditRecord
Reserveditem::where('id', $record->id)->delete();
}
if ($record->delivered && !$record->returned)
{
Mail::to($record->email)
->send(new Delivered($record));
}
}
protected function getRedirectUrl(): string

61
app/Mail/Delivered.php Normal file
View file

@ -0,0 +1,61 @@
<?php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Mail\Mailables\Content;
use Illuminate\Mail\Mailables\Envelope;
use Illuminate\Queue\SerializesModels;
use App\Models\Reserveditem;
use App\Models\Item;
class Delivered extends Mailable
{
use Queueable, SerializesModels;
/**
* Create a new message instance.
*/
public function __construct(public Reserveditem $reservation )
{
//
}
/**
* Get the message envelope.
*/
public function envelope(): Envelope
{
return new Envelope(
subject: 'Levererad',
);
}
/**
* Get the message content definition.
*/
public function content(): Content
{
return new Content(
view: 'emails.user.delivered',
with: [
'reservationName' => $this->reservation->username,
'reservationDesc' => Item::where('id', $this->reservation->item_id)->pluck('desc')->first(),
'reservationEmail' => $this->reservation->email,
'reservationReturnDate' => $this->reservation->return_date->toDateString(),
],
);
}
/**
* Get the attachments for the message.
*
* @return array<int, \Illuminate\Mail\Mailables\Attachment>
*/
public function attachments(): array
{
return [];
}
}

View file

@ -0,0 +1,60 @@
<?php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Mail\Mailables\Content;
use Illuminate\Mail\Mailables\Envelope;
use Illuminate\Queue\SerializesModels;
use App\Models\Reserveditem;
use App\Models\Item;
class ReservationCreated extends Mailable
{
use Queueable, SerializesModels;
/**
* Create a new message instance.
*/
public function __construct( public Reserveditem $reservation)
{}
/**
* Get the message envelope.
*/
public function envelope(): Envelope
{
return new Envelope(
subject: 'Reservation Created',
);
}
/**
* Get the message content definition.
*/
public function content(): Content
{
return new Content(
view: 'emails.admin.reservationcreated',
with: [
'reservationName' => $this->reservation->username,
'reservationDesc' => Item::where('id', $this->reservation->item_id)->pluck('desc')->first(),
'reservationEmail' => $this->reservation->email,
],
);
}
/**
* Get the attachments for the message.
*
* @return array<int, \Illuminate\Mail\Mailables\Attachment>
*/
public function attachments(): array
{
return [];
}
}

View file

@ -0,0 +1,58 @@
<?php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Mail\Mailables\Content;
use Illuminate\Mail\Mailables\Envelope;
use Illuminate\Queue\SerializesModels;
use App\Models\Item;
use App\Models\Reserveditem;
class ReservationCreatedUser extends Mailable
{
use Queueable, SerializesModels;
/**
* Create a new message instance.
*/
public function __construct( public Reserveditem $reservation)
{}
/**
* Get the message envelope.
*/
public function envelope(): Envelope
{
return new Envelope(
subject: 'Reservation skapad',
);
}
/**
* Get the message content definition.
*/
public function content(): Content
{
return new Content(
view: 'emails.user.reservationcreated',
with: [
'reservationName' => $this->reservation->username,
'reservationDesc' => Item::where('id', $this->reservation->item_id)->pluck('desc')->first(),
'reservationEmail' => $this->reservation->email,
],
);
}
/**
* Get the attachments for the message.
*
* @return array<int, \Illuminate\Mail\Mailables\Attachment>
*/
public function attachments(): array
{
return [];
}
}

View file

@ -0,0 +1,11 @@
<!DOCTYPE html>
<html>
<head>
<title>Reservation skapad</title>
</head>
<body>
<h1>Reservation skapad</h1>
<p>{{ $reservationName }} har reserverat {{ $reservationDesc }}</p>
<p>Mail: {{ $reservationEmail }}</p>
</body>
</html>

View file

@ -0,0 +1,13 @@
<!DOCTYPE html>
<html>
<head>
<title>Vara levererad</title>
</head>
<body>
<h1>Vara levererad</h1>
<p>Du har fått {{ $reservationDesc }} levererad</p>
<p>Du ska återlämna varan {{ $reservationReturnDate }}</p>
<p>Med vänliga hälsningar</p>
<p>vBytes</p>
</body>
</html>

View file

@ -0,0 +1,13 @@
<!DOCTYPE html>
<html>
<head>
<title>Reservation skapad</title>
</head>
<body>
<h1>Reservation skapad</h1>
<p>Du har reserverat {{ $reservationDesc }}</p>
<p>Ansvarig vBytes kommer att ta kontakt med dig för att bestämma tid för överlämning.</p>
<p>Med vänliga hälsningar</p>
<p>vBytes</p>
</body>
</html>