Compare commits

..

No commits in common. "ef70203c8a3d5232fe7aded143bbbfb20ca1496d" and "547c9edfd548b9d9ee02f081e5cab6b1b433392e" have entirely different histories.

6 changed files with 74 additions and 72 deletions

View File

@ -2,6 +2,7 @@
namespace App\Member;
use App\Country;
use App\Http\Controllers\Controller;
use App\Setting\NamiSettings;
use Illuminate\Http\RedirectResponse;
@ -32,7 +33,8 @@ class MemberController extends Controller
session()->put('menu', 'member');
session()->put('title', 'Mitglied erstellen');
return Inertia::render('member/VForm', [
return \Inertia::render('member/VForm', [
'data' => MemberResource::defaultModel(),
'mode' => 'create',
'meta' => MemberResource::meta(),
]);
@ -50,7 +52,7 @@ class MemberController extends Controller
session()->put('menu', 'member');
session()->put('title', "Mitglied {$member->firstname} {$member->lastname} bearbeiten");
return Inertia::render('member/VForm', [
return \Inertia::render('member/VForm', [
'data' => new MemberResource($member),
'mode' => 'edit',
'conflict' => '1' === $request->query('conflict', '0'),

View File

@ -162,47 +162,54 @@ class MemberResource extends JsonResource
'activity_ids' => [],
'subactivity_ids' => []
],
'default' => [
'gender_id' => null,
'salutation' => '',
'nationality_id' => null,
'firstname' => '',
'lastname' => '',
'address' => '',
'further_address' => '',
'zip' => '',
'location' => '',
'birthday' => '',
'region_id' => null,
'country_id' => Country::default(),
'other_country' => '',
'main_phone' => '',
'mobile_phone' => '',
'work_phone' => '',
'children_phone' => '',
'email' => '',
'email_parents' => '',
'fax' => '',
'letter_address' => '',
'bill_kind' => null,
'subscription_id' => null,
'has_nami' => false,
'send_newspaper' => false,
'joined_at' => now()->format('Y-m-d'),
'comment' => '',
'first_activity_id' => null,
'first_subactivity_id' => null,
'efz' => null,
'ps_at' => null,
'more_ps_at' => null,
'without_education_at' => null,
'recertified_at' => null,
'without_efz_at' => null,
'has_vk' => false,
'has_svk' => false,
'multiply_pv' => false,
'multiply_more_pv' => false,
]
];
}
/**
* @return array<string, mixed>
*/
public static function defaultModel(): array
{
return [
'gender_id' => null,
'salutation' => '',
'nationality_id' => null,
'firstname' => '',
'lastname' => '',
'address' => '',
'further_address' => '',
'zip' => '',
'location' => '',
'birthday' => '',
'region_id' => null,
'country_id' => Country::default(),
'other_country' => '',
'main_phone' => '',
'mobile_phone' => '',
'work_phone' => '',
'children_phone' => '',
'email' => '',
'email_parents' => '',
'fax' => '',
'letter_address' => '',
'bill_kind' => null,
'subscription_id' => null,
'has_nami' => false,
'send_newspaper' => false,
'joined_at' => now()->format('Y-m-d'),
'comment' => '',
'first_activity_id' => null,
'first_subactivity_id' => null,
'efz' => null,
'ps_at' => null,
'more_ps_at' => null,
'without_education_at' => null,
'recertified_at' => null,
'without_efz_at' => null,
'has_vk' => false,
'has_svk' => false,
'multiply_pv' => false,
'multiply_more_pv' => false,
];
}
}

View File

@ -1,9 +1,7 @@
<template>
<div class="fixed z-40 top-0 left-0 w-full h-full flex items-center justify-center p-6 bg-black/60 backdrop-blur-sm">
<div
class="relative rounded-lg p-8 bg-zinc-800 shadow-2xl shadow-black border border-zinc-700 border-solid w-full max-h-full flex flex-col overflow-auto"
:class="full ? 'h-full' : innerWidth"
>
<div class="fixed z-40 top-0 left-0 w-full h-full flex items-center justify-center p-6">
<div class="relative rounded-lg p-8 bg-zinc-800 shadow-2xl shadow-black border border-zinc-700 border-solid w-full max-h-full flex flex-col overflow-auto"
:class="full ? 'h-full' : innerWidth">
<div class="absolute top-0 right-0 mt-6 mr-6 flex space-x-6">
<slot name="actions"></slot>
<a href="#" @click.prevent="$emit('close')">

View File

@ -153,8 +153,8 @@ export default {
},
data: function () {
return {
original: this.mode === 'create' ? {...this.meta.default} : {...this.data},
inner: this.mode === 'create' ? {...this.meta.default} : {...this.data},
original: {...this.data},
inner: {...this.data},
active: 0,
};
},

View File

@ -2,6 +2,7 @@
<page-layout page-class="pb-6">
<template #toolbar>
<page-toolbar-button :href="meta.links.create" color="primary" icon="plus">Mitglied anlegen</page-toolbar-button>
<page-toolbar-button v-if="hasModule('bill')" :href="meta.links.allpayment" color="primary" icon="invoice">Rechnungen erstellen</page-toolbar-button>
</template>
<ui-popup v-if="deleting !== null" heading="Mitglied löschen?" @close="deleting.reject()">
<div>
@ -39,15 +40,7 @@
</ui-popup>
<page-filter breakpoint="xl">
<template #fields>
<f-switch
v-show="hasModule('bill')"
id="ausstand"
name="ausstand"
:model-value="getFilter('ausstand')"
label="Nur Ausstände"
size="sm"
@update:model-value="setFilter('ausstand', $event)"
></f-switch>
<f-switch v-show="hasModule('bill')" id="ausstand" :model-value="getFilter('ausstand')" label="Nur Ausstände" size="sm" @update:model-value="setFilter('ausstand', $event)"></f-switch>
<f-multipleselect
id="group_ids"
:options="meta.groups"

View File

@ -3,7 +3,6 @@
namespace Tests\EndToEnd;
use App\Activity;
use App\Country;
use App\Group;
use App\Invoice\BillKind;
use App\Invoice\Enums\InvoiceStatus;
@ -17,15 +16,9 @@ use Tests\EndToEndTestCase;
class MemberIndexTest extends EndToEndTestCase
{
public function setUp(): void
{
parent::setUp();
Country::factory()->create(['name' => 'Deutschland']);
$this->withoutExceptionHandling()->login()->loginNami();
}
public function testItHandlesFullTextSearch(): void
{
$this->withoutExceptionHandling()->login()->loginNami();
Member::factory()->defaults()->count(2)->create(['firstname' => 'Alexander']);
Member::factory()->defaults()->create(['firstname' => 'Heinrich']);
@ -36,13 +29,9 @@ class MemberIndexTest extends EndToEndTestCase
->assertInertiaCount('data.data', 1);
}
public function testItGetsDefaultCountryFromDefaultModel(): void
{
$this->callFilter('member.index', [])->assertInertiaPath('data.meta.default.country_id', Country::firstWhere('name', 'Deutschland')->id);
}
public function testItHandlesAddress(): void
{
$this->withoutExceptionHandling()->login()->loginNami();
Member::factory()->defaults()->create(['address' => '']);
Member::factory()->defaults()->create(['zip' => '']);
Member::factory()->defaults()->create(['location' => '']);
@ -63,6 +52,7 @@ class MemberIndexTest extends EndToEndTestCase
public function testItHandlesBirthday(): void
{
$this->withoutExceptionHandling()->login()->loginNami();
Member::factory()->defaults()->create(['birthday' => null]);
Member::factory()->defaults()->count(2)->create();
@ -75,6 +65,7 @@ class MemberIndexTest extends EndToEndTestCase
public function testItHandlesBillKind(): void
{
$this->withoutExceptionHandling()->login()->loginNami();
Member::factory()->defaults()->postBillKind()->create();
Member::factory()->defaults()->emailBillKind()->count(2)->create();
@ -89,6 +80,7 @@ class MemberIndexTest extends EndToEndTestCase
public function testItHandlesGroupIds(): void
{
$this->withoutExceptionHandling()->login()->loginNami();
$group = Group::factory()->create();
$otherGroup = Group::factory()->create();
$thirdGroup = Group::factory()->create();
@ -109,6 +101,7 @@ class MemberIndexTest extends EndToEndTestCase
public function testItHandlesActivitiesAndSubactivities(): void
{
$this->withoutExceptionHandling()->login()->loginNami();
$mitglied = Activity::factory()->name('€ Mitglied')->create();
$schnuppermitglied = Activity::factory()->name('Schnuppermitgliedschaft')->create();
$woelfling = Subactivity::factory()->name('Wölfling')->create();
@ -134,6 +127,7 @@ class MemberIndexTest extends EndToEndTestCase
public function testItHandlesActivityAndSubactivityForSingleMembership(): void
{
$this->withoutExceptionHandling()->login()->loginNami();
$mitglied = Activity::factory()->name('€ Mitglied')->create();
$schnuppermitglied = Activity::factory()->name('Schnuppermitgliedschaft')->create();
$woelfling = Subactivity::factory()->name('Wölfling')->create();
@ -150,6 +144,7 @@ class MemberIndexTest extends EndToEndTestCase
public function testItIgnoresInactiveMemberships(): void
{
$this->withoutExceptionHandling()->login()->loginNami();
$mitglied = Activity::factory()->name('€ Mitglied')->create();
$woelfling = Subactivity::factory()->name('Wölfling')->create();
Member::factory()->defaults()->has(Membership::factory()->for($mitglied)->for($woelfling)->ended())->create();
@ -163,6 +158,7 @@ class MemberIndexTest extends EndToEndTestCase
public function testItListensForMembershipDeletion(): void
{
$this->withoutExceptionHandling()->login()->loginNami();
$mitglied = Activity::factory()->name('€ Mitglied')->create();
$member = Member::factory()->defaults()->has(Membership::factory()->for($mitglied))->create();
$member->memberships->first()->delete();
@ -175,6 +171,7 @@ class MemberIndexTest extends EndToEndTestCase
public function testItFiltersForMemberships(): void
{
$this->withoutExceptionHandling()->login()->loginNami();
$mitglied = Activity::factory()->create();
$woelfling = Subactivity::factory()->create();
$juffi = Subactivity::factory()->create();
@ -204,6 +201,7 @@ class MemberIndexTest extends EndToEndTestCase
public function testGroupOfMembershipsFilterCanBeEmpty(): void
{
$this->withoutExceptionHandling()->login()->loginNami();
$mitglied = Activity::factory()->create();
$woelfling = Subactivity::factory()->create();
$group = Group::factory()->create();
@ -223,6 +221,7 @@ class MemberIndexTest extends EndToEndTestCase
public function testItFiltersForSearchButNotForPayments(): void
{
$this->withoutExceptionHandling()->login()->loginNami();
Member::factory()->defaults()
->has(InvoicePosition::factory()->for(Invoice::factory()))
->create(['firstname' => 'firstname']);
@ -235,6 +234,7 @@ class MemberIndexTest extends EndToEndTestCase
public function testItIgnoresPaidInvoices(): void
{
$this->withoutExceptionHandling()->login()->loginNami();
Member::factory()->defaults()
->has(InvoicePosition::factory()->for(Invoice::factory()->status(InvoiceStatus::PAID)))
->create();
@ -247,6 +247,7 @@ class MemberIndexTest extends EndToEndTestCase
public function testItIncludesMembers(): void
{
$this->withoutExceptionHandling()->login()->loginNami();
$member = Member::factory()->defaults()->create(['birthday' => null, 'location' => '']);
sleep(1);
@ -258,6 +259,7 @@ class MemberIndexTest extends EndToEndTestCase
public function testItExcludesMembers(): void
{
$this->withoutExceptionHandling()->login()->loginNami();
$member = Member::factory()->defaults()->create(['birthday' => null]);
sleep(1);