From 0356063015f76eee8c3a8721d5f914c30f630508 Mon Sep 17 00:00:00 2001 From: Kevin Date: Sat, 24 Jan 2026 13:23:03 +0100 Subject: [PATCH] Add Calculationpresets and Calculator modules with CRUD functionality, migrations, and UI components. --- .../Calculationpreset/Calculationpreset.php | 43 +++++++++++ .../CreateCalculationpreset.php | 55 ++++++++++++++ .../EditCalculationpreset.php | 64 ++++++++++++++++ .../ShowCalculationpreset.php | 29 ++++++++ app/Livewire/Calculator/Calculator.php | 23 ++++++ app/Models/Calculationpreset.php | 20 +++++ ..._102650_create_calculatorpresets_table.php | 33 +++++++++ resources/views/components/navbar.blade.php | 4 +- .../calculationpreset/create.blade.php | 74 +++++++++++++++++++ .../livewire/calculationpreset/edit.blade.php | 74 +++++++++++++++++++ .../calculationpreset/index.blade.php | 53 +++++++++++++ .../livewire/calculationpreset/show.blade.php | 62 ++++++++++++++++ resources/views/livewire/calculator.blade.php | 17 +++++ routes/web.php | 11 +++ 14 files changed, 560 insertions(+), 2 deletions(-) create mode 100644 app/Livewire/Calculationpreset/Calculationpreset.php create mode 100644 app/Livewire/Calculationpreset/CreateCalculationpreset.php create mode 100644 app/Livewire/Calculationpreset/EditCalculationpreset.php create mode 100644 app/Livewire/Calculationpreset/ShowCalculationpreset.php create mode 100644 app/Livewire/Calculator/Calculator.php create mode 100644 app/Models/Calculationpreset.php create mode 100644 database/migrations/2026_01_24_102650_create_calculatorpresets_table.php create mode 100644 resources/views/livewire/calculationpreset/create.blade.php create mode 100644 resources/views/livewire/calculationpreset/edit.blade.php create mode 100644 resources/views/livewire/calculationpreset/index.blade.php create mode 100644 resources/views/livewire/calculationpreset/show.blade.php create mode 100644 resources/views/livewire/calculator.blade.php diff --git a/app/Livewire/Calculationpreset/Calculationpreset.php b/app/Livewire/Calculationpreset/Calculationpreset.php new file mode 100644 index 0000000..59f6972 --- /dev/null +++ b/app/Livewire/Calculationpreset/Calculationpreset.php @@ -0,0 +1,43 @@ +redirectRoute('calculationpresets.create', navigate: true); + } + + public function show($id){ + return $this->redirectRoute('calculationpresets.show', $id); + } + + public function edit($id){ + return $this->redirectRoute('calculationpresets.edit', $id); + } + + public function delete($id){ + @Auth::check(); + Model::destroy($id); + } + + public function render() + { + return view('livewire.calculationpreset.index', [ + 'calculationpresets' => Model::search('name', $this->search)->paginate(25) + ]); + } +} diff --git a/app/Livewire/Calculationpreset/CreateCalculationpreset.php b/app/Livewire/Calculationpreset/CreateCalculationpreset.php new file mode 100644 index 0000000..1f6e3d2 --- /dev/null +++ b/app/Livewire/Calculationpreset/CreateCalculationpreset.php @@ -0,0 +1,55 @@ +validate([ + 'name' => ['required', 'string', 'max:255'], + 'description' => ['nullable', 'string', 'max:255'], + 'price_kwh' => ['required', 'numeric'], + 'factor_printer' => ['nullable', 'numeric'], + 'factor_maintenance' => ['nullable', 'numeric'], + 'factor_price' => ['nullable', 'numeric'] + ]); + + $calculationpreset = new Model(); + $calculationpreset->name = $this->name; + $calculationpreset->description = $this->description; + $calculationpreset->price_kwh = $this->price_kwh; + $calculationpreset->factor_printer = $this->factor_printer; + $calculationpreset->factor_maintenance = $this->factor_maintenance; + $calculationpreset->factor_price = $this->factor_price; + $calculationpreset->save(); + + return $this->redirectRoute('calculationpresets.show', $calculationpreset->id, navigate: true); + } + + public function cancel(){ + return $this->redirectRoute('calculationpresets.index', navigate: true); + } + + public function render() + { + return view('livewire.calculationpreset.create', [ + ]); + } +} diff --git a/app/Livewire/Calculationpreset/EditCalculationpreset.php b/app/Livewire/Calculationpreset/EditCalculationpreset.php new file mode 100644 index 0000000..cb4b43a --- /dev/null +++ b/app/Livewire/Calculationpreset/EditCalculationpreset.php @@ -0,0 +1,64 @@ +validate([ + 'name' => ['required', 'string', 'max:255'], + 'description' => ['nullable', 'string', 'max:255'], + 'price_kwh' => ['required', 'numeric'], + 'factor_printer' => ['nullable', 'numeric'], + 'factor_maintenance' => ['nullable', 'numeric'], + 'factor_price' => ['nullable', 'numeric'] + ]); + + $this->calculationpreset->update([ + 'name' => $this->name, + 'description' => $this->description, + 'price_kwh' => $this->price_kwh, + 'factor_printer' => $this->factor_printer, + 'factor_maintenance' => $this->factor_maintenance, + 'factor_price' => $this->factor_price + ]); + + return $this->redirectRoute('calculationpresets.show', $this->calculationpreset->id, navigate: true); + } + + public function cancel(){ + return $this->redirectRoute('calculationpresets.index', navigate: true); + } + + public function mount(Model $calculationpreset){ + $this->calculationpreset = $calculationpreset; + $this->name = $calculationpreset->name; + $this->description = $calculationpreset->description; + $this->price_kwh = $calculationpreset->price_kwh; + $this->factor_printer = $calculationpreset->factor_printer; + $this->factor_maintenance = $calculationpreset->factor_maintenance; + $this->factor_price = $calculationpreset->factor_price; + } + + public function render() + { + return view('livewire.calculationpreset.create', [ + ]); + } +} diff --git a/app/Livewire/Calculationpreset/ShowCalculationpreset.php b/app/Livewire/Calculationpreset/ShowCalculationpreset.php new file mode 100644 index 0000000..976b36e --- /dev/null +++ b/app/Livewire/Calculationpreset/ShowCalculationpreset.php @@ -0,0 +1,29 @@ +route('calculationpresets.index'); + } + + public function edit($id){ + return redirect()->route('calculationpresets.edit', $id); + } + + public function render() + { + return view('livewire.calculationpreset.show', [ + + ]); + } +} diff --git a/app/Livewire/Calculator/Calculator.php b/app/Livewire/Calculator/Calculator.php new file mode 100644 index 0000000..d724360 --- /dev/null +++ b/app/Livewire/Calculator/Calculator.php @@ -0,0 +1,23 @@ +id(); + $table->string('name'); + $table->string('description')->nullable(); + $table->decimal('price_kwh', 10, 2); + $table->decimal('factor_printer', 10, 2); + $table->decimal('factor_maintenance', 10, 2); + $table->decimal('factor_price', 10, 2); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('calculatorpresets'); + } +}; diff --git a/resources/views/components/navbar.blade.php b/resources/views/components/navbar.blade.php index 204e077..36e9b3b 100644 --- a/resources/views/components/navbar.blade.php +++ b/resources/views/components/navbar.blade.php @@ -9,7 +9,7 @@ Dashboard - + Calculator @@ -48,7 +48,7 @@ PrinterTypes - + Calculation Presets diff --git a/resources/views/livewire/calculationpreset/create.blade.php b/resources/views/livewire/calculationpreset/create.blade.php new file mode 100644 index 0000000..571e5f0 --- /dev/null +++ b/resources/views/livewire/calculationpreset/create.blade.php @@ -0,0 +1,74 @@ +
+
+ + {{ __('Create Calculationpreset') }} + + + Save + Cancel + + + +
+
+
+

