using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using System.Security.Cryptography;


namespace WindowsApplication7

{

   // Libreria de WebServices

   using org.plataforma.www;


   public partial class Form1 : Form

   {

       private Aula aula;


       public Form1()

       {

           InitializeComponent();

           // Inicializo el Aula

           aula = new Aula();


           // Remplazo la url del Web Services

           aula.Url = "http://www.plataforma.org/soap/";


       }


       private void cmdLoginBasicoUsuario_Click(object sender, EventArgs e)

       {

           try

           {

               /*

                * Envio el id_usuario, clave y id_grupo.

                * En caso de que el id_grupo sea vacío,

                * propone la segunda pantalla del login

                */

               String result = aula.autenticar_usuario(

                   txtNombreUsuario.Text,

                   CalculateMD5Hash(txtNombreUsuario.Text),

                   txtIdGrupo.Text

               );

               MessageBox.Show(result); // hacer algo con la url

           }

           catch (System.Web.Services.Protocols.SoapException ex)

           {

               MessageBox.Show(ex.Code.Name);

           }

       }


       private void cmdLoginConfiableUsuario_Click(object sender, EventArgs e)

       {

           try

           {

               /*

                * Envio el id_usuario y id_grupo. En caso de que el

                * id_grupo sea vacío, propone la segunda pantalla

                * del login

                */

               String result = aula.autenticar_usuario_confiable(

                   txtNombreUsuario.Text,

                   txtIdGrupo.Text

               );

               MessageBox.Show(result);

           }

           catch( System.Web.Services.Protocols.SoapException ex )

           {

               MessageBox.Show( ex.Code.Name );

           }

       }


       private string CalculateMD5Hash(string strToEncrypt)

       {

           System.Text.UTF8Encoding ue = new System.Text.UTF8Encoding();

           byte[] bytes = ue.GetBytes(strToEncrypt);


           // encrypt bytes

           System.Security.Cryptography.MD5CryptoServiceProvider md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();

           byte[] hashBytes = md5.ComputeHash(bytes);


           // Convert the encrypted bytes back to a string (base 16)

           string hashString = "";


           for (int i = 0; i < hashBytes.Length; i++)

           {

               hashString += Convert.ToString(hashBytes[i], 16).PadLeft(2, '0');

           }


           return hashString.PadLeft(32, '0');

       }

   }

}