using System;
using System.Collections.Generic;
using System.Text;
using MercatorUi;

namespace AskDossiers
{
     public class Customizer : MercatorUi.ICustomizers. IStringUpdater
    {
         /*
          * Deze klasse implementeert de interface IStringUpdater.
          * Hierdoor kunnen de 2 standaard SQL-opdrachten van Mercator worden gewijzigd.
          * Wordt gebruikt voor de dossierselectie
          */

         public string StringUpdate( string ReqSql)
        {
             // ReqSql zal een van deze 2 opdrachten bevatten
             // select id,nom,tri,isnew from DOSSIERS (NOLOCK) order by tri,id (premier onglet)
             // select id, nom from DOSSIERS where (nom like '%'+@PARAM+'%') order by ID (second onglet)
             string whereclause = "" ;
             string mercatordossiers = System. Environment .GetEnvironmentVariable( "mercatordossiers" );
             if ( string .IsNullOrEmpty(mercatordossiers))
            {
                 Dialogs .Stop( "De omgevingsvariabele \"mercatordossiers\" is niet geïnstalleerd. Om veiligheidsredenen wordt de toegang tot de Mercator-dossiers gedeactiveerd." );
                whereclause = "(1=0)" ;
            }
             else if (mercatordossiers == "all_dossiers" ) // in dit geval zijn alle dossiers toegankelijk
            {
                whereclause = "" ;
            }
             else // de geautoriseerde dossiers worden vermeld in een lijst, gescheiden door het teken | (geen | in het begin en aan het eind van de lijst)
            {
                 string [] array_dossiers = mercatordossiers.Split( '|' );
                 foreach ( string dossier in array_dossiers)
                {
                    whereclause += (whereclause != "" ? " or " : "" ) + "(ID='" + dossier.Replace( "'" , "''" ) + "')" ;
                }
            }
             if (whereclause != "" )
            {
                 if (ReqSql.Contains( "where" ))
                    ReqSql = ReqSql.Replace( "where" , "where " + whereclause + " and" );
                 else
                    ReqSql = ReqSql.Replace( "order by" , "where " + whereclause + " order by" );
            }
             return ReqSql;
        }
    }
}