remove member view
continuous-integration/drone/push Build is failing Details

This commit is contained in:
philipp lang 2023-05-02 23:49:16 +02:00
parent 55ef4efe50
commit 3c64dee689
5 changed files with 59 additions and 115 deletions

View File

@ -1,43 +0,0 @@
<?php
namespace App\Http\Views;
use App\Activity;
use App\Course\Models\Course;
use App\Member\FilterScope;
use App\Member\Member;
use App\Member\MemberResource;
use App\Payment\Status;
use App\Payment\Subscription;
use App\Region;
use App\Subactivity;
use Illuminate\Http\Request;
class MemberView
{
public function index(Request $request): array
{
$activities = Activity::with('subactivities')->get();
$filter = FilterScope::fromRequest($request->input('filter', ''));
return [
'data' => MemberResource::collection(Member::search($filter->search)->query(fn ($q) => $q->select('*')
->withFilter($filter)
->with('payments.subscription')->with(['memberships' => fn ($query) => $query->active()])->with('courses')->with('subscription')->with('leaderMemberships')->with('ageGroupMemberships')
->withPendingPayment()
->ordered()
)->paginate(15)),
'filterActivities' => Activity::where('is_filterable', true)->pluck('name', 'id'),
'filterSubactivities' => Subactivity::where('is_filterable', true)->pluck('name', 'id'),
'paymentDefaults' => ['nr' => date('Y')],
'subscriptions' => Subscription::pluck('name', 'id'),
'statuses' => Status::pluck('name', 'id'),
'regions' => Region::forSelect(),
'activities' => $activities->pluck('name', 'id'),
'courses' => Course::pluck('name', 'id'),
'subactivities' => $activities->map(function (Activity $activity) {
return ['subactivities' => $activity->subactivities->pluck('name', 'id'), 'id' => $activity->id];
})->pluck('subactivities', 'id'),
];
}
}

View File

