Files
ntspi-app/app/Filament/Resources/UserResource/Pages/ListUsers.php
F4ilji c01016a154 Migrate backend to Porto architecture and fix minor bugs
- Fully transitioned the backend to the Porto architectural pattern
- Improved code organization and maintainability
- Fixed minor bugs and inconsistencies
2025-05-12 08:47:43 +05:00

58 lines
2.0 KiB
PHP

<?php
namespace App\Filament\Resources\UserResource\Pages;
use App\Containers\User\Mails\InvitationMail;
use App\Containers\User\Models\Invitation;
use App\Filament\Resources\UserResource;
use App\Containers\User\Models\User;
use Filament\Actions;
use Filament\Forms\Components\TextInput;
use Filament\Notifications\Notification;
use Filament\Resources\Pages\ListRecords;
use Illuminate\Support\Facades\Mail;
class ListUsers extends ListRecords
{
protected static string $resource = UserResource::class;
protected function getHeaderActions(): array
{
return [
Actions\CreateAction::make(),
Actions\Action::make('inviteUser')->label('Пригласить автора')
->form([
TextInput::make('email')
->email()
->label('Почта для письма')
->required()
])
->action(function ($data) {
$inv = User::query()
->where('email', $data['email'])
->first();
if ($inv) {
Notification::make()
->title('Данный пользователь существует в системе')
->danger()
->send();
} else {
$invitation = Invitation::create([
'email' => $data['email'],
'user_id' => auth()->user()->id,
]);
Mail::to($invitation->email)->send(new InvitationMail($invitation));
Notification::make('invitedSuccess')
->body('Пользователь приглашен')
->success()->send();
}
})->visible(auth()->user()->can('invite_user'))
];
}
}