AAIT#40392 mogelijkheid om (app)notificaties naar meerdere (bedrijfs)adressen te kunnen sturen
svn path=/Website/trunk/; revision=35288
This commit is contained in:
@@ -40,10 +40,15 @@ function model_aut_client_perslid(params)
|
||||
},
|
||||
"device_id": {
|
||||
"dbs": "aut_client_perslid_device_id",
|
||||
"label": L("aut_client_perslid_device"),
|
||||
"label": L("aut_client_perslid_device_id"),
|
||||
"typ": "varchar",
|
||||
"filter": "exact"
|
||||
},
|
||||
"device_name": {
|
||||
"dbs": "aut_client_perslid_device_name",
|
||||
"label": L("aut_client_perslid_device_name"),
|
||||
"typ": "varchar"
|
||||
},
|
||||
"scope": {
|
||||
"dbs": "aut_client_perslid_scope",
|
||||
"label": L("aut_client_perslid_scope"),
|
||||
|
||||
@@ -24,6 +24,8 @@ var JSON_Result = true;
|
||||
var client_id = getQParam("client_id");
|
||||
var device_id = getQParam("device_id", "AUTO_" + shared.random(32)); // optional device identification
|
||||
// Hetzelfde device krijgt altijd hetzelfde token terug
|
||||
var device_name = getQParam("device_name", "<unkwown>"); // Friendly name naar de gebruiker toe
|
||||
|
||||
var model_client = new model_aut_client({ internal: true });
|
||||
var client_data = api2.GET(model_client, { filter: { "code": client_id } }); // sp moet er dan zijn voor Service Provider
|
||||
if (!client_data && client_id == "FCLTAPP1") // Voor FCLTAPP1 ondersteunen we auto-create
|
||||
@@ -56,6 +58,7 @@ var JSON_Result = true;
|
||||
var cp_data = { "autclient" : client_data.id,
|
||||
"scope" : "*",
|
||||
"device_id" : device_id,
|
||||
"device_name" : device_name,
|
||||
"refreshtoken": '1$' + customerId + "_" + shared.random(32), // unused yet
|
||||
"refreshdate" : new Date(),
|
||||
"accesstoken" : '1$' + customerId + "_" + shared.random(32), // Does not expire yet?
|
||||
@@ -65,7 +68,7 @@ var JSON_Result = true;
|
||||
}
|
||||
var result = model_client_perslid.REST_POST({}, cp_data);
|
||||
// "App {0} aanmelding voor {1}/{2}";
|
||||
shared.trackaction("PRSLOG", user_key, L("lcl_client_perslid_registered").format(client_id, getQParam("device_name", "<unkwown>"), device_id));
|
||||
shared.trackaction("PRSLOG", user_key, L("lcl_client_perslid_registered").format(client_id, device_name, device_id));
|
||||
|
||||
cp_data = api2.GET(model_client_perslid, result.key );
|
||||
}
|
||||
|
||||
@@ -32,7 +32,8 @@ scaffolding(this_model,
|
||||
"autclient",
|
||||
//"scope",
|
||||
"refreshdate",
|
||||
"login"
|
||||
"login",
|
||||
"device_name"
|
||||
]
|
||||
},
|
||||
"edit": {
|
||||
|
||||
@@ -17,23 +17,63 @@ function sendAPP( p_perslid_key
|
||||
{
|
||||
var APPsend = false;
|
||||
|
||||
var url = S("puo_apppushurl"); // "http://facilitordev.azurewebsites.net/api/Notification/SendNotification"; Ooit uit aut_client of een kanaal
|
||||
if (!url)
|
||||
{
|
||||
Log2File(1, "APP bericht: '" + p_msg + "' *niet* verzonden naar " + p_perslid_key + " want puo_apppushurl niet geconfigureerd.");
|
||||
return false;
|
||||
}
|
||||
|
||||
var sql = "SELECT aut_client_perslid_pushtoken "
|
||||
+ " , aut_client_perslid_device_id "
|
||||
+ " , aut_client_id"
|
||||
+ " , prs_perslid_naam_friendly"
|
||||
+ " , ba.*"
|
||||
+ " FROM aut_client_perslid acp"
|
||||
+ " , aut_client ac"
|
||||
+ " , prs_bedrijf b"
|
||||
+ " , prs_bedrijfadres ba"
|
||||
+ " , prs_v_perslid_fullnames p"
|
||||
+ " WHERE acp.aut_client_key = ac.aut_client_key"
|
||||
+ " AND prs_perslid_key = " + p_perslid_key
|
||||
+ " AND aut_client_id = 'FCLTAPP1'"; // NWNX is de enige die we ondersteunen
|
||||
+ " AND acp.prs_perslid_key = " + p_perslid_key
|
||||
+ " AND acp.prs_perslid_key = p.prs_perslid_key"
|
||||
+ " AND ac.prs_bedrijf_key = b.prs_bedrijf_key(+)" // outer join alleen omdat FCLTAPP1 hardcoded is
|
||||
+ " AND b.prs_bedrijf_key = ba.prs_bedrijf_key(+)"
|
||||
+ " AND ba.prs_bedrijfadres_type(+) = 'N'"; // Notificatie
|
||||
var oRs = Oracle.Execute(sql);
|
||||
while (!oRs.Eof)
|
||||
{
|
||||
{ // Let op: lang niet alles wordt (al) ondersteund
|
||||
var bedrijfadres = { key: oRs("prs_bedrijf_key").value,
|
||||
url: oRs("prs_bedrijfadres_url").value,
|
||||
encoding: oRs("prs_bedrijfadres_encoding").value,
|
||||
ordermode: oRs("prs_bedrijfadres_ordermode").value,
|
||||
typeopdr_key: oRs("mld_typeopdr_key").value,
|
||||
certificateName: oRs("prs_bedrijfadres_certificate").value || "",
|
||||
extension: oRs("prs_bedrijfadres_ext").value||"",
|
||||
flexfiles: oRs("prs_bedrijfadres_flexfiles").value,
|
||||
AttachFile: oRs("prs_bedrijfadres_attachfile").Value,// E<>n vaste bijlage ('algemene voorwaarden') om bij te sluiten
|
||||
XSLbedr: (oRs("prs_bedrijfadres_xsl").value||"").toLowerCase(),
|
||||
username: oRs("prs_bedrijfadres_username").value,
|
||||
password: oRs("prs_bedrijfadres_password").value,
|
||||
authmethod: oRs("prs_bedrijfadres_authmethod").value || 0,
|
||||
soapversion: oRs("prs_bedrijfadres_soapversion").value,
|
||||
soapaction: oRs("prs_bedrijfadres_soapaction").value,
|
||||
locksecret: oRs("prs_bedrijfadres_locksecret").value,
|
||||
loglevel: oRs("prs_bedrijfadres_loglevel").value
|
||||
};
|
||||
if (!bedrijfadres.key && oRs("aut_client_id").Value == 'FCLTAPP1') // NWNX is de enige die we hardcoded ondersteunen
|
||||
{
|
||||
bedrijfadres.url = S("puo_apppushurl"); // "http://facilitordev.azurewebsites.net/api/Notification/SendNotification"; Ooit ook uit een kanaal
|
||||
//bedrijfadres.XSLbedr = '../appl/shared/fcltapp1.xsl';
|
||||
if (!bedrijfadres.url)
|
||||
{
|
||||
Log2File(1, "APP bericht: '" + p_msg + "' *niet* verzonden naar " + p_perslid_key + " want puo_apppushurl niet geconfigureerd.");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if (!bedrijfadres.url)
|
||||
return false;
|
||||
|
||||
// Dit zou ik het liefst doen met een stylesheet achtige oplossing en dan een XML2JSON
|
||||
// Enerzijds wil je echter gewoon de volledige standaard xml_content gebruiken
|
||||
// maar anderzijds zit daar in het bijzonder het pushtoken niet in
|
||||
// Bovendien kan ik me ook goed een APP voorstellen waarbij het pushtoken in de url moet komen,
|
||||
// dat red je ook weer niet echt met een stylesheet.
|
||||
// Welbeschouwd moet er misschien beter een plugin achtige constructie komen?
|
||||
// Praktijk afwachten maar
|
||||
var json = {
|
||||
"Title" : "FACILITOR",
|
||||
"Message": p_msg,
|
||||
@@ -42,13 +82,18 @@ function sendAPP( p_perslid_key
|
||||
if (p_url)
|
||||
{
|
||||
json["Url"] = p_url;
|
||||
json["FullUrl"] = S("puo_fclt_web_url") + p_url;
|
||||
json["FullUrl"] = S("puo_fclt_web_url") + p_url; // als de APP een webclient van FACILITOR is kan hij hier 'naar toe' springen
|
||||
}
|
||||
|
||||
var body = JSON.stringify(json);
|
||||
Log2File(1, "APP bericht: '" + p_msg + "' wordt via " + oRs("aut_client_id").Value + " verzonden naar: " + p_perslid_key);
|
||||
Log2File(1, "APP bericht: '{0}' wordt via {1} verzonden naar: {2}/{3}".format(p_msg, oRs("aut_client_id").Value,
|
||||
oRs("prs_perslid_naam_friendly").Value,
|
||||
oRs("aut_client_perslid_device_id").Value));
|
||||
Log2File(2, "Payload: " + body);
|
||||
var xmlHTTP = doHTTP(url, { data: body, headers: { "Content-Type": "application/json"} });
|
||||
var params = bedrijfadres;
|
||||
params.data = body;
|
||||
params.headers = { "Content-Type": "application/json" };
|
||||
var xmlHTTP = doHTTP(bedrijfadres.url, params);
|
||||
if (xmlHTTP.status >= 200 && xmlHTTP.status <= 299)
|
||||
{
|
||||
APPsend = true;
|
||||
|
||||
Reference in New Issue
Block a user