Calculationpreset Information

+

Calculationpreset details.

+
+
+
+
+
Name
+
+ +
+
+
+
Description
+
+ +
+
+
+
Price kW/h
+
+ + + + +
+
+
+
Factor Printer
+
+ + + + +
+
+
+
Factor Maintenance
+
+ + + + +
+
+
+
Factor Price
+
+ + + % + +
+
+
+
+
+ +
+
+
diff --git a/resources/views/livewire/calculationpreset/edit.blade.php b/resources/views/livewire/calculationpreset/edit.blade.php new file mode 100644 index 0000000..2148f73 --- /dev/null +++ b/resources/views/livewire/calculationpreset/edit.blade.php @@ -0,0 +1,74 @@ +
+
+ + {{ __('Edit Calculationpreset') }} + + + Save + Cancel + + + +
+
+
+

Calculationpreset Information

+

Calculationpreset details.

+
+
+
+
+
Name
+
+ +
+
+
+
Description
+
+ +
+
+
+
Price kW/h
+
+ + + + +
+
+
+
Factor Printer
+
+ + + + +
+
+
+
Factor Maintenance
+
+ + + + +
+
+
+
Factor Price
+
+ + + % + +
+
+
+
+
+ +
+
+
diff --git a/resources/views/livewire/calculationpreset/index.blade.php b/resources/views/livewire/calculationpreset/index.blade.php new file mode 100644 index 0000000..c4868fe --- /dev/null +++ b/resources/views/livewire/calculationpreset/index.blade.php @@ -0,0 +1,53 @@ +
+ + {{ __('Calculationpreset') }} + + + + + + + Create Calculationpreset + + + +
+
+ +
+ + + ID + Name + Price kw/h + Factor Printer + Factor Maintenance + Factor Price + Actions + + + @foreach ($calculationpresets as $calculationpreset) + +

