Workspace / Phase 2

Campaigns & people

Create candidate campaign spaces, attach existing user accounts with clear roles, and assign agents to polling stations.

Campaign access uses a shared election database.
Accounts must exist before they can join a campaign.
@if(session('success'))
{{ session('success') }}
@endif
@foreach(['campaigns' => 'Campaigns', 'candidates' => 'Candidates', 'parties' => 'Political parties', 'team' => 'Team & assignments'] as $key => $label) @endforeach

{{ ['campaigns' => 'Campaign tenants', 'candidates' => 'Central candidate register', 'parties' => 'Political party register', 'team' => 'Agent station assignments'][$tab] }}

{{ ['campaigns' => 'Each campaign is the tenant for one monitored candidate.', 'candidates' => 'Candidate records are election-wide and can be linked to one campaign.', 'parties' => 'Party records are shared by every campaign.', 'team' => 'Add users to campaign teams, then assign agent accounts to stations.'][$tab] }}

@if($tab === 'campaigns')@endif @if($tab === 'candidates')@endif @if($tab === 'parties')@endif @if($tab === 'team')@endif
{{ number_format($items->total()) }} records
@if($tab === 'campaigns') @elseif($tab === 'candidates') @elseif($tab === 'parties') @else@endif @forelse($items as $item) @if($tab === 'campaigns') @elseif($tab === 'candidates') @elseif($tab === 'parties') @else@endif @empty@endforelse
CampaignCandidate / contestTeamStationsCandidateContestElectionPartyPartyAbbreviationCandidatesStatusAgentCampaignPolling stationStatus
{{ $item->name }}
{{ $item->slug }}
{{ $item->candidate->name }}
{{ $item->candidate->position->name }} · {{ $item->candidate->election->year }} · {{ $item->candidate->party?->abbreviation ?? ($item->candidate->is_independent ? 'Independent' : 'Party pending') }}
{{ $item->members_count }}{{ $item->assignments_count }}
{{ $item->name }}
@if($item->ballot_number)
Ballot {{ $item->ballot_number }}
@endif
{{ $item->position->name }}
{{ $item->ward?->name ?? $item->constituency?->name ?? $item->county?->name ?? 'National' }}
{{ $item->election->name }}{{ $item->party?->abbreviation ?? ($item->is_independent ? 'Independent' : '—') }}
{{ $item->name }}{{ $item->abbreviation ?: '—' }}{{ $item->candidates_count }}{{ $item->status }}
{{ $item->user->name }}
{{ $item->user->email }}
{{ $item->campaign->name }}
{{ $item->pollingStation->name }}
{{ $item->pollingStation->code }}
{{ $item->status }}
Nothing here yet

Use the action above to add the first record.

{{ $items->links() }}
@if($modal)

{{ ['party' => 'Add political party', 'candidate' => 'Register candidate', 'campaign' => 'Create campaign tenant', 'member' => 'Add campaign team member', 'assignment' => 'Assign polling station'][$modal] }}

{{ $modal === 'member' || $modal === 'assignment' ? 'Choose from existing user accounts.' : 'Enter the official details for this record.' }}

@if($modal === 'party')
@elseif($modal === 'candidate')
@php($contestLevel = $positions->firstWhere('id', $candidatePositionId)?->level) @if(in_array($contestLevel, ['county','constituency','ward']))@endif @if(in_array($contestLevel, ['constituency','ward']))@endif @if($contestLevel === 'ward')@endif @unless($candidateIndependent)@endunless @elseif($modal === 'campaign')
@elseif($modal === 'member')
@else
@endif
@endif