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

// <CompileWithRoslyn />

namespace SigCli
{
    public class Customizer : MercatorUi.ICustomizers.IFormValidateCustomizer
    {
        public bool FormValidateCustomize(Form form)
        {
            MercatorUi.Forms.Sig.SigForm sigForm = (MercatorUi.Forms.Sig.SigForm)form;
            if (string.IsNullOrWhiteSpace(sigForm.CliRecord.C_ID) // nouvelle fiche
                || !sigForm.DataSourceRow["c_adresse"].Equals(sigForm.DataSourceRow["c_adresse", DataRowVersion.Original])
                || !sigForm.DataSourceRow["c_codep"].Equals(sigForm.DataSourceRow["c_codep", DataRowVersion.Original])
                || !sigForm.DataSourceRow["c_ville"].Equals(sigForm.DataSourceRow["c_ville", DataRowVersion.Original])
                )
            {
                MercatorUi.Wait.WaitStatic.WaitWindow("Ophalen GPS positie...");
                var latLng = Api.GeoCoderHere("apiKey=XxXz1xXXyyyZZZ12abcdefgh_1234567890azertyuio", sigForm.CliRecord.C_ADRESSE + " " + sigForm.CliRecord.C_CODEP + " " + sigForm.CliRecord.C_VILLE, out string error);
                MercatorUi.Wait.WaitStatic.WaitClear();
                if (latLng == null)
                {
                    MercatorUi.Dialogs.Stop("Ophalen GPS positite : " + error);
                    return false;
                }
                else
                {
                    sigForm.CliRecord.C_LAT = latLng[0];
                    sigForm.CliRecord.C_LONG = latLng[1];
                    return true;
                }
            }
            return true;
        }
    }
}