--
-- $Id$
--
-- Script containing customer specific sql statements for CIZN

DEFINE thisfile = 'cizn.sql'
DEFINE dbuser   = 'CIZN'

SET ECHO ON
SET DEFINE ON
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
COLUMN fcltcusttxt NEW_VALUE fcltcusttxt NOPRINT;
WHENEVER SQLERROR CONTINUE;
SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL;
SPOOL &fcltlogfile
WHENEVER SQLERROR EXIT;
SELECT adm.checkscriptcust('&dbuser') AS fcltcusttxt FROM DUAL;
WHENEVER SQLERROR CONTINUE;
---------------------------------------
PROMPT &fcltcusttxt
---------------------------------------
SET DEFINE OFF

------ payload begin ------

CREATE OR REPLACE VIEW cizn_v_rap_export_kentekens
AS
SELECT 'extern'                                                typebezoek,
       alg_locatie_omschrijving                                locatie,
       rrd.res_rsv_deel_van                                    datum,
       REPLACE (kw.res_kenmerkreservering_waarde, '-')         kenteken,
       pf.prs_perslid_naam_full                                naam,
       TO_CHAR (rrd.res_rsv_deel_van, 'dd-mm-yyyy hh24:mi')    van,
       TO_CHAR (rrd.res_rsv_deel_tot, 'dd-mm-yyyy hh24:mi')    tot
  FROM res_rsv_deel             rrd,
       res_deel                 rd,
       ins_v_deel_gegevens      dg,
       alg_locatie              l,
       res_rsv_ruimte           rrr,
       res_kenmerkwaarde        kw,
       res_kenmerk              k,
       res_srtkenmerk           sk,
       prs_v_perslid_fullnames  pf
 WHERE     rrd.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
       AND kw.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
       AND kw.res_kenmerk_key = k.res_kenmerk_key
       AND k.res_srtkenmerk_key = sk.res_srtkenmerk_key
       AND sk.res_srtkenmerk_code = 'KENTEKEN_EXT'
       AND rrr.res_rsv_ruimte_host_key = pf.prs_perslid_key
       AND rrd.res_rsv_deel_verwijder IS NULL
       AND rrd.res_deel_key = rd.res_deel_key
       AND rd.res_ins_deel_key = dg.ins_deel_key
       AND dg.alg_locatie_key = l.alg_locatie_key
UNION ALL
SELECT 'bezoekers'                                             typebezoek,
       l.alg_locatie_omschrijving                              locatie,
       a.bez_afspraak_datum                                    datum,
       REPLACE (bez_bezoekers_kenteken, '-')                   kenteken,
       bez_afspraak_naam                                       naam,
       TO_CHAR (a.bez_afspraak_datum, 'dd-mm-yyyy hh24:mi')    van,
       TO_CHAR (a.bez_afspraak_eind, 'dd-mm-yyyy hh24:mi')     tot
  FROM bez_bezoekers        b,
       bez_afspraak         a,
       res_rsv_deel         rrd,
       res_deel             rd,
       ins_v_deel_gegevens  dg,
       alg_locatie          l
 WHERE     b.bez_afspraak_key = a.bez_afspraak_key
       AND b.bez_bezoekers_key = rrd.bez_bezoekers_key
       AND rrd.res_deel_key = rd.res_deel_key
       AND rd.res_ins_deel_key = dg.ins_deel_key
       AND dg.alg_locatie_key = l.alg_locatie_key
       AND rrd.res_rsv_deel_verwijder IS NULL;

