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

    File:               SuggestContactpersoon.asp
    Description:        Suggereer contactpersonen
    Parameters:         k         De eerste paar letters
                        bAll      Haal alle records op (met nog steeds een maximum van 500)
                        filtcode  Beperk de lijst met getoonde personen
                                  'U': Filter op contactpersonen van uitvoerenden
    Globals:
    Context:
    Note:
*/ %>

<%
JSON_Result = true;
%>

<!-- #include file="../../Shared/common.inc" -->
<!-- #include file="./suggest.inc" -->
<!-- #include file="./contactpersoonFilter.inc" -->

<%
var chars         = getQParam("k", "");
var bAll          = getQParamInt("SuggestAll", 0) == 1;
var filtcode      = getQParam("filtcode", "");
var uitv_key      = getQParamInt("uitv_key", -2); // Contactpersoon afhankelijk van Bedrijf suggestbox. Als er een waarde is meegegeven dan deze ook invullen (Ook -1).
var dienst_key    = getQParamInt("dienst_key", -1);
var loc_key       = getQParamInt("loc_key", -1);
var bld_key       = getQParamInt("bld_key", -1);
var zoekpers      = getQParamInt("zoekpers", 1)==1; // dan zoeken we persoon, default aan
var zoekbedr      = getQParamInt("zoekbedr", 1)==1; // dan zoeken we in bedrijf, default aan
var aanvrager_key = getQParamInt("aanvrager_key", -1);

chars = chars.replace(/\*/g,"%");

var params = { uitv_key: uitv_key,
               loc_key: loc_key,
               bld_key: bld_key,
               aanvrager_key: aanvrager_key };

var filtClause = getFiltClauseContactpersoon(filtcode, params);

var zoeker = [];
if (zoekpers)
    zoeker.push("UPPER(" + S("prs_contactpers_string") + ") LIKE " + safe.quoted_sql_wild2(chars))
if (zoekbedr)
    zoeker.push("UPPER(b.prs_bedrijf_naam) LIKE " + safe.quoted_sql_wild2(chars))

  // Geen autorisatie bij externe bedrijven (prs_bedrijf)
  // Niet persoon of plaats afhankelijk
  var sql = "SELECT cp.prs_contactpersoon_key"
          + ", " + S("prs_contactpers_string") + " naam"
          + ", b.prs_bedrijf_naam"
          + " FROM prs_contactpersoon cp"
          + ",     prs_v_aanwezigbedrijf b"
          + " WHERE cp.prs_bedrijf_key = b.prs_bedrijf_key"
          + "   AND cp.prs_contactpersoon_verwijder IS NULL"
          + "   AND (" + zoeker.join(" OR ") + ")"
          + filtClause
if (uitv_key > -2)
     sql += "   AND b.prs_bedrijf_key = " + uitv_key;
if (loc_key > 0)
     sql += " AND (EXISTS (SELECT 1"
          + "                FROM prs_contactpersoon_locatie cpl"
          + "               WHERE cpl.prs_contactpersoon_key = cp.prs_contactpersoon_key"
          + "                 AND cpl.alg_locatie_key = " + loc_key + ")"
          + "   OR (NOT EXISTS (SELECT 1"
          + "                     FROM prs_contactpersoon_locatie cpl"
          + "                    WHERE cpl.prs_contactpersoon_key = cp.prs_contactpersoon_key)"
          + "       AND NOT EXISTS (SELECT 1"
          + "                         FROM prs_bedrijfdienstlocatie bdl"
          + "                        WHERE bdl.prs_bedrijf_key = cp.prs_bedrijf_key))"
          + "   OR (NOT EXISTS (SELECT 1"
          + "                     FROM prs_contactpersoon_locatie cpl"
          + "                    WHERE cpl.prs_contactpersoon_key = cp.prs_contactpersoon_key)"
          + "       AND EXISTS (SELECT 1"
          + "                     FROM prs_bedrijfdienstlocatie bdl"
          + "                    WHERE bdl.prs_bedrijf_key = cp.prs_bedrijf_key"
          + "                      AND (bdl.alg_locatie_key IS NULL OR bdl.alg_locatie_key = " + loc_key + ")))"
          + "     )";
// Problematisch in YFTH#73397
//if (dienst_key > -1) // vooralsnog (nog over nadenken) geen dienst-plaatsscope voor interne uitvoerenden, dat wordt dus bepaald door het bedrijf (as was)
//     sql += " AND EXISTS (SELECT '' FROM prs_bedrijfdienstlocatie dl"
//          + "              WHERE dl.prs_perslid_key= cp.prs_perslid_key"
//          + "                AND dl.prs_dienst_key = " + dienst_key +")" ;

if (zoekpers)
    sql +=" ORDER BY " + S("prs_contactpers_string")+",prs_bedrijf_naam";
else
    sql +=" ORDER BY prs_bedrijf_naam," + S("prs_contactpers_string");

WriteResult2(sql, { bAll:          bAll,
                    fldName:       zoekpers?"naam":"prs_bedrijf_naam",
                    fldKey:        "prs_contactpersoon_key",
                    fldDesc:       zoekpers?"prs_bedrijf_naam":"naam",
                    fldExtraParam: zoekpers?"prs_bedrijf_naam":"naam",
                    fldTitle:      null,
                    bStoreDesc:    null,
                    checkExist:    null
                 });
%>
<% ASPPAGE_END(); %>
