using System;
using System.Collections.Generic;
using System.Text;
using System.Linq;
using System.Windows.Forms;
using MercatorApi;
using MercatorExtensions;
using MercatorUi;
using System.Drawing;
using MercatorUi.GridPro;


// <CompileWithRoslyn />

namespace HistCli
{
    public class Customizer : MercatorUi.ICustomizers.IGridUnifiedCustomizer
    {
        public void GridUnifiedCustomize(GridUnifiedCustomizerContainer gridUnifiedCustomizerContainer)
        {
            gridUnifiedCustomizerContainer.StringUpdater = (reqSql) =>
            {
                string journal = Api.StrExtract(reqSql, "pieds_v.journal='", "'").TrimEnd();
                if (journal == "VEN")
                    reqSql = reqSql.Replace("date,", "date,echeance,");

                gridUnifiedCustomizerContainer.GridUpdater = () =>
                {
                    if ((journal == "VEN") && !gridUnifiedCustomizerContainer.Grid.Columns.Contains("echeance"))
                    {
                        gridUnifiedCustomizerContainer.Grid.Columns.Add("echeance", "Echéance");
                        gridUnifiedCustomizerContainer.Grid.Columns["echeance"].Width = 85;
                        gridUnifiedCustomizerContainer.Grid.Columns["echeance"].DataPropertyName = "echeance";
                        gridUnifiedCustomizerContainer.Grid.Columns["echeance"].DefaultCellStyle.Format = Api.Iif(MercatorUi.Globals.DateMDY, "MM/dd/yyyy", "dd/MM/yyyy");
                        gridUnifiedCustomizerContainer.Grid.CellFormatting += Grid_CellFormatting;
                    }
                    else if ((journal != "VEN") && gridUnifiedCustomizerContainer.Grid.Columns.Contains("echeance"))
                    {
                        gridUnifiedCustomizerContainer.Grid.CellFormatting -= Grid_CellFormatting;
                        gridUnifiedCustomizerContainer.Grid.Columns.Remove("echeance");
                    }
                };

                gridUnifiedCustomizerContainer.PrefuserKeyCompl = journal == "VEN" ? journal : "";

                gridUnifiedCustomizerContainer.Dispose = () =>
                {
                    gridUnifiedCustomizerContainer.Grid.CellFormatting -= Grid_CellFormatting;
                };
                
                return reqSql;
            };
        }

        void Grid_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
        {
            DataGridView grid = (DataGridView)sender;
            if ((grid.Columns[e.ColumnIndex].Name == "echeance") && (grid.Rows[e.RowIndex].Cells["echeance"].Value != DBNull.Value))
            {
                if (Convert.ToDateTime(e.Value) < DateTime.Now)
                    e.CellStyle.Font = new Font(e.CellStyle.Font, FontStyle.Bold);
            }
        }
    }
}