Add group stats
This commit is contained in:
parent
6e8d169f54
commit
9115da8f77
app
database/migrations
resources/js/views/home
|
@ -11,7 +11,7 @@ class Activity extends Model
|
||||||
|
|
||||||
use HasNamiField;
|
use HasNamiField;
|
||||||
|
|
||||||
public $fillable = ['name', 'is_filterable', 'nami_id'];
|
public $fillable = ['is_member', 'name', 'is_filterable', 'nami_id'];
|
||||||
public $timestamps = false;
|
public $timestamps = false;
|
||||||
|
|
||||||
public $casts = [
|
public $casts = [
|
||||||
|
|
|
@ -2,26 +2,35 @@
|
||||||
|
|
||||||
namespace App\Http\Views;
|
namespace App\Http\Views;
|
||||||
|
|
||||||
use App\Member\MemberResource;
|
|
||||||
use App\Member\Member;
|
use App\Member\Member;
|
||||||
use Illuminate\Http\Request;
|
use App\Member\MemberResource;
|
||||||
|
use App\Payment\Payment;
|
||||||
|
use App\Payment\PaymentResource;
|
||||||
use App\Payment\Status;
|
use App\Payment\Status;
|
||||||
use App\Payment\Subscription;
|
use App\Payment\Subscription;
|
||||||
use App\Payment\PaymentResource;
|
use Illuminate\Http\Request;
|
||||||
use App\Payment\Payment;
|
|
||||||
|
|
||||||
class HomeView {
|
class HomeView {
|
||||||
public function index(Request $request) {
|
public function index(Request $request) {
|
||||||
$amount = Payment::whereNeedsPayment()->selectRaw('sum(subscriptions.amount) AS a')->join('subscriptions', 'subscriptions.id', 'payments.subscription_id')->first()->a;
|
$amount = Payment::whereNeedsPayment()->selectRaw('sum(subscriptions.amount) AS a')->join('subscriptions', 'subscriptions.id', 'payments.subscription_id')->first()->a;
|
||||||
$members = Member::whereHasPendingPayment()->count();
|
$members = Member::whereHasPendingPayment()->count();
|
||||||
|
|
||||||
|
|
||||||
return [
|
return [
|
||||||
'data' => [
|
'data' => [
|
||||||
'payments' => [
|
'payments' => [
|
||||||
'users' => $members,
|
'users' => $members,
|
||||||
'all_users' => Member::count(),
|
'all_users' => Member::count(),
|
||||||
'amount' => number_format($amount / 100, 2, ',', '.').' €'
|
'amount' => number_format($amount / 100, 2, ',', '.').' €'
|
||||||
]
|
],
|
||||||
|
'groups' => Member::select('subactivities.slug', 'subactivities.name')->selectRaw('COUNT(members.id) AS count')->join('memberships', 'memberships.member_id', 'members.id')
|
||||||
|
->join('activities', 'memberships.activity_id', 'activities.id')
|
||||||
|
->join('subactivities', 'memberships.subactivity_id', 'subactivities.id')
|
||||||
|
->where('subactivities.is_age_group', true)
|
||||||
|
->where('activities.is_member', true)
|
||||||
|
->groupBy('subactivities.name', 'subactivities.slug')
|
||||||
|
->orderBy('subactivities.id')
|
||||||
|
->get()
|
||||||
]
|
]
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,34 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
use App\Activity;
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
class CreateActivitiesIsMemberColumn extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function up()
|
||||||
|
{
|
||||||
|
Schema::table('activities', function (Blueprint $table) {
|
||||||
|
$table->boolean('is_member')->default(false);
|
||||||
|
});
|
||||||
|
Activity::whereIn('name', ['€ Mitglied', 'Schnuppermitgliedschaft'])->update(['is_member' => true]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function down()
|
||||||
|
{
|
||||||
|
Schema::table('activities', function (Blueprint $table) {
|
||||||
|
$table->dropColumn('is_member');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
|
@ -6,6 +6,13 @@
|
||||||
<span class="text-sm" v-text="`von ${data.payments.users} / ${data.payments.all_users} Mitgliedern`"></span>
|
<span class="text-sm" v-text="`von ${data.payments.users} / ${data.payments.all_users} Mitgliedern`"></span>
|
||||||
</div>
|
</div>
|
||||||
</block>
|
</block>
|
||||||
|
<block title="Gruppierungs-Verteilung">
|
||||||
|
<div v-for="group in data.groups" class="flex mt-2 items-center leading-none text-gray-100">
|
||||||
|
<sprite class="w-4 h-4 mr-2" src="lilie" :class="`text-${group.slug}`"></sprite>
|
||||||
|
<span v-text="group.name" class="flex-grow"></span>
|
||||||
|
<span v-text="group.count"></span>
|
||||||
|
</div>
|
||||||
|
</block>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue