using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using MercatorApi;
using MercatorController;
using System.Windows.Forms;
using MercatorExtensions;
using MercatorUi;
using System.Data.SqlClient;

// <CompileWithRoslyn />

namespace MercatorUi.MovableControls.ButtonsCodes
{
    public static class Script
    {
        public static void Exec(MercatorUi.MovableControls.MovableButton clickedButton)
        {
            // enter your customized code here
            Forms.Billing.BillingForm billingForm = (Forms.Billing.BillingForm)clickedButton.Form;
            string peppol_response = Api.StrExtract(billingForm.BillingEngine.PiedsVRecord.PEPPOL_RESPONSE, "<Ibanity>", "</Ibanity>");
            if (peppol_response == "")
            {
                MercatorUi.Dialogs.Stop("Ce document n'a jamais été envoyé dans le réseau Peppol !");
                return;
            }
            MercatorUi.Ibanity.CreatePeppolInvoiceResponse createPeppolInvoiceResponse = Api.JsonConvertDeserializeObject<MercatorUi.Ibanity.CreatePeppolInvoiceResponse>(peppol_response);
            MercatorUi.Ibanity.GetPeppolInvoiceResponse r = MercatorUi.Ibanity.PeppolInvoiceUploadStatus(createPeppolInvoiceResponse.data.id, out string error);
            if (error != null)
                Dialogs.Stop(error);
            else
                Dialogs.Stop("Statut = " + (r.data.attributes.status == null ? "indéterminé" : r.data.attributes.status)
                    + (!string.IsNullOrEmpty(r.data.attributes.transmissionId) ? "\r\n" + r.data.attributes.transmissionId : "")
                    + ((r.data.attributes.errors != null) && (r.data.attributes.errors.Count > 0) ? "\r\nCode erreur = " + r.data.attributes.errors[0].code + "\r\n" + r.data.attributes.errors[0].detail : "")
                    );
        }
    }
}