using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using MercatorApi;
using MercatorExtensions;
using MercatorUi;
using System.Text.RegularExpressions;
using System.Linq;
using MercatorSignPad;
namespace Billing
{
public class Customizer : MercatorSignPad.ISignPadPenguin
{
public SignPadPenguinRet FormDescriptorForOkSign(Form form)
{
MercatorUi.Forms.Billing.BillingForm billingForm = (MercatorUi.Forms.Billing.BillingForm)form;
Dictionary<string, string> dicoNotEmpty = new Dictionary<string, string>
{
{ "NOM", _Divers.Iif_langue(Globals.Langue, "Name", "Naam", "Nom") },
{ "EMAIL", _Divers.Iif_langue(Globals.Langue, "Email", "Email", "Email") },
{ "FONCTION", _Divers.Iif_langue(Globals.Langue, "Function", "Functie", "Fonction") },
{ "NUM_GSM", _Divers.Iif_langue(Globals.Langue, "Mobile", "GSM", "GSM") },
};
foreach (KeyValuePair<string, string> kvp in dicoNotEmpty)
{
if (string.IsNullOrWhiteSpace(billingForm.BillingEngine.PIEDS[kvp.Key].ToString()))
{
return new SignPadPenguinRet
{
CancelMessage = string.Format(_Divers.Iif_langue(Globals.Langue,
"The \"{0}\" field is mandatory!",
"Het veld \"{0}\" is verplicht!",
"Le champ \"{0}\" est obligatoire !"), kvp.Value)
};
}
}
Regex regex = new Regex(@"^\+?[1-9]\d{1,14}$");
if (!regex.IsMatch(billingForm.BillingEngine.PIEDS["NUM_GSM"].ToString()))
{
return new SignPadPenguinRet
{
CancelMessage = _Divers.Iif_langue(Globals.Langue,
"The mobile phone number must start with + and contain only digits!",
"Het GSM nummer moet beginnen met + en mag alleen cijfers bevatten!",
"Le numéro de GSM doit commencer par + et ne contenir que des chiffres !")
};
}
MercatorUi._BaseClasses.SqlFileView sqlFileView = billingForm.MovableControls.Values.OfType<MercatorUi._BaseClasses.SqlFileView>().FirstOrDefault(p => !p.ReadOnly);
if (sqlFileView == null)
return new SignPadPenguinRet { CancelMessage = "No SqlFileView!" };
string signedPdfFileName = string.Format("{0}_{1}_signed.pdf", billingForm.BillingEngine.Journal, billingForm.BillingEngine.PiedsVRecord.DATE.ToShortDateString().Replace("/", "_"));
MercatorSigning.OkSign.FormDescriptor.FormHelper formHelper1 = new MercatorSigning.OkSign.FormDescriptor.FormHelper
{
FieldMarker = "_Signature_",
FieldWidth = 175,
FieldHeight = 70,
FieldSigningOptions = MercatorSigning.OkSign.FormDescriptor.FormHelper.SigningOptionsEnum.Tan | MercatorSigning.OkSign.FormDescriptor.FormHelper.SigningOptionsEnum.Pen,
SignerInfoName = billingForm.BillingEngine.PiedsVRecord.NOM,
SignerInfoMobile = billingForm.BillingEngine.PiedsVRecord.NUM_GSM,
SignerInfoActingAs = billingForm.BillingEngine.PiedsVRecord.FONCTION,
SignerInfoEmail = billingForm.BillingEngine.PiedsVRecord.EMAIL
};
MercatorSigning.OkSign.FormDescriptor formDescriptor = new MercatorSigning.OkSign.FormDescriptor
{
SendToMeEmail = "info@mercator.eu", // pas obligatoire si le mail à utiliser est celui dans le compte OkSign
Logo = "https://www.mercator.eu/assets/images/logo.png", // pas obligatoire si le logo à utiliser est celui dans le compte OkSign
FileName = signedPdfFileName // nom du fichier visible par le signataire. Peut contenir une chaîne libre terminant par .pdf
};
formDescriptor.FormHelpers.Add(formHelper1);
return new SignPadPenguinRet
{
FormDescriptor = formDescriptor,
SignedFileName = Api.AddBS(sqlFileView.BasePath) + signedPdfFileName
};
}
}
}