created FilamentCount per Manufacturer

This commit is contained in:
2025-03-10 22:39:15 +01:00
parent 9cbcddcb6b
commit c4d7410719
8 changed files with 81 additions and 58 deletions
@@ -61,6 +61,7 @@ class FilamentController extends Controller
$filament->diameter = $request->diameter;
$filament->save();
ManufacturerController::refresh();
return redirect()->route('filaments.index')->with('success', 'Filament created successfully.');
}
@@ -118,6 +119,8 @@ class FilamentController extends Controller
$filament->diameter = $request->diameter;
$filament->save();
ManufacturerController::refresh();
return redirect()->route('filaments.show', $filament->id)->with('success', 'Filament updated successfully.');
}
@@ -129,6 +132,8 @@ class FilamentController extends Controller
// delete a specific filament
$filament = Filament::find($id);
$filament->delete();
ManufacturerController::refresh();
return redirect()->route('filaments.index')->with('success', 'Filament deleted successfully.');
}
}
@@ -19,6 +19,15 @@ class ManufacturerController extends Controller
return view('manufacturers.index', compact('manufacturers', 'filamentcount'));
}
public static function refresh()
{
foreach (Manufacturer::all() as $manufacturer) {
$manufacturer->filament_count = Filament::all()->where('manufacturer_id', $manufacturer->id)->count();
$manufacturer->save();
}
return redirect()->route('manufacturers.index')->with('success', 'Manufacturer count refreshed successfully.');
}
/**
* Show the form for creating a new resource.
*/
-26
View File
@@ -1,26 +0,0 @@
<?php
namespace App\Livewire;
use Livewire\Component;
use App\Models\FilamentType;
class CreateFilamentType extends Component
{
public $name = "";
public $decription = "";
public function save()
{
FilamentType::create(
$this->only(['name', 'description'])
);
session()->flash('status', 'Filament Type Created Successfully.');
return redirect()->route('filamenttype.list');
}
public function render()
{
return view('filamenttype.create');
}
}
+3 -1
View File
@@ -3,11 +3,13 @@
namespace App\Livewire;
use Livewire\Component;
use App\Models\Manufacturer;
class Dashboard extends Component
{
public function render()
{
return view('livewire.dashboard');
$manufacturers = Manufacturer::all()->where('filament_count', '<', 0);
return view('livewire.dashboard', compact('manufacturers'));
}
}
@@ -0,0 +1,30 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('manufacturers', function (Blueprint $table) {
//
$table->integer('filament_count')->default(0);
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('manufacturers', function (Blueprint $table) {
//
$table->dropColumn('filament_count');
});
}
};
@@ -1,30 +0,0 @@
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
<div class="col-span-2">
<x-card>
<h3>
Manufacturers
</h3>
</x-card>
</div>
<div class="col-span-1">
<x-card>
<h3>
Filaments
</h3>
</x-card>
</div>
<div class="col-span-1">
<x-card>
<h3>
Types
</h3>
</x-card>
</div>
<div class="col-span-2">
<x-card>
<h3>
Colors
</h3>
</x-card>
</div>
</div>
+33 -1
View File
@@ -8,7 +8,39 @@
<div class="py-12">
<div class="max-w-7xl mx-auto sm:px-6 lg:px-8">
<x-dashboard />
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
<div class="col-span-2">
<x-card>
<h3>
Manufacturers
</h3>
@foreach ($manufacturers as $manufacturer)
{{ $manufacturer->name }}
@endforeach
</x-card>
</div>
<div class="col-span-1">
<x-card>
<h3>
Filaments
</h3>
</x-card>
</div>
<div class="col-span-1">
<x-card>
<h3>
Types
</h3>
</x-card>
</div>
<div class="col-span-2">
<x-card>
<h3>
Colors
</h3>
</x-card>
</div>
</div>
</div>
</div>
+1
View File
@@ -28,5 +28,6 @@ Route::middleware([
Route::resource('filaments', FilamentController::class);
// Manufacturers
Route::resource('manufacturers', ManufacturerController::class);
Route::get('refresh', [ManufacturerController::class, 'refresh'])->name('refresh');
});