From 6a199c3a3c84e7cd4b0dc413f811ce19fcf768c5 Mon Sep 17 00:00:00 2001 From: iridium34 Date: Mon, 10 Mar 2025 21:47:57 +0100 Subject: [PATCH] Created FilamentController & Filament Model + Views --- app/Http/Controllers/FilamentController.php | 84 ++++++++++++++-- .../Controllers/ManufacturerController.php | 96 +++++++++++++++++++ app/Models/Filament.php | 1 + .../2025_03_10_183058_create_filaments.php | 2 +- resources/views/components/navbar.blade.php | 4 +- resources/views/filaments/create.blade.php | 80 ++++++++++++++++ resources/views/filaments/edit.blade.php | 74 ++++++++++++++ resources/views/filaments/index.blade.php | 8 +- resources/views/filaments/show.blade.php | 60 ++++++++++++ .../views/manufacturers/create.blade.php | 44 +++++++++ resources/views/manufacturers/edit.blade.php | 34 +++++++ resources/views/manufacturers/index.blade.php | 30 ++++++ resources/views/manufacturers/show.blade.php | 35 +++++++ routes/web.php | 6 ++ 14 files changed, 544 insertions(+), 14 deletions(-) create mode 100644 app/Http/Controllers/ManufacturerController.php create mode 100644 resources/views/filaments/create.blade.php create mode 100644 resources/views/filaments/edit.blade.php create mode 100644 resources/views/filaments/show.blade.php create mode 100644 resources/views/manufacturers/create.blade.php create mode 100644 resources/views/manufacturers/edit.blade.php create mode 100644 resources/views/manufacturers/index.blade.php create mode 100644 resources/views/manufacturers/show.blade.php diff --git a/app/Http/Controllers/FilamentController.php b/app/Http/Controllers/FilamentController.php index de51503..c960b51 100644 --- a/app/Http/Controllers/FilamentController.php +++ b/app/Http/Controllers/FilamentController.php @@ -3,6 +3,10 @@ namespace App\Http\Controllers; use Illuminate\Http\Request; +use App\Models\Filament; +use App\Models\Color; +use App\Models\FilamentType; +use App\Models\Manufacturer; class FilamentController extends Controller { @@ -11,7 +15,10 @@ class FilamentController extends Controller */ public function index() { - // + // show all filaments + $filaments = Filament::all(); + $manufacturers = Manufacturer::all(); + return view('filaments.index', ['filaments' => $filaments, 'manufacturers' => $manufacturers]); } /** @@ -19,7 +26,11 @@ class FilamentController extends Controller */ public function create() { - // + // create a new filament + $manufacturers = Manufacturer::all(); + $types = FilamentType::all(); + $colors = Color::all(); + return view('filaments.create', compact('manufacturers', 'types', 'colors')); } /** @@ -27,7 +38,30 @@ class FilamentController extends Controller */ public function store(Request $request) { - // + // store a new filament + $request->validate([ + 'name' => 'required|string|max:255', + 'description' => 'nullable|string', + 'color_id' => 'required|exists:colors,id', + 'type_id' => 'required|exists:filament_types,id', + 'manufacturer_id' => 'required|exists:manufacturers,id', + 'weight' => 'required|numeric', + 'price' => 'nullable|decimal:2', + 'diameter' => 'required|decimal:2' + ]); + + $filament = new Filament(); + $filament->name = $request->name; + $filament->description = $request->description; + $filament->color_id = $request->color_id; + $filament->type_id = $request->type_id; + $filament->manufacturer_id = $request->manufacturer_id; + $filament->weight = $request->weight; + $filament->price = $request->price; + $filament->diameter = $request->diameter; + $filament->save(); + + return redirect()->route('filaments.index')->with('success', 'Filament created successfully.'); } /** @@ -35,7 +69,12 @@ class FilamentController extends Controller */ public function show(string $id) { - // + // show a specific filament + $filament = Filament::find($id); + $manufacturer = Manufacturer::find($filament->manufacturer_id); + $type = FilamentType::find($filament->type_id); + $color = Color::find($filament->color_id); + return view('filaments.show', compact('filament', 'manufacturer', 'type', 'color')); } /** @@ -43,7 +82,12 @@ class FilamentController extends Controller */ public function edit(string $id) { - // + // edit a specific filament + $filament = Filament::find($id); + $manufacturers = Manufacturer::all(); + $types = FilamentType::all(); + $colors = Color::all(); + return view('filaments.edit', compact('filament', 'manufacturers', 'types', 'colors')); } /** @@ -51,7 +95,30 @@ class FilamentController extends Controller */ public function update(Request $request, string $id) { - // + // update a specific filament + $request->validate([ + 'name' => 'required|string|max:255', + 'description' => 'nullable|string', + 'color_id' => 'required|exists:colors,id', + 'type_id' => 'required|exists:filament_types,id', + 'manufacturer_id' => 'required|exists:manufacturers,id', + 'weight' => 'required|numeric', + 'price' => 'nullable|decimal:2', + 'diameter' => 'required|decimal:2' + ]); + + $filament = Filament::find($id); + $filament->name = $request->name; + $filament->description = $request->description; + $filament->color_id = $request->color_id; + $filament->type_id = $request->type_id; + $filament->manufacturer_id = $request->manufacturer_id; + $filament->weight = $request->weight; + $filament->price = $request->price; + $filament->diameter = $request->diameter; + $filament->save(); + + return redirect()->route('filaments.show', $filament->id)->with('success', 'Filament updated successfully.'); } /** @@ -59,6 +126,9 @@ class FilamentController extends Controller */ public function destroy(string $id) { - // + // delete a specific filament + $filament = Filament::find($id); + $filament->delete(); + return redirect()->route('filaments.index')->with('success', 'Filament deleted successfully.'); } } diff --git a/app/Http/Controllers/ManufacturerController.php b/app/Http/Controllers/ManufacturerController.php new file mode 100644 index 0000000..5d8cbbc --- /dev/null +++ b/app/Http/Controllers/ManufacturerController.php @@ -0,0 +1,96 @@ +validate([ + 'name' => 'required|string|max:255' + ]); + + $manufacturer = new Manufacturer(); + $manufacturer->name = $request->name; + $manufacturer->description = $request->description; + $manufacturer->website = $request->website; + $manufacturer->save(); + + return redirect()->route('manufacturers.index')->with('success', 'Manufacturer created successfully.'); + } + + /** + * Display the specified resource. + */ + public function show(string $id) + { + // show a specific manufacturer + $manufacturer = Manufacturer::find($id); + return view('manufacturers.show', compact('manufacturer')); + } + + /** + * Show the form for editing the specified resource. + */ + public function edit(string $id) + { + // edit a specific manufacturer + $manufacturer = Manufacturer::find($id); + return view('manufacturers.edit', compact('manufacturer')); + } + + /** + * Update the specified resource in storage. + */ + public function update(Request $request, string $id) + { + // update a specific manufacturer + $request->validate([ + 'name' => 'required|string|max:255' + ]); + + $manufacturer = Manufacturer::find($id); + $manufacturer->name = $request->name; + $manufacturer->description = $request->description; + $manufacturer->website = $request->website; + $manufacturer->save(); + return redirect()->route('manufacturers.show', $manufacturer->id)->with('success', 'Manufacturer updated successfully.'); + } + + /** + * Remove the specified resource from storage. + */ + public function destroy(string $id) + { + // delete a specific manufacturer + $manufacturer = Manufacturer::find($id); + $manufacturer->delete(); + return redirect()->route('manufacturers.index')->with('success', 'Manufacturer deleted successfully.'); + } +} diff --git a/app/Models/Filament.php b/app/Models/Filament.php index 7122a4e..7835d3b 100644 --- a/app/Models/Filament.php +++ b/app/Models/Filament.php @@ -12,6 +12,7 @@ class Filament extends Model protected $fillable = [ 'name', + 'description', 'type_id', 'manufacturer_id', 'color_id', diff --git a/database/migrations/2025_03_10_183058_create_filaments.php b/database/migrations/2025_03_10_183058_create_filaments.php index 9009430..2c6ca4c 100644 --- a/database/migrations/2025_03_10_183058_create_filaments.php +++ b/database/migrations/2025_03_10_183058_create_filaments.php @@ -18,7 +18,7 @@ return new class extends Migration $table->string('description')->nullable(); $table->string('color_id')->required(); $table->string('manufacturer_id')->required(); - $table->string('filament_type_id')->required(); + $table->string('type_id')->required(); $table->string('weight')->required(); $table->string('diameter')->required(); $table->string('price')->nullable(); diff --git a/resources/views/components/navbar.blade.php b/resources/views/components/navbar.blade.php index 55d5440..4bb3a36 100644 --- a/resources/views/components/navbar.blade.php +++ b/resources/views/components/navbar.blade.php @@ -6,8 +6,8 @@ Dashboard - Manufacturers - Filaments + Manufacturers + Filaments Types Colors diff --git a/resources/views/filaments/create.blade.php b/resources/views/filaments/create.blade.php new file mode 100644 index 0000000..2977ef4 --- /dev/null +++ b/resources/views/filaments/create.blade.php @@ -0,0 +1,80 @@ + + + {{ __('Create Filaments') }} + + + +
+ Back + Submit +
+
+ + +
+
+
+
+ @csrf +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ + +
+ + +
+ +
+ Cancel + +
+
+
+
+
+
diff --git a/resources/views/filaments/edit.blade.php b/resources/views/filaments/edit.blade.php new file mode 100644 index 0000000..027888b --- /dev/null +++ b/resources/views/filaments/edit.blade.php @@ -0,0 +1,74 @@ + + + {{ __('Edit Filament') }} + + + +
+
+
+
+ @csrf + @method('PUT') +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ + +
+ + +
+ +
+ Cancel + +
+
+
+
+
+
diff --git a/resources/views/filaments/index.blade.php b/resources/views/filaments/index.blade.php index e994aed..09f8ec0 100644 --- a/resources/views/filaments/index.blade.php +++ b/resources/views/filaments/index.blade.php @@ -14,11 +14,11 @@
diff --git a/resources/views/filaments/show.blade.php b/resources/views/filaments/show.blade.php new file mode 100644 index 0000000..b18f3fb --- /dev/null +++ b/resources/views/filaments/show.blade.php @@ -0,0 +1,60 @@ + + + {{ $filament->name }} + + + +
+ Back + Edit + Delete +
+
+ +
+
+
+
+
Name
+
+ {{ $filament->name }} +
+
Description
+
+ {{ $filament->description }} +
+
Manufacturer
+
+ {{ $filament->manufacturer->name }} +
+
Type
+
+ {{ $filament->type->name }} +
+
Color
+
+
+ {{ $filament->color->name }} +
+
Weight
+
+ {{ $filament->weight }}g +
+
Diameter
+
+ {{ $filament->diameter }}mm +
+
Price
+
+ {{ $filament->price }} +
+
+ + +
+
+
+
diff --git a/resources/views/manufacturers/create.blade.php b/resources/views/manufacturers/create.blade.php new file mode 100644 index 0000000..4e55cbd --- /dev/null +++ b/resources/views/manufacturers/create.blade.php @@ -0,0 +1,44 @@ + + + {{ __('Create Manufacturers') }} + + + +
+ Back + Submit +
+
+ + +
+
+
+
+ @csrf +
+ + +
+ +
+ + +
+
+ + +
+
+ + +
+
+ Cancel + +
+
+
+
+
+
diff --git a/resources/views/manufacturers/edit.blade.php b/resources/views/manufacturers/edit.blade.php new file mode 100644 index 0000000..9907a31 --- /dev/null +++ b/resources/views/manufacturers/edit.blade.php @@ -0,0 +1,34 @@ + + + {{ __('Edit Manufacturers') }} + + + +
+
+
+
+ @csrf + @method('PUT') +
+ + +
+ +
+ + +
+
+ + +
+
+ Cancel + +
+
+
+
+
+
diff --git a/resources/views/manufacturers/index.blade.php b/resources/views/manufacturers/index.blade.php new file mode 100644 index 0000000..3f8cb3e --- /dev/null +++ b/resources/views/manufacturers/index.blade.php @@ -0,0 +1,30 @@ + + + {{ __('Manufacturers') }} + + + +
+ Create +
+
+ +
+
+
+ + +
+
+
+
diff --git a/resources/views/manufacturers/show.blade.php b/resources/views/manufacturers/show.blade.php new file mode 100644 index 0000000..876f531 --- /dev/null +++ b/resources/views/manufacturers/show.blade.php @@ -0,0 +1,35 @@ + + + {{ $manufacturer->name }} + + + +
+ Back + Edit + Delete +
+
+ +
+
+
+
+
Description
+
+ {{ $manufacturer->description }} +
+
Website
+ +
+ + +
+
+
+
diff --git a/routes/web.php b/routes/web.php index 5a62a2e..c33d659 100644 --- a/routes/web.php +++ b/routes/web.php @@ -3,6 +3,8 @@ use Illuminate\Support\Facades\Route; use App\Http\Controllers\FilamentTypeController; use App\Http\Controllers\ColorController; +use App\Http\Controllers\FilamentController; +use App\Http\Controllers\ManufacturerController; Route::get('/', function () { return view('welcome'); @@ -23,5 +25,9 @@ Route::middleware([ Route::resource('types', FilamentTypeController::class); // Colors Route::resource('colors', ColorController::class); + // Filaments + Route::resource('filaments', FilamentController::class); + // Manufacturers + Route::resource('manufacturers', ManufacturerController::class); });