const express = require("express"); // Classes const Notifications = require("../models/Notifications.js"); // Middlewares const checkHeaders = require("../middlewares/checkHeaders"); const isAuthenticated = require("../middlewares/isAuthenticated"); const router = express.Router(); /** * wait Sagar feedback for language and label description * @ api {post} /api/notifications/backend - Notification Backend post * @apiName notifBackend * @apiDescription Send an api result {status,ref,msg,data} to get personnalize notification by header.xlang abd by data * @apiGroup Notification * * @apiBody {integer} status an http status * @apiBody {string} ref an existing model name * @apiBody {string} msg a key word existing in referentiual * */ router.post("/backend", (req, res) => { }) /** * @api {get} /notifications/:alias/:tribeId * @apiName notiflist * @apiDescription Get list of notifications for an alias and a tribe * @apiGroup Notifications * * @apiParam {string} alias * @apiParam {string} tribeId * @apiSuccess {object} notif content * @apiSuccessExample {json} Success-Response: * HTTP/1.1 200 OK * {status:200,ref:"Notification",msg:"Messagelist",data:{notif:[{tribeId,msg:{from(email or uuid or alias):[{dt,msg}]}}]} * bouture **/ router.get("/:alias/:tribeId", (req, res) => { const getnot = Notification.get(req.params.alias, req.params.tribeId); res.status(getalias.status).send(getalias); }); /** * @api {POST} /notifications/registeranonymous/:tribe/:mlist/:typekey/:data -Contact anonymous * @apiName register * @apiGroup Notifications * @apiDescription Register an email into a mailinglist mlist * @apiBody {string} tribe an existing tribe * @apiBody {string} mlist a mailing list name * @apiBody {string} key email or phone * @apiBod {string} srckey must exist in tribes/schema/lg/enumtrk_xx.json * @apiParams {string} data the email or phone * @apiSuccess {object} update mailinglist/{mlist}.json successfull * @apiSuccessExample {json} successfullmessage * HTTP/1.1 200 OK * {"status":200, "ref":"Notifications", "msg":"registersuccess", "data":{data, typekey, tribe, mlist, srckey, uuid}}} * */ router.post("/registeranonymous",checkHeaders,(req,res)=>{ //console.log("list registration ",req.body) if (!req.body.typekey || !['email','telephone'].includes(req.body.typekey) ){ return res.status(406).json({status:406,ref:"Notifications",msg:"typekeyunknown",data:{typekey:req.body.typekey}}) } result= Notifications.registertolist( req.body[req.body.typekey], req.body.typekey, req.body.tribe, req.body.mlist, req.body.srckey, req.session.header.xuuid); res.status(result.status).json(result) }) /** * @api {GET} /notifications/unregister/:tribe/:mlist/:typekey/:data/:validation -Contact anonymous * @apiName contactanonymous * @apiGroup Notifications * @apiDescription Register an email into a mailinglist mlist * @apiParams {string} tribe an existing tribe * @apiParams {string} mlist a mailing list name * @apiParams {string} key email or phone * @apiParams {string} srckey must exist in tribes/schema/lg/enumtrk_xx.json * @apiParams {string} data the email or phone * @apiParams {string} validation a key store in /tmp waiting to be approved, if "request" then send an email for confirmation, else if exist then remove email from list. * @apiSuccess {object} update mailinglist/{mlist}.json successfull * @apiSuccessExample {json} successfullmessage * HTTP/1.1 200 OK * {"status":200, "ref":"Notifications", "msg":"registersuccess", "data":{data, typekey, tribe, mlist, srckey, uuid}}} * */ router.get("/unregisteranonymous/:tribe/:mlist/:typekey/:srckey/:data/:validation", checkHeaders, (req, res) => { Notifications.registertolist = (typekey, tribe, mlist, srckey, uuid) result= Notifications.registertolist( req.params.typekey, req.params.tribe, req.params.mlist, req.params.srckey, req.session.header.xuuid); res.status(result.status).json(result) }) /** * @api {POST} /notifications/contactanonymous/:tribe -Contact anonymous * @apiName contactanonymous * @apiGroup Notifications * @apiDescription Register a contact in tribe and send a mail to admin of tribe * @apiParams {string} tribe an existing tribe * @apiBody {string} srckey: where it come from and eventualy email template name to use to send email , * @apiBody {string} email to recontact * @apiBody {string} others any other usefull key:value * * @apiSuccess {object} create/update tribe/contacts/{}.json successfull * @apiSuccessExample {json} successfullmessage * HTTP/1.1 200 OK * {"status":200, "ref":"Contact", "msg":"success", "data":{"indexlist":[]}} * */ router.post("/contactanonymous", checkHeaders, async (req, res) => { const done = Actions[req.body.order] ? await Actions[req.body.order](req.body, req.session.header) : { status: 406, ref: "Actions", msg: "bodyerror", data: req.body }; //console.log('routes contactanonymous ', req.body); res.status(done.status).json(done); }); /** * Same as /copntactanonymous but for authenticated user => data are updated in persons/itm/alias.json */ router.post("/contact/:tribe/:alias", checkHeaders, isAuthenticated, (req, res) => { const done = Actions[req.body.order] ? Actions[req.body.order](req.body, req.session.header) : { status: 406, ref: "Actions", msg: "bodyerror", data: req.body }; console.log(req.body); res.status(done.status).json(done); }); router.get("/contact", checkHeaders, isAuthenticated, (req, res) => { res.status(200).json({ data: {} }); }); module.exports = router;