Apre il sondaggio pre-partita alle 8:00 con avviso push manuale.

Il sondaggio cacche era votabile in qualsiasi momento, anche settimane
prima della partita. Ora `sondaggioAperto()` lo sblocca alle 8:00 del
giorno della partita e prima la card mostra solo l'avviso di apertura.

Aggiunge la route `POST /api/public/apri-sondaggio` e, per gli
amministratori, il pulsante «Avvisa tutti del sondaggio» nella card:
manda la push a tutti i dispositivi iscritti, con lo stesso meccanismo
del sollecito presenze. Nessun invio automatico.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-06 00:08:58 +02:00
co-authored by Claude Opus 5
parent a7d0f5af5b
commit 73902cc0a4
10 changed files with 173 additions and 7 deletions
+11
View File
@@ -1,5 +1,16 @@
import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
import { supabase } from "@/integrations/supabase/client";
import { oggiISO } from "./palloni-core";
/** Ora di apertura del sondaggio, il giorno stesso della partita. */
export const ORA_APERTURA_SONDAGGIO = 8;
/** Il sondaggio apre alle 8:00 del giorno della partita e da lì resta aperto. */
export function sondaggioAperto(dataEvento: string, adesso = new Date()): boolean {
const oggi = oggiISO(adesso);
if (dataEvento !== oggi) return dataEvento < oggi;
return adesso.getHours() >= ORA_APERTURA_SONDAGGIO;
}
/** Sondaggio goliardico pre-partita: quante cacche prima del match di campionato. */
export type RigaCacche = {
+1 -2
View File
@@ -84,8 +84,7 @@ export function eventoSuccessivo(eventi: Evento[], eventoId: string): Evento | u
return i >= 0 ? lista[i + 1] : undefined;
}
export function oggiISO(): string {
const d = new Date();
export function oggiISO(d = new Date()): string {
const mm = String(d.getMonth() + 1).padStart(2, "0");
const dd = String(d.getDate()).padStart(2, "0");
return `${d.getFullYear()}-${mm}-${dd}`;