Creare una notifica dagli script

 

Dalle ultime versione del sistema è possibile creare e programmare delle notifiche direttamente via script. Queste notifiche non sono collegate direttamente alle schede dei dati ma direttamente al programma.

Come tutte le notifiche di Nios4, se vengono create su un database locale queste saranno attiviabili solo se il programma in quel momento è attivo. In caso il database sia cloud saranno visualizzate come notifiche sui telefoni senza che il programma deve necessariamente essere attivo.

Creazione dell'oggetto notification

notification     = program.newnotification()

notification.adduser("help@d-one.info")

notification.title = "notifica"

notification.description = "notifica di prova"

Come prima cosa creaiamo l'oggetto notification dal programma. Creato l'oggetto aggiungiamo l'utente o gli utenti che dovranno visualizzare questa notifica. Gli utenti dovranno necessariamente essere quelli che possono condividere il database attuale.

Inseriamo il titolo e la descrizione che visualizzeremo nella notifica.

Tipologia della notifica

notification.actionallert()

Attualmente le notifiche sono di due tipologia. La prima è la visualizzazione di un allert semplice impostabile dando il comando actionallert. La seconda è l'abertura di una scheda dati. In questo caso oltre al comando dovremo dare la tabella e il gguid per identificare in modo univoco il record.

notification.actionopendataview(*nometabella*,*gguidrecord*)

 Impostiamo la data della notifica

notification.datereminder = dataview.getvalue("data_scadenza")

notification.typebefore = 1

notification.save()

A questo punto possiamo impostare la data di visualizzazione della notifica.

La proprietà datareminder imposta la data effettiva della visualizzazione.

La proprietà typebefore imposta di quanto dovrà essere l'anticipo di visualizzazione rispetto al tempo impostato. In questo caso il valore 1 indica 5 minuti prima.

Come ultima cosa procederemo al salvataggio. Salvata la notifica questa sarà attiva. Sui database cloud occorrerà sincronizzare i dati per distribuirla su tutti i propri dispositivi.

A questo punto sarebbe buona norma recuperare il gguid della notifica per poterla successivamente gestire. Ad esempio per cancellarla dovremmo agire direttamente sul database con una chiamata sql. Per modificare una notifica già esistente dobbiamo creare l'oggetto e impostare il gguid salvato precedentemente. Occorrerà comunque reimpostare tutti i valori di questa, con l'unica differenza che in salvataggio non verrà creata una nuova notifica ma verrà aggiornata quella con lo stesso gguid.

gnotifica = notification.gguid

database.deletedatarowsql("SELECT * FROM so_notifications WHERE gguid='" .. gnotifica .. "'")

In questo esempio procediamo a eliminare la notifica precedentemente creata.

Esempi di impostazione della data da applicare alla notifica

I passaggi da eseguire per la costruzione delle date principalmente servono per creare dei valori compatibili con il sistema degli script che accettano la data solo in formato timestamp.

datainiziale = dataview.getvalue("data_ordine")
datafinale   = utility.dateadddays(datainiziale,30)

giornofinale = utility.dateday(datafinale)
mesefinale   = utility.datemonth(datafinale)

--salto il natale
if giornofinale == 25 and mesefinale == 12 then
   datafinale = utility.dateadddays(datafinale,10)
end

--controllo che non sia domenica
if utility.datedayofweek(datafinale) == 0 then
   datafinale = utility.dateadddays(datafinale,1)
end

notification.datereminder = datafinale

In questo esempio calcoliamo il valore dalla data di creazione dell'ordine. Preso il valore aggiungiamo 30 giorni e vediamo dove cade la nuova data. Controlliamo poi che non cada a natale e che non sia domenica. Naturalmente si possono inserire anche altri controlli sul valore prima di impostare la data della notifica.

datafinale = utility.createdate(2022,7,18,10,30,0)
In questo caso la data viene creata direttamente dai valori inseriti con il comando createdate partendo dall'anno fino ad arrivare ai secondi.






Commenti