using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using MercatorApi;
using MercatorUi;
using System.Windows.Forms;
using System.Reflection;

namespace SigStock
{
    public class Customizer : MercatorUi.ICustomizers.ISigCreated
    {

        public void SigCreated(MercatorUi.Sig.Sig Sig) // Il faut redémarrer Mercator pour qu'il prenne en compte les modifications apportées au customizer via SigCreated.
        {
            Sig.Filtering += new MercatorUi.Sig.Sig.FilteringEventHandler(Sig_Filtering);
        }

        void Sig_Filtering(object sender, MercatorUi.Sig.Sig.FilteringEventArgs e)
        {
            // montrer le filtre
            MercatorUi.Dialogs.Stop("Le filtre suivant va être appliqué : " + e.WhereClause);
            // A voir aussi dans e :
            //     e.Mode : indique si on en filtrage sur expression ou pas
            //     e.SigForm : SigForm à partir de la quelle la filtrage a été démarré

            // comment annuler le filtrage en cours ?
            if (MercatorUi.Dialogs.AnswerYesNo("Voulez-vous annuler le filtrage ?"))
            {
                e.WhereClause = ""; // en remettant à blanc WhereClause, on annule le fitrage en cours
                return;
            }

            // retirer le filtre sur S_ID_RAYON : cette partie de la clause where est de la forme " and (STOCK.S_ID_RAYON='ABCDEFGHIJ')"
            if (e.WhereClause.Contains("STOCK.S_ID_RAYON"))
            {
                string s_id_rayon = Api.StrExtract(e.WhereClause, "STOCK.S_ID_RAYON='", "')");
                e.WhereClause = e.WhereClause.Replace(" and (STOCK.S_ID_RAYON='" + s_id_rayon + "')", "");
            }
        }
    }
}