-- View om de juiste labels te tonen in het werkplekreserveringsscherm.
CREATE OR REPLACE FORCE VIEW CIZN_V_LABEL_DEEL_RES_DATUM
(
   FCLT_F_DATUM,
   INS_DEEL_KEY,
   RES_DEEL_OMSCHRIJVING,
   WAARDE1,
   WAARDE,
   WAARDE3,
   WAARDE_HTML,
   WAARDE_HTML2
)
BEQUEATH DEFINER
AS
   WITH
      datums
      AS
         (    SELECT TRUNC (SYSDATE) + LEVEL - 1    datum
                FROM DUAL
          CONNECT BY LEVEL <= 14)
     SELECT datums.datum
               fclt_f_datum,--count(res.res_ins_deel_key),
            isd.res_ins_deel_key
               ins_deel_key,
            isd.res_deel_omschrijving,
               CHR (10)
            || LISTAGG (
                  DECODE (
                     naam,
                     NULL, '',
                        '[s40]'
                     || naam
                     || ' ('
                     || TO_CHAR (res_rsv_deel_van, 'HH24:MI')
                     || '-'
                     || DECODE (TRUNC (res_rsv_deel_tot),
                                TRUNC (res_rsv_deel_van), TO_CHAR (res_rsv_deel_tot, 'HH24:MI'),
                                TO_CHAR (res_rsv_deel_tot, 'DD-MM-YYYY HH24:MI'))
                     || ')'),
                  CHR (10))
               WITHIN GROUP (ORDER BY res_rsv_deel_van) || 'w1'
               waarde1,
               DECODE (count(res.res_ins_deel_key), 0, substr(isd.res_deel_omschrijving, INSTR(isd.res_deel_omschrijving, '.') +1, 20),
               CHR (10)
            || LISTAGG (DECODE (naam, NULL, '', '[s40]' || TO_CHAR (res_rsv_deel_van, 'HH24:MI') || ' ' || naam),
                        CHR (10))
               WITHIN GROUP (ORDER BY res_rsv_deel_van))
               waarde2,
               CHR (10)
            || LISTAGG (DECODE (naam, NULL, '', '[s40]' || naam), CHR (10)) WITHIN GROUP (ORDER BY res_rsv_deel_van) || 'w3'
               waarde3,
            LISTAGG (
               DECODE (naam,
                       NULL, '',
                       '<span class="body">' || TO_CHAR (res_rsv_deel_van, 'HH24:MI') || ' ' || naam || '</span>'),
               '<br>')
            WITHIN GROUP (ORDER BY res_rsv_deel_van) || 'h1'
               waarde_html,
            LISTAGG (DECODE (naam, NULL, '', '<span class="body">' || naam || '</span>'), '<br>')
               WITHIN GROUP (ORDER BY res_rsv_deel_van) || 'h2'
               waarde_html2
       FROM res_v_aanwezigdeel isd,
            datums,
            (SELECT datum,
                    res_ins_deel_key,
                    DECODE (p.prs_perslid_visibility, 1, pf.prs_perslid_naam_friendly, a.prs_afdeling_omschrijving)
                       naam,
                    res_rsv_deel_van,
                    res_rsv_deel_tot
               FROM res_v_aanwezigdeel     r,
                    res_v_aanwezigrsv_deel rrd,
                    res_rsv_ruimte         rrr,
                    prs_v_perslid_fullnames pf,
                    prs_perslid            p,
                    prs_afdeling           a,
                    datums
              WHERE     r.res_deel_key = rrd.res_deel_key
                    AND rrd.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
                    AND rrr.res_rsv_ruimte_host_key = pf.prs_perslid_key
                    AND pf.prs_perslid_key = p.prs_perslid_key
                    AND p.prs_afdeling_key = a.prs_afdeling_key
                    AND datum + 1 >= res_rsv_deel_van
                    AND datum < res_rsv_deel_tot) res                                                           -- Bezet
      WHERE isd.res_ins_deel_key = res.res_ins_deel_key(+) AND datums.datum = res.datum(+)
   GROUP BY datums.datum, isd.res_ins_deel_key, isd.res_deel_omschrijving;

-- Thema om het vlekkenplan te tonen welke afdeling die dag de ruimte gepland heeft. Om dit in te richten moet je voor
-- deze ruimten een reservering inleggen en het veld afdeling vullen.
CREATE OR REPLACE VIEW cizn_v_thema_ruimte_dag
(
   FCLT_F_DATUM,
   ALG_RUIMTE_KEY,
   alg_ruimte_OMSCHRIJVING,
   WAARDE1,
   WAARDE,
   WAARDE3,
   WAARDE_HTML,
   WAARDE_HTML2
)
AS
   WITH
      datums
      AS
         (    SELECT TRUNC (SYSDATE) + LEVEL - 1    datum
                FROM DUAL
          CONNECT BY LEVEL <= 14)
     SELECT datums.datum                                      fclt_f_datum,               --count(res.res_ins_deel_key),
            r2a.alg_ruimte_key                      ,
            r2a.alg_ruimte_key,
            afdeling || 'w1'                                           waarde1,
            afdeling   waarde2,
             afdeling || 'w3'                                           waarde3,
              afdeling
            || 'h1'                                           waarde_html,
              afdeling
            || 'h2'                                           waarde_html2
       FROM RES_V_RSV_RUIMTE_2_ALG_RUIMTE r2a,
            datums,
            (SELECT datum,
                    res_rsv_ruimte_key,
                    flx.getdomeinwaarde(1, flx.getflex ('RES', 41, rrr.res_rsv_ruimte_key)) afdeling
               FROM res_v_aanwezigrsv_ruimte rrr,
                    datums
              WHERE TRUNC(datum) = TRUNC(res_rsv_ruimte_van)) res                                                           -- Bezet
      WHERE r2a.res_rsv_ruimte_key = res.res_rsv_ruimte_key(+)
       AND datums.datum = res.datum(+);