{{ $calculationpreset->id }}

+

{{ $calculationpreset->name }}

+

{{ $calculationpreset->price_kwh }}€/kWh

+

{{ $calculationpreset->factor_printer }}€/h

+

{{ $calculationpreset->factor_maintenance }}€/h

+

{{ $calculationpreset->factor_price }}%

+ +
+ + + +
+
+ + @endforeach + + + {{ $calculationpresets->links() }} + +
+ +
+
diff --git a/resources/views/livewire/calculationpreset/show.blade.php b/resources/views/livewire/calculationpreset/show.blade.php new file mode 100644 index 0000000..b0fec0e --- /dev/null +++ b/resources/views/livewire/calculationpreset/show.blade.php @@ -0,0 +1,62 @@ +
+
+ + {{ __('Show Calculationpreset') }} + + + Back + Edit + + + +
+
+
+

Calculationpreset Information

+

Calculationpreset details.

+
+
+
+
+
Name
+
+ {{ $calculationpreset->name }} +
+
+
+
Description
+
+ {{ $calculationpreset->description }} +
+
+
+
Price kW/h
+
+ {{ $calculationpreset->price_kwh }} € +
+
+
+
Factor Printer
+
+ {{ $calculationpreset->factor_printer }} € +
+
+
+
Factor Maintenance
+
+ {{ $calculationpreset->factor_maintenance }} € +
+
+
+
Factor Price
+
+ {{ $calculationpreset->factor_price }} % +
+
+
+
+
+ +
+
+
diff --git a/resources/views/livewire/calculator.blade.php b/resources/views/livewire/calculator.blade.php new file mode 100644 index 0000000..82029ab --- /dev/null +++ b/resources/views/livewire/calculator.blade.php @@ -0,0 +1,17 @@ +
+ + {{ __('Calculator') }} + + + + @foreach ( \App\Models\Calculationpreset::all() as $preset) + {{ $preset->name }} + @endforeach + + + + +
+ {{ $preset->name }} : {{ $preset->price_kwh }}€ +
+
diff --git a/routes/web.php b/routes/web.php index bcffe5d..7df2acb 100644 --- a/routes/web.php +++ b/routes/web.php @@ -13,6 +13,8 @@ use App\Livewire\Type\EditType; use App\Livewire\Type\Type; use App\Livewire\Printertype\Printertype; use App\Livewire\Printer\Printer; +use App\Livewire\Calculationpreset\Calculationpreset; +use App\Livewire\Calculator\Calculator; use Illuminate\Support\Facades\Route; @@ -83,6 +85,15 @@ Route::middleware([ Route::get('extruder/{extruder}/edit', \App\Livewire\Extruder\EditExtruder::class)->name('extruder.edit'); Route::get('extruder/{extruder}', \App\Livewire\Extruder\ShowExtruder::class)->name('extruder.show'); + // Calculationpresets + Route::get('calculationpresets', Calculationpreset::class)->name('calculationpresets.index'); + Route::get('calculationpresets/create', \App\Livewire\Calculationpreset\CreateCalculationpreset::class)->name('calculationpresets.create'); + Route::get('calculationpresets/{calculationpreset}/edit', \App\Livewire\Calculationpreset\EditCalculationpreset::class)->name('calculationpresets.edit'); + Route::get('calculationpresets/{calculationpreset}', \App\Livewire\Calculationpreset\ShowCalculationpreset::class)->name('calculationpresets.show'); + + // Calculator + Route::get('calculator', Calculator::class)->name('calculator.index'); + // Orders Route::get('orders', Orders::class)->name('orders.index');