Files
E-Vote/app/Http/Controllers/API/v1/Voter/AllMembersCatalogController.php
T
ISMAIL MASSERAN 3775c4a876 Allowance check
2026-04-14 02:34:00 +00:00

54 lines
1.5 KiB
PHP

<?php
namespace App\Http\Controllers\API\v1\Voter;
use App\Http\Controllers\Controller;
use App\Http\Controllers\Util;
use App\Voter;
use Illuminate\Support\Facades\DB;
/**
* Lists every distinct member (by no_kp) found anywhere in voter,
* for picking who is applicable to the current election.
*/
class AllMembersCatalogController extends Controller
{
public function __invoke()
{
$electionId = Util::getCurrentElection();
$maxIds = DB::table('voter')
->select(DB::raw('MAX(id) as id'))
->whereNotNull('no_kp')
->where('no_kp', '!=', '')
->groupBy('no_kp')
->pluck('id');
$rows = Voter::whereIn('id', $maxIds)
->orderBy('name')
->get(['no_kp', 'no_anggota', 'name', 'unit']);
$inCurrent = Voter::where('election_id', $electionId)
->pluck('no_kp')
->filter(function ($kp) {
return $kp !== null && $kp !== '';
})
->flip();
$catalog = $rows->map(function ($row) use ($inCurrent) {
return [
'no_kp' => $row->no_kp,
'no_anggota' => $row->no_anggota,
'name' => $row->name,
'unit' => $row->unit,
'in_current_election' => $inCurrent->has($row->no_kp),
];
});
return response()->json([
'election_id' => $electionId,
'catalog' => $catalog->values()->all(),
]);
}
}