From bde4fc046c64d8e3585fc9bc5476145ace885958 Mon Sep 17 00:00:00 2001
From: philipp lang <philipp@aweos.de>
Date: Sat, 19 Nov 2022 00:21:58 +0100
Subject: [PATCH] mod layout

---
 app/Gender.php                         |  9 +++++++++
 app/Member/MemberResource.php          |  1 +
 resources/js/views/member/ShowView.vue |  6 ++----
 tests/Feature/Member/ShowTest.php      | 10 +++++-----
 4 files changed, 17 insertions(+), 9 deletions(-)

diff --git a/app/Gender.php b/app/Gender.php
index 44fc4090..5d8a9d86 100644
--- a/app/Gender.php
+++ b/app/Gender.php
@@ -12,4 +12,13 @@ class Gender extends Model
     use HasFactory;
 
     public $fillable = ['name', 'nami_id'];
+
+    public function getSalutationAttribute(): string
+    {
+        return match ($this->name) {
+            'Männlich' => 'Herr',
+            'Weiblich' => 'Frau',
+            default => ''
+        };
+    }
 }
diff --git a/app/Member/MemberResource.php b/app/Member/MemberResource.php
index 26bc3fac..14c0318f 100644
--- a/app/Member/MemberResource.php
+++ b/app/Member/MemberResource.php
@@ -39,6 +39,7 @@ class MemberResource extends JsonResource
             'subscription_name' => $this->subscription_name,
             'gender_id' => $this->gender_id,
             'gender_name' => $this->gender?->name ?: 'keine Angabe',
+            'fullname' => ($this->gender ? $this->gender?->salutation.' ' : '').$this->fullname,
             'further_address' => $this->further_address,
             'work_phone' => $this->work_phone,
             'mobile_phone' => $this->mobile_phone,
diff --git a/resources/js/views/member/ShowView.vue b/resources/js/views/member/ShowView.vue
index 67adf142..45f2955b 100644
--- a/resources/js/views/member/ShowView.vue
+++ b/resources/js/views/member/ShowView.vue
@@ -3,10 +3,8 @@
         <!-- ****************************** Stammdaten ******************************* -->
         <div class="bg-gray-800 p-3 grid grid-cols-2 justify-start gap-3 rounded-lg">
             <heading class="col-span-full">Stammdaten</heading>
-            <key-value label="Geschlecht" :value="inner.gender_name"></key-value>
-            <key-value label="Vorname" :value="inner.firstname"></key-value>
-            <key-value label="Nachname" :value="inner.lastname"></key-value>
-            <key-value label="Adresse" :value="inner.full_address"></key-value>
+            <key-value class="col-span-2" label="Name" :value="inner.fullname"></key-value>
+            <key-value class="col-span-2" label="Adresse" :value="inner.full_address"></key-value>
             <key-value label="Geburtsdatum" :value="inner.birthday_human"></key-value>
             <key-value label="Alter" :value="inner.age"></key-value>
             <key-value label="Bundesland" :value="inner.region.name"></key-value>
diff --git a/tests/Feature/Member/ShowTest.php b/tests/Feature/Member/ShowTest.php
index 5111ebd4..cf799c64 100644
--- a/tests/Feature/Member/ShowTest.php
+++ b/tests/Feature/Member/ShowTest.php
@@ -33,7 +33,7 @@ class ShowTest extends TestCase
             ->defaults()
             ->has(Membership::factory()->in('€ LeiterIn', 5, 'Jungpfadfinder', 88)->state(['created_at' => '2022-11-19 05:00:00']))
             ->has(Payment::factory()->notPaid()->nr('2019')->subscription('Free', 1050))
-            ->for(Gender::factory()->name('Herr'))
+            ->for(Gender::factory()->name('Männlich'))
             ->for(Region::factory()->name('NRW'))
             ->create([
                 'birthday' => '1991-04-20',
@@ -41,6 +41,7 @@ class ShowTest extends TestCase
                 'zip' => '42719',
                 'location' => 'Solingen',
                 'firstname' => 'Max',
+                'lastname' => 'Muster',
                 'other_country' => 'other',
                 'main_phone' => '+49 212 1266775',
                 'mobile_phone' => '+49 212 1266776',
@@ -56,8 +57,6 @@ class ShowTest extends TestCase
         $this->assertInertiaHas([
             'birthday_human' => '20.04.1991',
             'age' => 14,
-            'firstname' => 'Max',
-            'gender_name' => 'Herr',
             'full_address' => 'Itterstr 3, 42719 Solingen',
             'region' => ['name' => 'NRW'],
             'other_country' => 'other',
@@ -68,6 +67,7 @@ class ShowTest extends TestCase
             'email' => 'a@b.de',
             'email_parents' => 'b@c.de',
             'fax' => '+49 212 1255674',
+            'fullname' => 'Herr Max Muster',
         ], $response, 'data');
         $this->assertInertiaHas([
             'activity_name' => '€ LeiterIn',
@@ -92,14 +92,14 @@ class ShowTest extends TestCase
             ->for(Group::factory())
             ->for(Nationality::factory()->name('deutsch'))
             ->for(Subscription::factory()->for(Fee::factory()))
-            ->create(['firstname' => 'Max']);
+            ->create(['firstname' => 'Max', 'lastname' => 'Muster']);
 
         $response = $this->get("/member/{$member->id}");
 
         $this->assertInertiaHas([
             'region' => ['name' => '-- kein --'],
             'nationality' => ['name' => '-- kein --'],
-            'gender_name' => 'keine Angabe',
+            'fullname' => 'Max Muster',
             'nationality' => [
                 'name' => 'deutsch',
             ],