Skip to content

Commit e936579

Browse files
committed
Ciração das Relationships, envio de email , Endereço do usuário , criação da view do email
1 parent 56106f0 commit e936579

23 files changed

+911
-7
lines changed

app/Filament/Admin/Resources/ProductResource.php

+3
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,9 @@ public static function table(Table $table): Table
8484
{
8585
return $table
8686
->columns([
87+
Tables\Columns\TextColumn::make('name')
88+
->alignCenter()
89+
->searchable(),
8790
Tables\Columns\ImageColumn::make('image')
8891
->circular()
8992
->alignCenter(),

app/Filament/Admin/Resources/TicketResource.php

+2
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
use Illuminate\Database\Eloquent\SoftDeletingScope;
2222
use App\Filament\Admin\Resources\TicketResource\Pages;
2323
use App\Filament\Admin\Resources\TicketResource\RelationManagers;
24+
use App\Filament\Admin\Resources\TicketResource\RelationManagers\UseraddressesRelationManager;
2425

2526
class TicketResource extends Resource
2627
{
@@ -183,6 +184,7 @@ public static function getRelations(): array
183184
return [
184185

185186
TicketResource\RelationManagers\TicketresponsesRelationManager::class,
187+
UseraddressesRelationManager::class,
186188
//
187189
];
188190
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
<?php
2+
3+
namespace App\Filament\Admin\Resources\TicketResource\RelationManagers;
4+
5+
use Filament\Forms;
6+
use Filament\Tables;
7+
use Filament\Forms\Form;
8+
use Filament\Tables\Table;
9+
use Filament\Forms\Components\TextInput;
10+
use Illuminate\Database\Eloquent\Builder;
11+
use Leandrocfe\FilamentPtbrFormFields\Cep;
12+
use Illuminate\Database\Eloquent\SoftDeletingScope;
13+
use Filament\Resources\RelationManagers\RelationManager;
14+
15+
class UseraddressesRelationManager extends RelationManager
16+
{
17+
protected static string $relationship = 'useraddresses';
18+
19+
public function form(Form $form): Form
20+
{
21+
return $form
22+
23+
->schema([
24+
Cep::make('zip_code')
25+
->viaCep(
26+
mode: 'suffix', // Determines whether the action should be appended to (suffix) or prepended to (prefix) the cep field, or not included at all (none).
27+
errorMessage: 'CEP inválido.', // Error message to display if the CEP is invalid.
28+
setFields: [
29+
'street' => 'logradouro',
30+
'number' => 'numero',
31+
'complement' => 'complemento',
32+
'district' => 'bairro',
33+
'city' => 'localidade',
34+
'state' => 'uf'
35+
36+
]
37+
),
38+
TextInput::make('street'),
39+
TextInput::make('number'),
40+
TextInput::make('complement'),
41+
TextInput::make('district'),
42+
TextInput::make('city'),
43+
TextInput::make('state'),
44+
]);
45+
}
46+
47+
public function table(Table $table): Table
48+
{
49+
return $table
50+
->recordTitleAttribute('zip_code')
51+
->columns([
52+
Tables\Columns\TextColumn::make('zip_code')
53+
->searchable()
54+
->alignCenter(),
55+
Tables\Columns\TextColumn::make('street')
56+
->searchable()
57+
->alignCenter(),
58+
Tables\Columns\TextColumn::make('number')
59+
->searchable()
60+
->alignCenter(),
61+
Tables\Columns\TextColumn::make('complement')
62+
->searchable()
63+
->alignCenter(),
64+
Tables\Columns\TextColumn::make('district')
65+
->searchable()
66+
->alignCenter(),
67+
Tables\Columns\TextColumn::make('city')
68+
->searchable()
69+
->alignCenter(),
70+
Tables\Columns\TextColumn::make('state')
71+
72+
])
73+
->filters([
74+
//
75+
])
76+
->headerActions([
77+
Tables\Actions\CreateAction::make(),
78+
])
79+
->actions([
80+
Tables\Actions\EditAction::make(),
81+
Tables\Actions\DeleteAction::make(),
82+
])
83+
->bulkActions([
84+
Tables\Actions\BulkActionGroup::make([
85+
Tables\Actions\DeleteBulkAction::make(),
86+
]),
87+
]);
88+
}
89+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,148 @@
1+
<?php
2+
3+
namespace App\Filament\Admin\Resources;
4+
5+
use Filament\Forms;
6+
use App\Models\User;
7+
use Filament\Tables;
8+
use Filament\Forms\Form;
9+
use Filament\Tables\Table;
10+
use Illuminate\Support\Str;
11+
use App\Mail\PasswordResetMail;
12+
use Filament\Tables\Actions\EditAction;
13+
use Filament\Resources\Resource;
14+
use Filament\Tables\Actions\Action;
15+
use Illuminate\Support\Facades\Hash;
16+
use Illuminate\Support\Facades\Mail;
17+
use Filament\Tables\Actions\ViewAction;
18+
use Filament\Notifications\Notification;
19+
use Filament\Tables\Actions\ActionGroup;
20+
use Filament\Tables\Actions\DeleteAction;
21+
use Illuminate\Database\Eloquent\Builder;
22+
use Illuminate\Database\Eloquent\SoftDeletingScope;
23+
use App\Filament\Admin\Resources\UserResource\Pages;
24+
use App\Filament\Admin\Resources\UserResource\RelationManagers;
25+
use App\Filament\Admin\Resources\UserResource\RelationManagers\UseraddressesRelationManager;
26+
27+
28+
class UserResource extends Resource
29+
{
30+
protected static ?string $model = User::class;
31+
32+
protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack';
33+
34+
public static function form(Form $form): Form
35+
{
36+
return $form
37+
->schema([
38+
Forms\Components\TextInput::make('name')
39+
->required()
40+
->maxLength(255),
41+
Forms\Components\TextInput::make('email')
42+
->email()
43+
->required()
44+
->maxLength(255),
45+
Forms\Components\TextInput::make('telephone')
46+
->tel()
47+
->required()
48+
->maxLength(255),
49+
Forms\Components\TextInput::make('document_number')
50+
->required()
51+
->maxLength(255),
52+
Forms\Components\TextInput::make('avatar_url')
53+
->maxLength(255),
54+
Forms\Components\TextInput::make('settings'),
55+
Forms\Components\Toggle::make('is_admin')
56+
->required(),
57+
Forms\Components\DateTimePicker::make('email_verified_at'),
58+
Forms\Components\TextInput::make('password')
59+
->password()
60+
->required()
61+
->maxLength(255),
62+
]);
63+
}
64+
65+
public static function table(Table $table): Table
66+
{
67+
return $table
68+
->columns([
69+
Tables\Columns\TextColumn::make('name')
70+
->searchable(),
71+
Tables\Columns\TextColumn::make('email')
72+
->searchable(),
73+
Tables\Columns\TextColumn::make('telephone')
74+
->searchable(),
75+
Tables\Columns\TextColumn::make('document_number')
76+
->searchable(),
77+
Tables\Columns\TextColumn::make('avatar_url')
78+
->searchable(),
79+
Tables\Columns\IconColumn::make('is_admin')
80+
->boolean(),
81+
Tables\Columns\TextColumn::make('email_verified_at')
82+
->dateTime()
83+
->sortable(),
84+
Tables\Columns\TextColumn::make('created_at')
85+
->dateTime()
86+
->sortable()
87+
->toggleable(isToggledHiddenByDefault: true),
88+
Tables\Columns\TextColumn::make('updated_at')
89+
->dateTime()
90+
->sortable()
91+
->toggleable(isToggledHiddenByDefault: true),
92+
])
93+
->filters([
94+
//
95+
])
96+
->actions([
97+
98+
ActionGroup::make([
99+
ViewAction::make(),
100+
EditAction::make(),
101+
DeleteAction::make(),
102+
Action::make('Resetar Senha')
103+
->requiresConfirmation()
104+
->action(function (User $user) {
105+
$newPassword = Str::random(8);
106+
// Define a nova senha criptografada
107+
$user->password = Hash::make($newPassword);
108+
$user->save();
109+
// Envia o e-mail com a nova senha
110+
Mail::to($user->email)->queue(new PasswordResetMail($newPassword, $user->name));
111+
112+
Notification::make()
113+
->title('Senha Alterada com Sucesso')
114+
->body('Um Email foi enviado para o usuário com a nova senha')
115+
->success()
116+
->send();
117+
})
118+
->color('warning') // Defina a cor, como amarelo para chamar atenção
119+
->icon('heroicon-o-key'), // Ícone da chave
120+
]),
121+
122+
123+
])
124+
->bulkActions([
125+
Tables\Actions\BulkActionGroup::make([
126+
Tables\Actions\DeleteBulkAction::make(),
127+
]),
128+
]);
129+
}
130+
131+
public static function getRelations(): array
132+
{
133+
return [
134+
UseraddressesRelationManager::class,
135+
//
136+
];
137+
}
138+
139+
public static function getPages(): array
140+
{
141+
return [
142+
'index' => Pages\ListUsers::route('/'),
143+
'create' => Pages\CreateUser::route('/create'),
144+
'view' => Pages\ViewUser::route('/{record}'),
145+
'edit' => Pages\EditUser::route('/{record}/edit'),
146+
];
147+
}
148+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?php
2+
3+
namespace App\Filament\Admin\Resources\UserResource\Pages;
4+
5+
use App\Filament\Admin\Resources\UserResource;
6+
use Filament\Actions;
7+
use Filament\Resources\Pages\CreateRecord;
8+
9+
class CreateUser extends CreateRecord
10+
{
11+
protected static string $resource = UserResource::class;
12+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<?php
2+
3+
namespace App\Filament\Admin\Resources\UserResource\Pages;
4+
5+
use App\Filament\Admin\Resources\UserResource;
6+
use Filament\Actions;
7+
use Filament\Resources\Pages\EditRecord;
8+
9+
class EditUser extends EditRecord
10+
{
11+
protected static string $resource = UserResource::class;
12+
13+
protected function getHeaderActions(): array
14+
{
15+
return [
16+
Actions\ViewAction::make(),
17+
Actions\DeleteAction::make(),
18+
];
19+
}
20+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?php
2+
3+
namespace App\Filament\Admin\Resources\UserResource\Pages;
4+
5+
use App\Filament\Admin\Resources\UserResource;
6+
use Filament\Actions;
7+
use Filament\Resources\Pages\ListRecords;
8+
9+
class ListUsers extends ListRecords
10+
{
11+
protected static string $resource = UserResource::class;
12+
13+
protected function getHeaderActions(): array
14+
{
15+
return [
16+
Actions\CreateAction::make(),
17+
];
18+
}
19+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?php
2+
3+
namespace App\Filament\Admin\Resources\UserResource\Pages;
4+
5+
use App\Filament\Admin\Resources\UserResource;
6+
use Filament\Actions;
7+
use Filament\Resources\Pages\ViewRecord;
8+
9+
class ViewUser extends ViewRecord
10+
{
11+
protected static string $resource = UserResource::class;
12+
13+
protected function getHeaderActions(): array
14+
{
15+
return [
16+
Actions\EditAction::make(),
17+
];
18+
}
19+
}

0 commit comments

Comments
 (0)