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;
}
}
}