# dbr.notif **dbr.notif.dkl** Funciones para la implementación de notificaciones que servirán para registrar y comunicar a usuarios información relevante. ## Variables globales * ```@__dbr.notif.no.readed``` Número máximo de notificaciones no leídas a devolver por la función dbr.notif.list. * ```@__dbr.notif.readed``` Número máximo de notificaciones leídas a devolver por la función dbr.notif.list.readed. ## Envíe/cree una notificación ### dbr.notif.send Crea el registro de una notificación. ``` dbr.notif.send::&db,&data ``` ##### Parámetros * `db` - Es una referencia hacia una conexión de bases de datos abierta. * `data` - Referencia a un bjeto con la información de la notificación a registrarse. Propiedades: - `title`: (string-requerido). Título de la notificación. - `sender`: (string-opcional). Id del remitente de la notificación, si se omite se asume 'unknow'. - `body`: (string-requerido). Cuerpo del mensaje. - `img`: (string-opcional). Url a una imagen ilustrativa. - `href`: (string-opcional). Url asociada a la notificación. - `target`: (string-opcional). Valores permitidos: "\_self", "\_blank" o "". - `start`: (string-opcional). Fecha y hora a partir de la cual debe aparecer, si se omite se registra la fecha y hora actual para mostrarse de inmediato. - `end`: (string-opcional). Fecha y hora hasta la que se mostrará, si se omite se registra a 10 años a partir de la fecha actual para mostrarse hasta que se marque como leída. - `to`: (object list-requerido). Lista de objetos que representa a los usuarios destinatarios de la notificación. Cada objeto puede tener la propiedad user (userid o clave primaria) o group (groupid o clave primaria del grupo), ambas son cadenas. ##### Valor de retorno Referencia a un objeto con las siguientes propiedades: - notifid: (string) sys_guid de la notificación. - users: (object list) lista de los usuarios notificados. ##### Excepciones - Excepciones de bases de datos. - El campo title es requerido. ##### Ejemplo ``` #include "dkli.dkh" #! module "dbr.notif.test" { #include "functions.dkh" #include "serialize.dkh" #include "dbr.dkh" #include "dbr.notif.dkl" ref db = dbr.open("mydb@myappgroup") new data { @"title": "Nueva notificación" @"body": "Mensaje de la notificación" @"start": "2024-03-06 12:49:00" @"to*": from.json('[{"user":"other"},{"group":"Administradores"}]') } ref res = dbr.notif.send(db, data) do print(to.json(res)) } ``` ## Obtenga las notificaciones no leídas ### dbr.notif.list Retorna una lista de las últimas 10 notificaciones del usuario conectado, no marcadas como leídas. El usuario conectado se refiere al registro de sesión de la conexión especificada. Utiliza la función dbr.getSID de Devkron para obtener el ID de sesión, por lo tanto, la base de datos debe ser una referencia proveniente por una de las funciones dbr.login o dbr.reconect. ``` dbr.notif.list::&db ``` ##### Parámetros * `db` - Es una referencia hacia una conexión de bases de datos abierta con sesión iniciada. ##### Valor de retorno Retorna una lista de los últimas 10 notificaciones del usuario conectado, no marcadas como leídas. ``` [ { "id":"sys_guid de la tabla de notificaciones (sys_notif)", "created":"Fecha de creación (sys_dtcreated en formato %Y-%m-%d %H:%i:%s)", "sndrid":"Usuario quien envió la notificación", "title":"Titulo de la notificación", "body":"Cuerpo de la notificación", "href":"Url a donde redirigirá al darle clic en el botón [ver más]", "target":" Como se visualizará la notificación _self=misma venta, _blank= venta nueva", "start":"fecha de inicio de la notificación(start en formato %Y-%m-%d %H:%i:%s)", "end":"fecha de finalización de la notificación(end en formato %Y-%m-%d %H:%i:%s)" } ] ``` ##### Excepciones Excepciones de bases de datos. ##### Ejemplo ``` #include "dkli.dkh" #! module "dbr.notif.test" { #include "functions.dkh" #include "serialize.dkh" #include "dbr.dkh" #include "dbr.notif.dkl" ref db = dbr.login("mydb@myappgroup", "admin", "") ref notif = dbr.notif.list(db) do print(to.json(notif)) } ``` ## Marque una notificación como leída ### dbr.notif.readed Marca como leída la notificación con la id indicada del usuario conectado. Utiliza la función dbr.getSID de Devkron para obtener el ID de sesión, por lo tanto, la base de datos debe ser una referencia proveniente por una de las funciones dbr.login o dbr.reconect. ``` dbr.notif.readed::&db,notifid ``` ##### Parámetros * `db` - Es una referencia hacia una conexión de bases de datos abierta con sesión iniciada. * `notifid` - Cadena con el id de la notificación. ##### Valor de retorno Retorna true si se ejecutó la operación, en caso contrario retorna false. ##### Excepciones Excepciones de bases de datos. ##### Ejemplo ``` #include "dkli.dkh" #! module "dbr.notif.test" { #include "functions.dkh" #include "serialize.dkh" #include "dbr.dkh" #include "dbr.notif.dkl" ref db = dbr.login("mydb@myappgroup", "admin", "") new data { @"title": "Nueva notificación 2" @"body": "Mensaje de la notificación 2" @"start": "2024-03-06 12:49:00" @"to*": from.json('[{"user":"other"},{"group":"Administradores"}]') } ref res = dbr.notif.send(db, data) ref notif = dbr.notif.list(db) for i = 0; i < list.count(notif) { ref not = list.obj(notif, i) do dbr.notif.readed(db, @@(not,"$id")) } } ``` ### dbr.notif.list.readed Retorna una lista de las últimas (var:@__dbr.notif.readed) notificaciones del usuario conectado, marcadas como leídas. Utiliza la función dbr.getSID de Devkron para obtener el ID de sesión, por lo tanto, la base de datos debe ser una referencia proveniente por una de las funciones dbr.login o dbr.reconect. ``` dbr.notif.list.readed::&db ``` ##### Parámetros * `db` - Referencia a una conexión de bases de datos. ##### Valor de retorno Lista con las notificaciones leídas del usuario. ``` [ { "id":"sys_guid de la tabla de notificaciones (sys_notif)", "created":"Fecha de creación (sys_dtcreated en formato %Y-%m-%d %H:%i:%s)", "sndrid":"Usuario quien envió la notificación", "title":"Titulo de la notificación", "body":"Cuerpo de la notificación", "href":"Url a donde redirigirá al darle clic en el botón [ver más]", "target":" Como se visualizará la notificación _self=misma venta, _blank= venta nueva", "start":"fecha de inicio de la notificación(start en formato %Y-%m-%d %H:%i:%s)", "end":"fecha de finalización de la notificación(end en formato %Y-%m-%d %H:%i:%s)" } ] ``` ##### Excepciones Excepciones de bases de datos. ##### Ejemplo ``` #include "dkli.dkh" #! module "dbr.notif.test" { #include "functions.dkh" #include "serialize.dkh" #include "dbr.dkh" #include "dbr.notif.dkl" ref db = dbr.login("mydb@myappgroup", "admin", "") ref mis_notificaciones_leidas=dbr.notif.list.readed(db) } ```