<%@ language = "JavaScript" %>
<% /*
     $Revision$
     $Id$

    File:           prs_claimwp.asp
    Description:    Registreer dat IK nu op deze werkplek zit

    Parameters:     wp_key, eventueel via ins_key (sensor, PC)
    Context:
    Notes:          De user moet geauthenticeerd zijn en WEB_??? (write) rechten hebben.
                    Merk op: het feit dat deze functie (mobiel) kan worden aangeroepen betekent dat er fysiek aan de
                    ALG-scope voldaan wordt ("ik mag hier kennelijk komen").

                    Als niet bestaande wp wordt meegegeven (bv -1) is netto effect dat je je bezette plek vrijgeeft
    Future extensions:
*/
%>
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="./mobile.inc" -->
<!-- #include file="./iface.inc" -->

<%
//    protectQS.verify();

    var noecho = getQParamInt("noecho", 0);
    var submitting = getQParamInt("submit", 0) == 1;
    var claimed = false;

    var qrc = getQParamInt("qrc", 0) != 0;
    var ins_key = getQParamInt("ins_key", -1);  //Zo kun je via een wp-gebonden object (PC) de wp definieren

    if (ins_key == -1)
    {
        var wp_key = getQParamInt("wp_key");
    }
    else
    {
        sql = "SELECT ins_alg_ruimte_key FROM ins_deel WHERE ins_alg_ruimte_type='W' AND ins_deel_key ="+ins_key;
        oRs = Oracle.Execute(sql);
        if (!oRs.eof)
        {
          wp_key = oRs("ins_alg_ruimte_key").value;
        }
    }

    // wp_zal nu altijd gedefinieerd zijn

    authparams = user.checkAutorisation("WEB_PRSBOF");  // is da goe?
    user.auth_required_or_abort(authparams.ALGwritelevel < 9 && authparams.PRSwritelevel < 9);

    var pwp_key = -1;
    var old_pers_key = -1;
    // Zoek het (eventuele) huidige bezettingsrecord
    // We nemen werkplektype daarbij mee, het moet per se flex zijn.
    sql = "SELECT prs_perslidwerkplek_key, prs_perslid_key, prs_alg_ruimte_key"
        + "  FROM prs_perslidwerkplek pwp, prs_werkplek wp"
        + " WHERE BITAND(wp.prs_werkplek_type, 1) = 1 "
        + "   AND pwp.prs_werkplek_key(+) = wp.prs_werkplek_key"
        + "   AND wp.prs_werkplek_key = "+ wp_key;
    oRs = Oracle.Execute(sql);
    // Het mag er maar maximaal eentje zijn, ik pak dus gewoon de eerste en enige
    // De ruimtekey is gedefinieerd, die andere kolommen kunnen NULL zijn
    ruimte_key = oRs("prs_alg_ruimte_key").value;
    pwp_key = oRs("prs_perslidwerkplek_key").value;
    old_pers_key = oRs("prs_perslid_key").value;

    if (submitting)
    {
        protectRequest.validateToken();

        // Er zat hier al iemand (ik of iemand anders); nu zit ik er (weer)
        if (pwp_key)
        {
            sql = "UPDATE prs_perslidwerkplek"
                + "   SET prs_perslid_key = " + user_key
                + "     , prs_perslidwerkplek_aanmaak = SYSDATE"
                + " WHERE prs_perslidwerkplek_key = " + pwp_key;
            Oracle.Execute(sql);
        } else {
            sql = "INSERT INTO prs_perslidwerkplek (prs_werkplek_key, prs_perslid_key, prs_perslidwerkplek_volgnr) "
              + " VALUES (" + wp_key +"," + user_key +", 1)";  // Bezetting is vanzelf 100
            Oracle.Execute(sql);
        }
        // En dan zit IK nu dus niet (meer) op alle ANDERE FLEXplekken:
        sql = "DELETE FROM prs_perslidwerkplek pwp"
            + " WHERE prs_perslid_key = " + user_key
            + "   AND prs_werkplek_key <> " + wp_key
            +"    AND EXISTS (SELECT '' FROM prs_werkplek wp"
                           + " WHERE wp.prs_werkplek_key = pwp.prs_werkplek_key"
                           + "   AND BITAND(wp.prs_werkplek_type, 1) = 1)";
        Oracle.Execute(sql);

        claimed = true;

        // Tot slot weten we dat we hier zitten, dus willen we de scope (ver)zetten
        mobile.iamhere("R", ruimte_key);
    }

    // Quiet optie niks tonen (gewoon 200 teruggeven)?
    if (noecho != 0) {
        ASPPAGE_END();
        Response.End;
    }

    // Nu weer doorvallen naar bevestinging
%>
<html>
<head>
<% FCLTMHeader.Generate({title: L("lcl_flexplek")}); %>
</head>
<%
var sql = "SELECT COALESCE(prs_werkplek_omschrijving, TO_CHAR(prs_werkplek_volgnr)) wpaanduiding"
        + "  FROM prs_werkplek r"
        + " WHERE prs_werkplek_key = " + wp_key;
var wp_desc = Oracle.Execute(sql)("wpaanduiding").Value;

  %><body><%

    PAGE_START();
    HEADER ({title: L("lcl_flexplek"), back:!qrc, home:!qrc});
    CONTENT_START();
%>
      <form id="claimwp" name="claimwp" action="prs_claimwp.asp?submit=1&wp_key=<%=wp_key%>" method="post">
<%

    if (claimed)
        Response.write(L("lcl_flexplek")+" "+safe.html(wp_desc)+" "+L("lcl_flexplekclaimed")+" "+user.naam() + " "+ L("lcl_flexplekclaimfooter"));
    CONTROLGROUP_START();
    BUTTON(L("lcl_mobile_claimconfirm"), {click: "document.forms.claimwp.submit()", icon: "fa-check", singlepress: true});
    CONTROLGROUP_END();
IFACE.FORM_END();

%>
  </form>
<%
  CONTENT_END();
    FOOTER();
    PAGE_END();
PDA_PAGE_END(); %>
	</body>
</html>
<% ASPPAGE_END(); %>
