37 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
| <?php
 | |
| 
 | |
| namespace App\Http\Views;
 | |
| 
 | |
| use App\Member\Member;
 | |
| use App\Payment\Payment;
 | |
| use Illuminate\Http\Request;
 | |
| 
 | |
| class HomeView
 | |
| {
 | |
|     public function index(Request $request): array
 | |
|     {
 | |
|         /** @var object{a: string} */
 | |
|         $amount = Payment::whereNeedsPayment()->selectRaw('sum(subscriptions.amount) AS a')->join('subscriptions', 'subscriptions.id', 'payments.subscription_id')->first();
 | |
|         $members = Member::whereHasPendingPayment()->count();
 | |
| 
 | |
|         return [
 | |
|             'data' => [
 | |
|                 'payments' => [
 | |
|                     'users' => $members,
 | |
|                     'all_users' => Member::count(),
 | |
|                     'amount' => number_format($amount->a / 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(),
 | |
|                 'ending_tries' => MemberTriesResource::collection(Member::endingTries()->get()),
 | |
|             ],
 | |
|         ];
 | |
|     }
 | |
| }
 |