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

namespace AskDossiers
{
     public class Customizer : MercatorUi.ICustomizers. IStringUpdater
    {
         /*
          * Cette classe implémente l'interface IStringUpdater.
          * Ceci permettra de modifier les 2 requêtes SQL standards de Mercator,
          * utilisée pour la sélection des dossiers
          */

         public string StringUpdate( string ReqSql)
        {
             // ReqSql va contenir une de ces 2 requêtes
             // 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( "La variable d'environnement \"mercatordossiers\" n'est pas installée. Pour des raisons de sécurité, l'accès aux dossiers de Mercator est désactivé." );
                whereclause = "(1=0)" ;
            }
             else if (mercatordossiers == "all_dossiers" ) // dans ce cas, on autorise l'accès à tous les dossiers
            {
                whereclause = "" ;
            }
             else // les dossiers autorisés sont repris dans une liste dont le séparateur est | (pas de | aux extrémités de la liste)
            {
                 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;
        }
    }
}