Segui

Tutorial C#: come inserire il documento Dipendenti di Perfetto

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

  • 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

InsertSample---Form.png

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..."

Impostazioni-riferimento-al-servizio.png

  • inserire il percorso del Web Service
  • digitare il nome del riferimento 
  • premere sul pulsante "Aggiungi riferimento"

Aggiungi-riferimento-Web.png

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);
}

 

Altre domande? Invia una richiesta

Commenti

Powered by Zendesk