Skip to content

Commit 9a13210

Browse files
committed
Atuliazação das Models relacionamentos, Criação da Resouce Estoque.
1 parent c7ab9ba commit 9a13210

File tree

11 files changed

+255
-0
lines changed

11 files changed

+255
-0
lines changed
Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
<?php
2+
3+
namespace App\Filament\Admin\Resources;
4+
5+
use App\Filament\Admin\Resources\IventoryResource\Pages;
6+
use App\Filament\Admin\Resources\IventoryResource\RelationManagers;
7+
use App\Models\Iventory;
8+
use Filament\Forms;
9+
use Filament\Forms\Form;
10+
use Filament\Resources\Resource;
11+
use Filament\Tables;
12+
use Filament\Tables\Table;
13+
use Illuminate\Database\Eloquent\Builder;
14+
use Illuminate\Database\Eloquent\SoftDeletingScope;
15+
16+
class IventoryResource extends Resource
17+
{
18+
protected static ?string $model = Iventory::class;
19+
20+
protected static ?string $navigationIcon = 'fas-truck-moving';
21+
protected static ?string $navigationGroup = 'Produtos';
22+
protected static ?string $navigationLabel = 'Estoque';
23+
protected static ?string $modelLabel = 'Estoque';
24+
protected static ?string $modelLabelPlural = "Estoque";
25+
protected static ?int $navigationSort = 3;
26+
27+
public static function form(Form $form): Form
28+
{
29+
return $form
30+
->schema([
31+
Forms\Components\Select::make('product_id')
32+
->relationship('product', 'description') // mudar para campo 'name' o descrition
33+
->required(),
34+
Forms\Components\TextInput::make('type')
35+
->required()
36+
->maxLength(255),
37+
Forms\Components\TextInput::make('quantity')
38+
->required()
39+
->numeric()
40+
->default(0),
41+
Forms\Components\TextInput::make('unit_price')
42+
->required()
43+
->numeric(),
44+
Forms\Components\DatePicker::make('puchase_date'),
45+
Forms\Components\Textarea::make('reason')
46+
->columnSpanFull(),
47+
]);
48+
}
49+
50+
public static function table(Table $table): Table
51+
{
52+
return $table
53+
->columns([
54+
Tables\Columns\TextColumn::make('product.description')
55+
->numeric()
56+
->sortable(),
57+
Tables\Columns\TextColumn::make('type')
58+
->searchable(),
59+
Tables\Columns\TextColumn::make('quantity')
60+
->numeric()
61+
->sortable(),
62+
Tables\Columns\TextColumn::make('unit_price')
63+
->numeric()
64+
->sortable(),
65+
Tables\Columns\TextColumn::make('puchase_date')
66+
->date()
67+
->sortable(),
68+
Tables\Columns\TextColumn::make('created_at')
69+
->dateTime()
70+
->sortable()
71+
->toggleable(isToggledHiddenByDefault: true),
72+
Tables\Columns\TextColumn::make('updated_at')
73+
->dateTime()
74+
->sortable()
75+
->toggleable(isToggledHiddenByDefault: true),
76+
])
77+
->filters([
78+
//
79+
])
80+
->actions([
81+
Tables\Actions\ViewAction::make(),
82+
Tables\Actions\EditAction::make(),
83+
])
84+
->bulkActions([
85+
Tables\Actions\BulkActionGroup::make([
86+
Tables\Actions\DeleteBulkAction::make(),
87+
]),
88+
]);
89+
}
90+
91+
public static function getRelations(): array
92+
{
93+
return [
94+
//
95+
];
96+
}
97+
98+
public static function getPages(): array
99+
{
100+
return [
101+
'index' => Pages\ListIventories::route('/'),
102+
'create' => Pages\CreateIventory::route('/create'),
103+
'view' => Pages\ViewIventory::route('/{record}'),
104+
'edit' => Pages\EditIventory::route('/{record}/edit'),
105+
];
106+
}
107+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?php
2+
3+
namespace App\Filament\Admin\Resources\IventoryResource\Pages;
4+
5+
use App\Filament\Admin\Resources\IventoryResource;
6+
use Filament\Actions;
7+
use Filament\Resources\Pages\CreateRecord;
8+
9+
class CreateIventory extends CreateRecord
10+
{
11+
protected static string $resource = IventoryResource::class;
12+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<?php
2+
3+
namespace App\Filament\Admin\Resources\IventoryResource\Pages;
4+
5+
use App\Filament\Admin\Resources\IventoryResource;
6+
use Filament\Actions;
7+
use Filament\Resources\Pages\EditRecord;
8+
9+
class EditIventory extends EditRecord
10+
{
11+
protected static string $resource = IventoryResource::class;
12+
13+
protected function getHeaderActions(): array
14+
{
15+
return [
16+
Actions\ViewAction::make(),
17+
Actions\DeleteAction::make(),
18+
];
19+
}
20+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?php
2+
3+
namespace App\Filament\Admin\Resources\IventoryResource\Pages;
4+
5+
use App\Filament\Admin\Resources\IventoryResource;
6+
use Filament\Actions;
7+
use Filament\Resources\Pages\ListRecords;
8+
9+
class ListIventories extends ListRecords
10+
{
11+
protected static string $resource = IventoryResource::class;
12+
13+
protected function getHeaderActions(): array
14+
{
15+
return [
16+
Actions\CreateAction::make(),
17+
];
18+
}
19+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?php
2+
3+
namespace App\Filament\Admin\Resources\IventoryResource\Pages;
4+
5+
use App\Filament\Admin\Resources\IventoryResource;
6+
use Filament\Actions;
7+
use Filament\Resources\Pages\ViewRecord;
8+
9+
class ViewIventory extends ViewRecord
10+
{
11+
protected static string $resource = IventoryResource::class;
12+
13+
protected function getHeaderActions(): array
14+
{
15+
return [
16+
Actions\EditAction::make(),
17+
];
18+
}
19+
}

app/Filament/Admin/Resources/ProductResource.php

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
use Leandrocfe\FilamentPtbrFormFields\Money;
1818
use App\Filament\Admin\Resources\ProductResource\Pages;
1919
use App\Filament\Admin\Resources\ProductResource\RelationManagers;
20+
use Faker\Provider\ar_EG\Text;
2021

2122
class ProductResource extends Resource
2223
{
@@ -106,6 +107,17 @@ public static function table(Table $table): Table
106107
Tables\Columns\TextColumn::make('manufacturer')
107108
->searchable(),
108109

110+
Tables\Columns\TextColumn::make('total_stock')
111+
->getStateUsing(fn ( $record) => $record->total_stock)
112+
->searchable(),
113+
114+
Tables\Columns\TextColumn::make('avarage_price')
115+
->getStateUsing(fn ($record) => 'R$ ' . number_format($record->average_price, 2, ',', '.'))
116+
117+
118+
119+
->searchable(),
120+
109121
Tables\Columns\TextColumn::make('created_at')
110122
->dateTime()
111123
->sortable()

app/Filament/Admin/Resources/TicketResource/RelationManagers/TicketresponsesRelationManager.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,12 @@ public function table(Table $table): Table
4040
])
4141
->headerActions([
4242
Tables\Actions\CreateAction::make(),
43+
4344
])
4445
->actions([
4546
Tables\Actions\EditAction::make(),
4647
Tables\Actions\DeleteAction::make(),
48+
4749
])
4850
->bulkActions([
4951
Tables\Actions\BulkActionGroup::make([

app/Models/Product.php

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
use Illuminate\Database\Eloquent\Model;
66
use App\Enums\Products\CategoryProductEnum;
77
use App\Enums\Products\ManufacturerProductEnum;
8+
use Illuminate\Database\Eloquent\Relations\HasMany;
89

910
class Product extends Model
1011
{
@@ -21,4 +22,34 @@ class Product extends Model
2122
'category' => CategoryProductEnum::class,
2223
'image' => 'array',
2324
];
25+
26+
public function manufacturer()
27+
{
28+
return $this->belongsTo(Manufacturer::class);
29+
}
30+
public function iventories():HasMany
31+
{
32+
return $this->hasMany(Iventory::class);
33+
}
34+
35+
public function getTotalstockAttribute():int
36+
37+
{
38+
return $this->iventories->sum('quantity');
39+
}
40+
41+
public function getAveragePriceAttribute():float
42+
43+
{
44+
$inventories = $this->inventories ?? collect();
45+
$weightedSum = $inventories->sum(fn($inventory) => $inventory->unit_price * $inventory->quantity);
46+
$totalQuantity = $this->total_stock;
47+
48+
return $totalQuantity > 0 ? $weightedSum / $totalQuantity : 0;
49+
}
50+
51+
public function invetorytransaction()
52+
{
53+
return $this->hasMany(IventoryTransaction::class);
54+
}
2455
}

app/Models/Ticket.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
use Illuminate\Contracts\Database\Eloquent\Builder;
1111
use Illuminate\Database\Eloquent\Relations\HasMany;
1212
use Illuminate\Database\Eloquent\Relations\BelongsTo;
13+
use Illuminate\Database\Eloquent\Relations\HasOne;
1314

1415
class Ticket extends Model
1516
{
@@ -59,4 +60,9 @@ public function ticketresponses(): HasMany
5960
{
6061
return $this->hasMany(TicketResponse::class, 'ticket_id');
6162
}
63+
64+
public function review(): HasOne
65+
{
66+
return $this->hasOne(Review::class);
67+
}
6268
}

app/Models/User.php

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
use Illuminate\Support\Facades\Storage;
88
use Filament\Models\Contracts\HasAvatar;
99
use Illuminate\Notifications\Notifiable;
10+
use Illuminate\Database\Eloquent\Relations\HasOne;
11+
use Illuminate\Database\Eloquent\Relations\HasMany;
1012
use Illuminate\Database\Eloquent\Factories\HasFactory;
1113
use Illuminate\Foundation\Auth\User as Authenticatable;
1214

@@ -62,4 +64,22 @@ public function getFilamentAvatarUrl(): ?string
6264
return $this->avatar_url ? Storage::url($this->avatar_url) : null;
6365

6466
}
67+
68+
69+
public function tickets(): HasMany
70+
{
71+
return $this->hasMany(Ticket::class);
72+
}
73+
public function ticketresponses(): HasMany
74+
{
75+
return $this->hasMany(TicketResponse::class);
76+
}
77+
public function reviews(): HasMany
78+
{
79+
return $this->hasMany(Review::class);
80+
}
81+
82+
public function useraddress(): HasOne {
83+
return $this->hasOne(UserAddress::class);
84+
}
6585
}

0 commit comments

Comments
 (0)