From 13c23a076a415dc9758c8568d0f9ef0b45099fea Mon Sep 17 00:00:00 2001 From: chris Date: Wed, 11 Dec 2024 11:52:14 +0100 Subject: [PATCH] Build everything to deal with tax rates. --- .../Controllers/Api/TaxrateController.php | 61 ++++++++ app/Http/Controllers/TaxrateController.php | 32 ++++ app/Models/Taxrate.php | 20 +++ ...24_11_25_162425_create_taxrates_table.php} | 0 lang/de/configuration.php | 26 ++++ resources/views/layouts/navigation.blade.php | 37 +++-- resources/views/taxrate/create.blade.php | 86 +++++++++++ resources/views/taxrate/edit.blade.php | 140 ++++++++++++++++++ resources/views/taxrate/index.blade.php | 75 ++++++++++ routes/api.php | 2 + routes/web.php | 2 + 11 files changed, 468 insertions(+), 13 deletions(-) create mode 100644 app/Http/Controllers/Api/TaxrateController.php create mode 100644 app/Http/Controllers/TaxrateController.php rename database/migrations/{2024_11_26_063625_create_taxrates_table.php => 2024_11_25_162425_create_taxrates_table.php} (100%) create mode 100644 lang/de/configuration.php create mode 100644 resources/views/taxrate/create.blade.php create mode 100644 resources/views/taxrate/edit.blade.php create mode 100644 resources/views/taxrate/index.blade.php diff --git a/app/Http/Controllers/Api/TaxrateController.php b/app/Http/Controllers/Api/TaxrateController.php new file mode 100644 index 0000000..38a22f5 --- /dev/null +++ b/app/Http/Controllers/Api/TaxrateController.php @@ -0,0 +1,61 @@ +json(Taxrate::all()); + } + + /** + * Store a newly created resource in storage. + */ + public function store(Request $request) + { + $taxData = $request->validate([ + 'name' => 'required|string', + 'rate' => 'required|numeric', + 'active' => 'required|boolean' + ]); + + $tax = new Taxrate($taxData); + $tax->save(); + + return response()->json($tax); + } + + /** + * Update the specified resource in storage. + */ + public function update(Request $request, Taxrate $taxrate) + { + $taxData = $request->validate([ + 'name' => 'required|string', + 'rate' => 'required|numeric', + 'active' => 'required|boolean' + ]); + + $taxrate->update($taxData); + + return response()->json($taxrate); + } + + /** + * Remove the specified resource from storage. + */ + public function destroy(Taxrate $taxrate) + { + $taxrate->delete(); + + return response()->json(); + } +} diff --git a/app/Http/Controllers/TaxrateController.php b/app/Http/Controllers/TaxrateController.php new file mode 100644 index 0000000..99a2f7c --- /dev/null +++ b/app/Http/Controllers/TaxrateController.php @@ -0,0 +1,32 @@ + $taxrate]); + } +} diff --git a/app/Models/Taxrate.php b/app/Models/Taxrate.php index 68ef24c..183c67f 100644 --- a/app/Models/Taxrate.php +++ b/app/Models/Taxrate.php @@ -4,8 +4,28 @@ namespace App\Models; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\SoftDeletes; +use Illuminate\Support\Number; class Taxrate extends Model { use SoftDeletes; + + protected $fillable = [ + 'name', + 'rate', + 'active', + ]; + + /** + * The attributes that are appended with attribute getters. + * + * @var string[] + */ + protected $appends = [ + 'rate_percentage', + ]; + public function getRatePercentageAttribute() + { + return Number::percentage($this->rate, 2, 8, 'de'); + } } diff --git a/database/migrations/2024_11_26_063625_create_taxrates_table.php b/database/migrations/2024_11_25_162425_create_taxrates_table.php similarity index 100% rename from database/migrations/2024_11_26_063625_create_taxrates_table.php rename to database/migrations/2024_11_25_162425_create_taxrates_table.php diff --git a/lang/de/configuration.php b/lang/de/configuration.php new file mode 100644 index 0000000..5ad181e --- /dev/null +++ b/lang/de/configuration.php @@ -0,0 +1,26 @@ + 'Steuersatz', + 'Taxrates' => 'Steuersätze', + 'Add new taxrate' => 'Neuen Steuersatz anlegen', + 'Add new taxrate by clicking add' => 'Durch Klick auf "Anlegen" neuen Steuersatz erstellen', + 'Create new taxrate' => 'Neuen Steuersatz erstellen', + 'Existing taxrates' => 'Bestehende Steuersätze', + 'Edit taxrate' => 'Steuersatz bearbeiten', + 'New taxrate' => 'Neuer Steuersatz', + 'Delete Taxrate' => 'Steuersatz löschen', + 'Once the taxrate is deleted, all of its resources and data will be permanently deleted.' => 'Sobald der Steuersatz gelöscht wird, werden alle Ressourcen und Daten dauerhaft gelöscht.', + 'Enter your taxrate\'s information.' => 'Gib die Informationen des Steuersatzes ein.', + +]; diff --git a/resources/views/layouts/navigation.blade.php b/resources/views/layouts/navigation.blade.php index e582c5f..0178406 100644 --- a/resources/views/layouts/navigation.blade.php +++ b/resources/views/layouts/navigation.blade.php @@ -6,7 +6,7 @@
- +
@@ -14,12 +14,15 @@ - @@ -28,12 +31,16 @@