<?php

namespace App\Efz;

use App\Dashboard\Blocks\Block;
use App\Member\Member;
use Illuminate\Database\Eloquent\Builder;

class EfzPendingBlock extends Block
{
    /**
     * @return Builder<Member>
     */
    public function query(): Builder
    {
        return Member::where(function ($query) {
            return $query->where('efz', '<=', now()->subYears(5)->endOfYear())
                ->orWhereNull('efz');
        })
            ->whereCurrentGroup()
            ->orderByRaw('lastname, firstname')
            ->whereHas('memberships', fn ($builder) => $builder->isLeader()->active());
    }

    /**
     * @return array{members: array<int, string>}
     */
    public function data(): array
    {
        return [
            'members' => $this->query()->get()->map(fn ($member) => $member->fullname)->toArray(),
        ];
    }

    public function component(): string
    {
        return 'efz-pending';
    }

    public function title(): string
    {
        return 'Ausstehende Führungszeugnisse';
    }
}