<% /*
     $Revision$
     $Id$
*/
%>
<!-- #include file="../PRS/prs.inc" -->
<%
sle = {func_enabled_slecil: // Wat mag ik zoal op dit specifieke sleutel/cilinder object?
           function (pins_deel_key, params)
           {
               var isql = "SELECT d.ins_discipline_key"
                        + ", COALESCE(d.ins_alg_ruimte_key_org, d.ins_alg_ruimte_key) alg_key"
                        + ", COALESCE(d.ins_alg_ruimte_type_org, d.ins_alg_ruimte_type) alg_type"
                        + ", d.ins_alg_ruimte_key_org"
                        + ", sd.ins_srtgroep_key"
                        + ", d.ins_deel_actief"
                        + ", CASE WHEN d.ins_deel_vervaldatum < SYSDATE"
                        + "    THEN 1"
                        + "    ELSE 0"
                        + "  END vervallen"
                        + "  FROM ins_deel d"
                        + ", ins_srtdeel sd"
                        + " WHERE d.ins_srtdeel_key = sd.ins_srtdeel_key"
                        + " AND d.ins_deel_key = " + pins_deel_key;
               var ioRs = Oracle.Execute(isql);
               var alg_key = ioRs("alg_key").value;
               var alg_type = ioRs("alg_type").value;
               var uitgegeven = ioRs("ins_alg_ruimte_key_org").value != null;
               var sletype = (ioRs("ins_srtgroep_key").value == S("sle_ins_srt_groep_key")? "S" : "C")
               var actief = ioRs("ins_deel_actief").Value == 1;
               var vervallen = ioRs("vervallen").Value == 1;
               ioRs.Close();

               // Autorisatie niet van discipline afhankelijk. En ook niet van persoon.
               var iresult = user.func_enabled2("SLE",
                                                {alg_key: (alg_type == 'R'? alg_key : null),
                                                 isOptional: true } // nog even optional
                                               );

               iresult.canFOWrite = iresult.canWrite("WEB_SLEFOF");
               iresult.canBOWrite = iresult.canWrite("WEB_SLEBOF");

               // Voor het uitgeven en innemen van sleutels gelden WEB_SLEFOF rechten
               // Voor het uitgeven en innemen van cilinders gelden WEB_SLEBOF rechten
               var canWrite = (sletype == "S"? iresult.canFOWrite : iresult.canBOWrite)
               iresult.canUitgeven = canWrite && !uitgegeven && actief && !vervallen; // Uitgeven
               iresult.canInnemen = canWrite && uitgegeven; // Innemen
               iresult.canDelete = canWrite;

               return iresult;
           },

       kanKoppelen: // Mag ik deze sleutel/cilinder srtdeel koppelen?
           function (pins_srtdeel_key, params)
           {
             var isql = "SELECT d.ins_deel_key"
                      + "  FROM ins_deel d"
                      + " WHERE d.ins_srtdeel_key = " + pins_srtdeel_key;
             var ioRs = Oracle.Execute(isql);
             var kanKoppelen = false;
             // Als ik rechten heb op 1 van de sleutels dan mag ik ook koppelen
             while (!ioRs.eof && !kanKoppelen)
             {
               var this_sle = sle.func_enabled_slecil(ioRs("ins_deel_key").value);
               kanKoppelen = this_sle.canBOWrite;
               ioRs.MoveNext();
             }
             ioRs.Close();
             return kanKoppelen;
           }
}
%>