Tipi

Attivita e AttivitaView

Tipi principali per le attività — tabella fisica e vista denormalizzata.

Attivita

Mappa 1:1 la tabella attivita.attivita.

interface Attivita {
  idattivita: number
  idtipoattivita: number
  entitasorgente: string
  identitasorgente: number
  riepilogo: string          // max 125 caratteri
  nota: string
  datascadenza: string       // YYYY-MM-DD
  orarioinizio: string | null  // ISO 8601 timestamp
  orariofine: string | null
  tuttoilgiorno: boolean
  idutente: number           // assegnatario principale
  stato: 'pianificata' | 'completata' | 'annullata'
  datacompletamento: string | null
  risultato: string
  idevento: number | null    // collegamento calendario — senza FK
  iddocumento: number | null
  idattivitapadre: number | null  // concatenamento padre
  priorita: 1 | 2 | 3 | 4   // 1=Bassa, 2=Media, 3=Alta, 4=Critica
  datacreazione: string
  datamodifica: string
}

AttivitaView

Estende Attivita con i dati della vista v_attivita — join con tipo, campi calcolati e aggregati JSONB.

interface AttivitaView extends Attivita {
  // Tipo attività (join con tipoattivita)
  nometipo: string
  codtipoattivita: CodTipoAttivita
  icona: string        // classe PrimeFont, es. 'pi-phone'
  colore: string       // nome Tailwind, es. 'blue'
  azione: string

  // Utente assegnatario principale
  nomecompletoutente: string

  // Aggregati JSONB
  assegnatari: AssegnatarioInfo[]
  partecipanti: PartecipanteInfo[]

  // Ricorrenza
  idricorrenza: number | null

  // Campi calcolati dalla vista
  statovisivo: 'success' | 'warning' | 'danger' | 'secondary'
  giorni_a_scadenza: number  // negativo se scaduta
  scaduta: boolean
}

StatoVisivo

ValoreCondizioneColore tipico
successstato === 'completata'Verde
dangerscaduta === trueRosso
warningScadenza entro 3 giorniArancione
secondarystato === 'annullata'Grigio

Contatori aggregati per un'entità specifica — dalla vista v_attivita_riepilogo.

interface AttivitaRiepilogo {
  entitasorgente: string
  identitasorgente: number
  in_ritardo: number
  oggi: number
  futuro: number
  completate: number
}

Usato da AttivitaBadge per il rendering dei badge.

TipoAttivita

interface TipoAttivita {
  idtipoattivita: number
  nome: string
  codtipoattivita: CodTipoAttivita
  descrizione: string | null
  icona: string        // classe PrimeFont, es. 'pi-phone'
  colore: string       // nome colore Tailwind, es. 'blue'
  azione: string       // 'telefonata' | 'email' | 'riunione' | 'upload_documento' | 'richiesta_firma' | ...
  cartella: string | null              // raggruppamento per la lista admin
  idutentepredefinito: number | null
  nomeutentepredefinito: string | null // join read-only via get_user_display
  riepilogopredefinito: string | null
  notapredefinita: string | null
  mantienicompletate: boolean
  ordinamento: number
  attivo: boolean
  concatenamenti: Concatenamento[]
}

CodTipoAttivita

type CodTipoAttivita =
  | 'dafare'
  | 'email'
  | 'telefonata'
  | 'riunione'
  | 'documento'
  | 'firma'
  | 'approvazione'
  | string  // tipi personalizzati definiti via admin