-- Kopie van het standaard thema waarbij de zit/sta bureaus zijn toegevoegd. Deze krijgen een andere kleur als ze beschikbaar zijn.
CREATE OR REPLACE VIEW cizn_v_thema_deel_res_datum
AS
   WITH
      datums
      AS
         (    SELECT TRUNC (SYSDATE) + LEVEL - 1    datum
                FROM DUAL
          CONNECT BY LEVEL <= 42)
     SELECT datum                                                        fclt_f_datum,
            ins_deel_key,
            MIN (res_rsv_deel_van)                                       min_van,
            MAX (res_rsv_deel_tot)                                       max_tot,
            CASE WHEN MAX (res_rsv_deel_tot) IS NULL THEN 0 ELSE 3                                           -- hele dag
                                                                   END   waarde1,
            CASE
               WHEN MAX (res_rsv_deel_tot) IS NULL AND zitsta IS NULL THEN 0               -- beschikbaar normaal bureau
               WHEN MAX (res_rsv_deel_tot) IS NULL AND zitsta = 1 THEN 4                    -- beschikbaar zitsta bureau
               WHEN TO_CHAR (MAX (res_rsv_deel_tot), 'HH24') <= 13 THEN 1                                     -- ochtend
               WHEN TO_CHAR (MIN (res_rsv_deel_van), 'HH24') >= 12 THEN 2                                      -- middag
               ELSE 3                                                                                        -- hele dag
            END                                                          waarde,
            COUNT (res_rsv_deel_tot)                                                      -- aantal reservering deze dag
                                                                         waarde3
       FROM (SELECT datums.datum,
                    res_ins_deel_key    ins_deel_key,
                    res_rsv_deel_van,
                    res_rsv_deel_tot,
                    zitsta
               FROM res_v_aanwezigdeel r,
                    ins_deel          d,
                    (SELECT ins_deel_key, 1 zitsta
                       FROM ins_kenmerkdeel kd, ins_kenmerk k, ins_srtkenmerk sk
                      WHERE kd.ins_kenmerk_key = k.ins_kenmerk_key
                        AND k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key
                        AND sk.ins_srtkenmerk_code = 'ZITSTA') kd,
                    datums,
                    (SELECT datum,
                            res_deel_key,
                            res_rsv_deel_van,
                            res_rsv_deel_tot
                       FROM datums, res_v_aanwezigrsv_deel rrd
                      WHERE     res_rsv_deel_van > TRUNC (SYSDATE) - 1       -- negeer alle irrelevante historie sowieso
                            AND datum + 1 >= res_rsv_deel_van
                            AND datum < res_rsv_deel_tot) blokkerend                    -- vandaag en nog niet afgelopen
              WHERE     r.res_deel_key = blokkerend.res_deel_key(+)
                    AND datums.datum = blokkerend.datum(+)
                    AND d.ins_deel_key = kd.ins_deel_key(+)
                    AND (r.res_deel_vervaldatum IS NULL OR r.res_deel_vervaldatum > datums.datum)
                    AND d.ins_deel_key = r.res_ins_deel_key)
   GROUP BY datum, ins_deel_key, zitsta
   ORDER BY datum, ins_deel_key;


------ payload end   ------

SET DEFINE OFF
BEGIN adm.systrackscriptId ('$Id$', 0); END;
/

COMMIT;
SET ECHO OFF
SPOOL OFF
SET DEFINE ON
PROMPT Logfile of this upgrade is: &fcltlogfile
