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

namespace SigCli
{
    public class Customizer : MercatorUi.ICustomizers.IFormLoadCustomizer, MercatorUi.ICustomizers.IFormClosedCustomizer,
                              MercatorUi.ICustomizers.IStringUpdater
    {
        string MercatorUi.ICustomizers.IStringUpdater.StringUpdate(string stringToModify)
        {
            string id = Api.StrExtract(stringToModify, "/*<ID>", "</ID>*/");
            if (id == "TARCLI")
            {
                stringToModify = stringToModify.Replace(" as s_modele", " as s_modele, stock.s_cle1")
                                               .Replace("tarcli (NOLOCK) where", "tarcli (NOLOCK) left join stock on tarcli.ar_ref = stock.s_id where");
            }
            return stringToModify;
        }

        public void FormLoadCustomize(Form form)
        {
            MercatorUi.Forms.Sig.SigForm sigForm = (MercatorUi.Forms.Sig.SigForm)form;
            MercatorUi.Forms.Sig.SigGrids.TarCli tarCli = sigForm.MovableControls.Values.OfType<MercatorUi.Forms.Sig.SigGrids.TarCli>().FirstOrDefault();
            if (tarCli != null)
                tarCli.AfterColumnsCreated += TarCli_AfterColumnsCreated;
        }

        public void FormClosedCustomize(Form form)
        {
            MercatorUi.Forms.Sig.SigForm sigForm = (MercatorUi.Forms.Sig.SigForm)form;
            MercatorUi.Forms.Sig.SigGrids.TarCli tarCli = sigForm.MovableControls.Values.OfType<MercatorUi.Forms.Sig.SigGrids.TarCli>().FirstOrDefault();
            if (tarCli != null)
                tarCli.AfterColumnsCreated -= TarCli_AfterColumnsCreated;
        }

        void TarCli_AfterColumnsCreated(object sender, EventArgs e)
        {
            MercatorUi.Forms.Sig.SigGrids.TarCli tarCli = (MercatorUi.Forms.Sig.SigGrids.TarCli)sender;
            tarCli.Grid.Columns["S_CLE1"].HeaderText = "Code";
            tarCli.Grid.Columns["S_CLE1"].ReadOnly = true;
            tarCli.Grid.Columns["S_CLE1"].DisplayIndex = 2;
            DataTable dt = (DataTable)tarCli.Grid.DataSource;
            dt.Columns["S_CLE1"].ReadOnly = true;
        }
    }
}