Sommario
Nel presente articolo sono descritti i passi da seguire per poter creare un esempio di un'applicazione scritta in linguaggio C# che consente di effettuare l'autenticazione al prodotto Perfetto e l'inserimento del documento, Dipendenti, utilizzando la tecnologia Magic Link.
Per facilitare la lettura dell'articolo di seguito un indice delle sezioni dell'articolo:
- Creazione del progetto
- Creazione della maschera di login e inserimento
- Connessione ai Web Service di Perfetto
- Autenticazione
- Invio dati dipendente a Perfetto
- Disconnessione
- Aprire "Visual Studio", in questo esempio è stato utilizzato Visual Studio 2010
- Selezionare "Nuovo progetto..."
- Scegliere "Applicazione Windows Form"
- Inserire il nome del progetto "InsertSample"
Creazione della maschera di login e inserimento
Nel seguente sezione è mostrato come creare l'interfaccia grafica dell'applicazione. Essa è divisa in due parti, una rivolta alla gestione dell'autenticazione e una dedicata all'inserimento del documento.
I passi da seguire per realizzare l'interfaccia sono:
- Assegnare il nome, Insert Employee, alla proprietà Text della Form.
- Inserire i campi relativi alla fase di login:
- GroupBox per Login
- TextBox per User
- TextBox per Password
- TextBox per Company
- TextBox per Producer Key
- button per richiedere la login
- Inserire i campi relativi alla fase di inserimento del dipendente:
- GroupBox per Employee
- TextBox per Code
- TextBox per Name
- TextBox per Address
- TextBox per City
- TextBox per ZipCode
- TextBox per Telephone
- button per inviare i dati del dipendente a Perfetto
Connessione ai Web Service di Perfetto
Per poter accedere ai metodi web che consentono all'utente di registrarsi e inserire i dati in Perfetto, è necessario aggiungere i riferimenti ai Web Service di Perfetto.
Le operazioni da seguire per aggiungere un riferimento web sono le seguenti:
- posizionarsi sul nodo del progetto dell'albero dell'"Esplora soluzioni"
- fare click con il tasto destro del mouse
- selezionare la voce "Aggiungi riferimento al servizio"
- premere il pulsante "Avanzate..."
- fare click sul pulsante "Aggiungi riferimento Web..."
- inserire il percorso del Web Service
- digitare il nome del riferimento
- premere sul pulsante "Aggiungi riferimento"
Per l'esempio è necessario inserire il riferimento per LoginManager e TbServices.
Una volta inseriti i riferimenti ai Web Service è necessario creare una loro istanza nel seguente modo:
private LoginManager.MicroareaLoginManager aLogManager = new LoginManager.MicroareaLoginManager();
private TbServices.TbServices aTbServices = new TbServices.TbServices();
Autenticazione
Per effettuare l'autenticazione al sistema è utilizzato il metodo web LoginCompact del LoginManager.
Nel seguente codice è mostrato come recuperare i valori dei campi relativi alla login e passare tali valori al metodo LoginCompact per ottenere il codice di autenticazione:
private void btnLogin_Click(object sender, EventArgs e)
{
string authToken = string.Empty;
string user = textUser.Text;
string company = textCompany.Text;
string password = textPassword.Text;
string prodKey = textProdKey.Text;
try
{
int aResult = aLogManager.LoginCompact(ref user, ref company,
password, prodKey, false, out authToken);
if (aResult == 0)
{
authenticationToken = authToken;
textUser.Enabled = false;
textPassword.Enabled = false;
textCompany.Enabled = false;
textProdKey.Enabled = false;
btnLogin.Enabled = false;
tbxEmployeeCode.Enabled = true;
tbxEmployeeName.Enabled = true;
tbxAddress.Enabled = true;
tbxCity.Enabled = true;
tbxZipCode.Enabled = true;
tbxTelephone.Enabled = true;
btnInsert.Enabled = true;
}
else
MessageBox.Show(string.Format("Error occurred, code: {0}", aResult));
}
catch (Exception logExc)
{
MessageBox.Show(string.Format("Exception occurred: {0}", logExc.Message));
}
}
Se la fase di autenticazione va a buon fine viene salvato il codice di autenticazione e disabilitati i campi legati alla login e abilitati campi relativi all'inserimento.
Invio dati dipendente a Perfetto
Per inviare a Perfetto i dati di un documento si deve utilizzare il metodo SetData del Web Service TbService e passare ad esso una stringa xml, formattata secondo il profilo di esportazione, contenente i dati del documento.
Nel codice seguente è mostrato come creare la stringa xml dei dati da inviare, come invocare il metodo SetData impostando i parametri in modo corretto e come mostrare il parametro di output del metodo:
string aXMLData= "<?xml version=\"1.0\"?>" +
"<maxs:Dipendenti tbNamespace=\"Document.ImpiantiNet.Core.INCore.Dipendenti\ " +
"xTechProfile=\"DefaultLight\" " +
"xmlns:maxs=\"http://www.microarea.it/Schema/2004/Smart/" +
"ImpiantiNET/Core/Dipendenti/Standard/DefaultLight.xsd\">" +
"<maxs:Data>" +
"<maxs:Employee master=\"true\">" +
"<maxs:Employee>" + tbxEmployeeCode.Text + "</maxs:Employee>" +
"<maxs:Name>" + tbxEmployeeName.Text + "</maxs:Name>" +
"<maxs:Address>" + tbxAddress.Text + "</maxs:Address>" +
"<maxs:City>" + tbxCity.Text + "</maxs:City>" +
"<maxs:ZipCode>" + tbxZipCode.Text + "</maxs:ZipCode>" +
"<maxs:Telephone1>" + tbxTelephone.Text + "</maxs:Telephone1>" +
"</maxs:Employee>" +
"</maxs:Data>" +
"</maxs:Dipendenti>";
DateTime applicationDate= System.DateTime.Now;
string aResult = string.Empty;
try
{
if (aTbServices.SetData(authenticationToken, aXMLData, applicationDate, 1, false, out aResult))
{
XmlDocument doc = new XmlDocument();
doc.LoadXml(aResult);
XmlNamespaceManager xmlNsManager = new XmlNamespaceManager(doc.NameTable);
xmlNsManager.AddNamespace(doc.DocumentElement.Prefix, doc.DocumentElement.NamespaceURI);
XmlNode emplNode = doc.SelectSingleNode("//maxs:Dipendenti//maxs:Data//
maxs:Employee//maxs:Employee", xmlNsManager);
string employee = emplNode.InnerText;
MessageBox.Show(string.Format("Insert Employee!\n {0}", employee));
tbxEmployeeCode.Clear();
tbxEmployeeName.Clear();
tbxAddress.Clear();
tbxCity.Clear();
tbxZipCode.Clear();
tbxTelephone.Clear();
}
else
{
XmlDocument doc = new XmlDocument();
doc.LoadXml(aResult);
XmlNamespaceManager xmlNsManager = new XmlNamespaceManager(doc.NameTable);
xmlNsManager.AddNamespace(doc.DocumentElement.Prefix, doc.DocumentElement.NamespaceURI);
XmlNodeList errors = doc.SelectNodes("//maxs:Dipendenti//maxs:Diagnostic//
maxs:Errors//maxs:Error", xmlNsManager);
string strMessage = string.Empty;
foreach (XmlNode node in errors)
{
strMessage += node.SelectSingleNode("maxs:Message", xmlNsManager).InnerText;
}
MessageBox.Show(string.Format("Not posted, some error occurred!\n {0}", strMessage));
}
}
catch (Exception exc)
{
MessageBox.Show(string.Format("Exception occurred: {0}", exc.Message));
}
Disconnessione
Alla chiusura dell'applicazione è necessario disconnettere l'utente dal sistema invocando il metodo LogOff.
Di seguito il codice per eseguire la disconnessione:
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (!string.IsNullOrEmpty(authenticationToken))
aLogManager.LogOff(authenticationToken);
}
Commenti