@ -2,16 +2,8 @@
namespace App\Member;
use App\Activity;
use App\Confession;
use App\Country;
use App\Gender;
use App\Http\Controllers\Controller;
use App\Http\Views\MemberView;
use App\Invoice\BillKind;
use App\Nationality;
use App\Payment\Subscription;
use App\Region;
use App\Setting\GeneralSettings;
use App\Setting\NamiSettings;
use Illuminate\Http\RedirectResponse;
@ -25,11 +17,16 @@ class MemberController extends Controller
{
session()->put('menu', 'member');
session()->put('title', 'Mitglieder');
$filter = FilterScope::fromRequest($request->input('filter', ''));
$payload = app(MemberView::class)->index($request);
$payload['billKinds'] = BillKind::forSelect();
return \Inertia::render('member/VIndex', $payload);
return \Inertia::render('member/VIndex', [
'data' => MemberResource::collection(Member::search($filter->search)->query(fn ($q) => $q->select('*')
->withFilter($filter)
->with('payments.subscription')->with(['memberships' => fn ($query) => $query->active()])->with('courses')->with('subscription')->with('leaderMemberships')->with('ageGroupMemberships')
->withPendingPayment()
->ordered()
)->paginate(15)),
]);
}
public function create(): Response
@ -37,20 +34,7 @@ class MemberController extends Controller
session()->put('menu', 'member');
session()->put('title', 'Mitglied erstellen');
$activities = Activity::remote()->with(['subactivities' => fn ($q) => $q->remote()])->get();
return \Inertia::render('member/VForm', [
'activities' => $activities->pluck('name', 'id'),
'subactivities' => $activities->map(function (Activity $activity) {
return ['subactivities' => $activity->subactivities()->pluck('name', 'id'), 'id' => $activity->id];
})->pluck('subactivities', 'id'),
'billKinds' => BillKind::forSelect(),
'genders' => Gender::pluck('name', 'id'),
'countries' => Country::pluck('name', 'id'),
'regions' => Region::where('is_null', false)->pluck('name', 'id'),
'nationalities' => Nationality::pluck('name', 'id'),
'confessions' => Confession::where('is_null', false)->pluck('name', 'id'),
'subscriptions' => Subscription::pluck('name', 'id'),
'data' => [
'country_id' => Country::default(),
'efz' => null,
@ -76,20 +60,7 @@ class MemberController extends Controller
session()->put('menu', 'member');
session()->put('title', "Mitglied {$member->firstname} {$member->lastname} bearbeiten");
$activities = Activity::remote()->with(['subactivities' => fn ($q) => $q->remote()])->get();
return \Inertia::render('member/VForm', [
'activities' => $activities->pluck('name', 'id'),
'subactivities' => $activities->map(function ($activity) {
return ['subactivities' => $activity->subactivities->pluck('name', 'id'), 'id' => $activity->id];
})->pluck('subactivities', 'id'),
'billKinds' => BillKind::forSelect(),
'genders' => Gender::pluck('name', 'id'),
'countries' => Country::pluck('name', 'id'),
'regions' => Region::where('is_null', false)->pluck('name', 'id'),
'nationalities' => Nationality::pluck('name', 'id'),
'confessions' => Confession::where('is_null', false)->pluck('name', 'id'),
'subscriptions' => Subscription::select('name', 'id')->get(),
'data' => new MemberResource($member),
'mode' => 'edit',
'conflict' => '1' === $request->query('conflict', '0'),

View File

@ -2,14 +2,24 @@
namespace App\Member;
use App\Activity;
use App\Country;
use App\Course\Models\Course;
use App\Course\Resources\CourseMemberResource;
use App\Gender;
use App\Invoice\BillKind;
use App\Lib\HasMeta;
use App\Member\Data\NestedGroup;
use App\Member\Resources\NationalityResource;
use App\Member\Resources\RegionResource;
use App\Membership\MembershipResource;
use App\Nationality;
use App\Payment\PaymentResource;
use App\Payment\Status;
use App\Payment\Subscription;
use App\Payment\SubscriptionResource;
use App\Region;
use App\Subactivity;
use Illuminate\Http\Resources\Json\JsonResource;
/**
@ -103,9 +113,25 @@ class MemberResource extends JsonResource
*/
public static function meta(): array
{
$activities = Activity::remote()->with(['subactivities' => fn ($q) => $q->remote()])->get();
return [
'filterActivities' => Activity::where('is_filterable', true)->pluck('name', 'id'),
'filterSubactivities' => Subactivity::where('is_filterable', true)->pluck('name', 'id'),
'formActivities' => $activities->pluck('name', 'id'),
'formSubactivities' => $activities->map(function (Activity $activity) {
return ['subactivities' => $activity->subactivities()->pluck('name', 'id'), 'id' => $activity->id];
})->pluck('subactivities', 'id'),
'groups' => NestedGroup::cacheForSelect(),
'filter' => FilterScope::fromRequest(request()->input('filter', '')),
'courses' => Course::pluck('name', 'id'),
'regions' => Region::forSelect(),
'statuses' => Status::pluck('name', 'id'),
'subscriptions' => Subscription::pluck('name', 'id'),
'countries' => Country::pluck('name', 'id'),
'genders' => Gender::pluck('name', 'id'),
'billKinds' => BillKind::forSelect(),
'nationalities' => Nationality::pluck('name', 'id'),
'links' => [
'index' => route('member.index'),
'create' => route('member.create'),

View File

@ -21,10 +21,10 @@
<box heading="Stammdaten">
<div class="grid sm:grid-cols-2 gap-3">
<div class="grid grid-cols-2 gap-3">
<f-select id="gender_id" name="gender_id" :options="genders" v-model="inner.gender_id" label="Geschlecht" size="sm"></f-select>
<f-select id="gender_id" name="gender_id" :options="meta.genders" v-model="inner.gender_id" label="Geschlecht" size="sm"></f-select>
<f-text id="salutation" v-model="inner.salutation" size="sm" label="Anrede"></f-text>
</div>
<f-select :options="nationalities" id="nationality_id" v-model="inner.nationality_id" label="Staatsangehörigkeit" name="nationality_id" size="sm" required></f-select>
<f-select :options="meta.nationalities" id="nationality_id" v-model="inner.nationality_id" label="Staatsangehörigkeit" name="nationality_id" size="sm" required></f-select>
<f-text id="firstname" v-model="inner.firstname" size="sm" label="Vorname" required></f-text>
<f-text id="lastname" v-model="inner.lastname" size="sm" label="Nachname" required></f-text>
<f-text id="address" v-model="inner.address" size="sm" label="Adresse" required></f-text>
@ -32,8 +32,8 @@
<f-text id="zip" v-model="inner.zip" size="sm" label="PLZ" required></f-text>
<f-text id="location" v-model="inner.location" size="sm" label="Ort" required></f-text>
<f-text type="date" id="birthday" v-model="inner.birthday" size="sm" label="Geburtsdatum" required></f-text>
<f-select :options="regions" name="region_id" id="region_id" v-model="inner.region_id" label="Bundesland" size="sm"></f-select>
<f-select :options="countries" id="country_id" v-model="inner.country_id" label="Land" name="country_id" size="sm" required></f-select>
<f-select :options="meta.regions" name="region_id" id="region_id" v-model="inner.region_id" label="Bundesland" size="sm"></f-select>
<f-select :options="meta.countries" id="country_id" v-model="inner.country_id" label="Land" name="country_id" size="sm" required></f-select>
<f-text id="other_country" v-model="inner.other_country" label="Andere Staatsangehörigkeit" size="sm"></f-text>
</div>
</box>
@ -51,17 +51,25 @@
</box>
<box heading="System">
<div class="grid gap-3">
<f-select :options="billKinds" id="bill_kind" v-model="inner.bill_kind" label="Rechnung versenden über" name="bill_kind" size="sm"></f-select>
<f-select :options="subscriptions" id="subscription_id" v-model="inner.subscription_id" label="Beitrag" name="subscription_id" size="sm"></f-select>
<f-select :options="meta.billKinds" id="bill_kind" v-model="inner.bill_kind" label="Rechnung versenden über" name="bill_kind" size="sm"></f-select>
<f-select :options="meta.subscriptions" id="subscription_id" v-model="inner.subscription_id" label="Beitrag" name="subscription_id" size="sm"></f-select>
<f-switch id="has_nami" size="sm" v-model="inner.has_nami" label="In Nami eintragen"></f-switch>
<f-switch id="send_newspaper" v-model="inner.send_newspaper" label="Mittendrin versenden" size="sm"></f-switch>
<f-text class="sm:col-span-2" type="date" id="joined_at" v-model="inner.joined_at" label="Eintrittsdatum" size="sm"></f-text>
<f-textarea rows="3" id="comment" class="col-span-2" v-model="inner.comment" label="Kommentar" size="sm"></f-textarea>
<div class="contents" v-if="mode === 'create'">
<f-select :options="activities" id="first_activity_id" v-model="inner.first_activity_id" label="Erste Tätigkeit" name="first_activity_id" size="sm" required></f-select>
<f-select
:options="meta.formActivities"
id="first_activity_id"
v-model="inner.first_activity_id"
label="Erste Tätigkeit"
name="first_activity_id"
size="sm"
required
></f-select>
<f-select
v-if="inner.first_activity_id"
:options="subactivities[inner.first_activity_id]"
:options="meta.formSubactivities[inner.first_activity_id]"
id="first_subactivity_id"
v-model="inner.first_subactivity_id"
label="Erste Untertätigkeit"
@ -130,17 +138,8 @@ export default {
},
props: {
subactivities: {},
activities: {},
mode: {},
genders: {},
subscriptions: {},
data: {},
regions: {},
countries: {},
nationalities: {},
confessions: {},
billKinds: {},
conflict: {},
meta: {},
},

View File

@ -14,7 +14,7 @@
name="billKinds"
id="billKinds"
@input="setFilter('bill_kind', $event)"
:options="billKinds"
:options="data.meta.billKinds"
:value="getFilter('bill_kind')"
label="Rechnung"
size="sm"
@ -22,7 +22,7 @@
<f-select
id="activity_id"
@input="setFilter('activity_id', $event)"
:options="filterActivities"
:options="data.meta.filterActivities"
:value="getFilter('activity_id')"
label="Tätigkeit"
size="sm"
@ -31,7 +31,7 @@
<f-select
id="subactivity_id"
@input="setFilter('subactivity_id', $event)"
:options="filterSubactivities"
:options="data.meta.filterSubactivities"
:value="getFilter('subactivity_id')"
label="Untertätigkeit"
size="sm"
@ -100,19 +100,19 @@
<member-payments
v-if="single !== null && sidebar === 'payment.index'"
@close="closeSidebar"
:subscriptions="subscriptions"
:statuses="statuses"
:subscriptions="data.meta.subscriptions"
:statuses="data.meta.statuses"
:value="data.data[single]"
></member-payments>
<member-memberships
v-if="single !== null && sidebar === 'membership.index'"
@close="closeSidebar"
:groups="data.meta.groups"
:activities="activities"
:subactivities="subactivities"
:activities="data.meta.formActivities"
:subactivities="data.meta.formSubactivities"
:value="data.data[single]"
></member-memberships>
<member-courses v-if="single !== null && sidebar === 'courses.index'" @close="closeSidebar" :courses="courses" :value="data.data[single]"></member-courses>
<member-courses v-if="single !== null && sidebar === 'courses.index'" @close="closeSidebar" :courses="data.meta.courses" :value="data.data[single]"></member-courses>
</transition>
</page-layout>
</template>
@ -163,16 +163,7 @@ export default {
},
props: {
subscriptions: {},
statuses: {},
paymentDefaults: {},
query: {},
billKinds: {},
activities: {},
subactivities: {},
filterActivities: {},
filterSubactivities: {},
courses: {},
},
};
</script>