140 lines
6.5 KiB
Plaintext
140 lines
6.5 KiB
Plaintext
<%@ language = "JavaScript" %>
|
|
<% /*
|
|
$Revision$
|
|
$Id$
|
|
|
|
File: api_prs_inzetbaar.asp
|
|
Description: API voor Mareon om GEO-werkgebied van een vakman X voor dag Y te registreren
|
|
INSERT werkgebied als prs_perslid_inzetbaar voor X op Y nog niet bestaat
|
|
UPDATE werkgebied als prs_perslid_inzetbaar voor X op Y nog wel bestaat
|
|
RESET werkgebied als voor radius 0 wordt meegegeven.
|
|
|
|
Parameters: v_perslid_key (Int, key van prs_perslid)
|
|
v_days_ahead (Int, 0 = vandaag, 1 = morgen, 2 = overmorgen etc, kortweg bepalen van de dag = SYSDATE + v_days_ahead
|
|
v_lat (Real, latitude van centrum van werkgebied)
|
|
v_lng (Real, longitude van centrum van wekrgebied)
|
|
v_rad (Real, straal van werkgebied)
|
|
|
|
Context: vanuit PlanningGoogleMap.asp
|
|
|
|
|
|
*/
|
|
DOCTYPE_Disable = 1;
|
|
THIS_FILE = "appl/marx/api_prs_inzetbaar.asp";
|
|
%>
|
|
<!-- #include file="../Shared/common.inc" -->
|
|
<!-- #include file="../Shared/xml_converter.inc" -->
|
|
<!-- #include file="../api/api.inc" -->
|
|
<%
|
|
// We sturen het antwoord in UTF-8.
|
|
Session.Codepage = 65001;
|
|
Response.Charset = 'utf-8';
|
|
|
|
var l_result;
|
|
l_result = "<xml><result>1</result><action>noop</action><reason></reason></xml>";
|
|
var authparams = user.checkAutorisation("WEB_RESFOF", true);
|
|
user.auth_required_or_abort(authparams);
|
|
|
|
var v_perslid_key = getQParamInt("v_perslid_key", -1); // Default geen perslid (-1)
|
|
var v_days_ahead = getQParamInt("v_days_ahead", -1); // Default aantal dagen geleden = 0 (= vandaag), 1 = morgen, 2 = overmorgen etc, kortweg bepalen van de dag = SYSDATE + v_days_ahead
|
|
var v_lat = getQParam("v_lat", "-1");
|
|
var v_lng = getQParam("v_lng", "-1");
|
|
var v_rad = getQParamInt("v_rad", -1);
|
|
|
|
__Log("v_perslid_key: " + v_perslid_key);
|
|
__Log("v_days_ahead: " + v_days_ahead);
|
|
__Log("v_lat: " + v_lat);
|
|
__Log("v_lng: " + v_lng);
|
|
__Log("v_rad: " + v_rad);
|
|
|
|
if (v_perslid_key != -1 && v_days_ahead != -1 && v_lat != "-1" && v_lng != "-1" && v_rad != -1)
|
|
{
|
|
//Update vakgebied in bezetbaarheid van persoon, en is alleen toegstaan indien de persoon contractpersoon is van (leveranciers)bedrijf waar user_key ook contactpersoon is.
|
|
|
|
// Eerst checken of de persoon met v_perslid_key wel contractpersoon is van (leveranciers)bedrijf waar user_key ook contactpersoon is.
|
|
// l_zelfde_bedrijf wordt 0 (dan niet geautoriseerd) of >0 (dan wel geautoriseerd)....
|
|
var l_zelfde_bedrijf = 0;
|
|
var sql = " SELECT COUNT(*) aantal FROM prs_contactpersoon cp"
|
|
+ " WHERE cp.prs_perslid_key = " + v_perslid_key
|
|
+ " AND cp.prs_contactpersoon_verwijder IS NULL"
|
|
+ " AND EXISTS (SELECT 'x' FROM prs_contactpersoon cp2"
|
|
+ " WHERE cp2.prs_perslid_key = " + user_key
|
|
+ " AND cp2.prs_contactpersoon_verwijder IS NULL"
|
|
+ " AND cp2.prs_bedrijf_key = cp.prs_bedrijf_key)";
|
|
var oRs = Oracle.Execute(sql);
|
|
if (!oRs.eof)
|
|
{
|
|
l_zelfde_bedrijf = oRs("aantal").Value;
|
|
}
|
|
oRs.close();
|
|
__Log("l_zelfde_bedrijf: " + l_zelfde_bedrijf);
|
|
|
|
if (l_zelfde_bedrijf != 0)
|
|
{
|
|
//Van hetzelfde bedrijf, derhalve wel geautoriseerd
|
|
|
|
// insert of update
|
|
|
|
// l_prs_perslid_inzetbaar_key wordt -1 (dan insert) en anders de key (dan update)....
|
|
var l_prs_perslid_inzetbaar_key = 0;
|
|
var sql = " SELECT COALESCE(MAX(prs_perslid_inzetbaar_key), -1) prs_perslid_inzetbaar_key"
|
|
+ " FROM prs_perslid_inzetbaar pi"
|
|
+ " WHERE pi.prs_perslid_key = " + v_perslid_key
|
|
+ " AND pi.prs_perslid_inzetbaar_dag = to_char(SYSDATE + " + v_days_ahead + ",'D') - 1";
|
|
var oRs = Oracle.Execute(sql);
|
|
if (!oRs.eof)
|
|
{
|
|
l_prs_perslid_inzetbaar_key = oRs("prs_perslid_inzetbaar_key").Value;
|
|
}
|
|
oRs.close();
|
|
__Log("l_prs_perslid_inzetbaar_key: " + l_prs_perslid_inzetbaar_key);
|
|
if (l_prs_perslid_inzetbaar_key == -1 && v_rad != 0)
|
|
{
|
|
//insert, kan alleen als werkgebied een postieve straal >0 heeft...
|
|
var l_prs_t1 = S("prs_t1")*60;
|
|
var l_prs_t2 = S("prs_t2")*60;
|
|
|
|
var sql = " INSERT INTO prs_perslid_inzetbaar(prs_perslid_key, prs_perslid_inzetbaar_van, prs_perslid_inzetbaar_tot, prs_perslid_inzetbaar_dag, prs_perslid_inzetbaar_plaats_x, prs_perslid_inzetbaar_plaats_y, prs_perslid_inzetbaar_radius)"
|
|
+ " VALUES(" + v_perslid_key + "," + "ROUND(" + l_prs_t1 + ")" + "," + "ROUND(" + l_prs_t2 + ")" + "," + "to_char(SYSDATE + " + v_days_ahead + ",'D') - 1" + ","
|
|
+ " ROUND(fac.safe_to_number(" + v_lat + "),6)" + "," + "ROUND(fac.safe_to_number(" + v_lng + "),6)" +"," + "ROUND(" + v_rad + ")" + ")";
|
|
Oracle.Execute(sql);
|
|
l_result = "<xml><result>1</result><action>new record inserted</action><reason></reason></xml>";
|
|
}
|
|
else
|
|
{
|
|
//update
|
|
if (v_rad != 0)
|
|
{ // Positieve radius > 0, dan update werkgebied
|
|
var sql = " UPDATE prs_perslid_inzetbaar pi"
|
|
+ " SET pi.prs_perslid_inzetbaar_plaats_x = ROUND(fac.safe_to_number(" + v_lat + "),6)"
|
|
+ " ,pi.prs_perslid_inzetbaar_plaats_y = ROUND(fac.safe_to_number(" + v_lng + "),6)"
|
|
+ " ,pi.prs_perslid_inzetbaar_radius = ROUND(" + v_rad + ")"
|
|
+ " WHERE pi.prs_perslid_inzetbaar_key = " + l_prs_perslid_inzetbaar_key;
|
|
l_result = "<xml><result>1</result><action>working area updated</action><reason></reason></xml>";
|
|
}
|
|
else
|
|
{
|
|
// Radius = 0, dan werkgebied resetten
|
|
var sql = " UPDATE prs_perslid_inzetbaar pi"
|
|
+ " SET pi.prs_perslid_inzetbaar_plaats_x = NULL"
|
|
+ " ,pi.prs_perslid_inzetbaar_plaats_y = NULL"
|
|
+ " ,pi.prs_perslid_inzetbaar_radius = NULL"
|
|
+ " WHERE pi.prs_perslid_inzetbaar_key = " + l_prs_perslid_inzetbaar_key;
|
|
l_result = "<xml><result>1</result><action>reset of working area</action><reason></reason></xml>";
|
|
}
|
|
Oracle.Execute(sql);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
//Niet van hetzelfde bedrijf, derhalve niet geautoriseerd
|
|
l_result = "<xml><result>0</result><action>Noop</action><reason>Not autorized</reason></xml>";
|
|
}
|
|
}
|
|
|
|
// Mareon adapter verwacht wel een response bericht (ook al doet die er nu niets mee).
|
|
// We retourneren het oorspronkelijke XML berichtje..
|
|
Response.Write(l_result)
|
|
%>
|
|
<% ASPPAGE_END(); %>
|