Exemple du composant public dans .NET

Dans ce paragraphe on donne l'exemple détaillé de la présentation du composant public du module "Servicedesk" avec l'utilisation .NET Framework 3.5 ou plus haut. Trois fichiers se sont utilisés pour la réalisation:

ServiceDesk.aspx - le fichier principal avec lequel on fait l'appel du composant public du module "Servicedesk".

User.cs - un exemple du fichier qui contient les classes de l'information sur les utilisateurs.

ServiceDesk.cs - le fichier auxiliaire des classes avec les paramètres pour la sortie du composant public "Servicedesk".

Pour le travail selon un tel schéma dans le projet Visual Studio il faut ajouter les références (References) à la bibliothèque "System.Runtime.Serialization" et "System.ServiceModel.Web".

ServiceDesk.aspx

<%@ Import Namespace="ServiceDeskIntegration"%>
    <%
        //--- ici il est nécessaire de recevoir indépendamment l'information sur l'utilisateur:
        User user = new User { ID = 111,Name = "testName",Email = "test@email.com",Company = "testCompany" };
        //--- formerons les paramètres pour le composant Servicedesk
        ServiceDeskParam serviceDeskParam = ServiceDeskTools.GetParameters(user);
    %>
    <script type="text/javascript">
       var tw_servicedesk_params=<%= ServiceDeskTools.JSON(serviceDeskParam) %>;
    </script>

User.cs

  //--- ............
  //--- Votre code
  //--- ............
  /// <summary>
  /// L'exemple de la classe avec les données sur l'utilisateur 
  /// </summary>
  public class User
    {
    public int ID { get; set; }              // l'identificateur
    public string Name { get; set; }         // le nom
    public string Email { get; set; }        // l'e-mail
    public string Company { get; set; }      // le nom de la compagnie
    }
  //--- ............
  //--- Votre code
  //--- ............

ServiceDesk.cs

using System.IO;
using System.Text;
using System.Security.Cryptography;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Json;
namespace ServiceDeskIntegration
  {
  /// <summary>
  /// La classe avec les paramètres pour la sortie du composant Servicedesk
  /// </summary>
  [DataContract]
  public class ServiceDeskParam
    {
    [DataMember]
    public string url { get; set; }               // le nom de domaine de votre TeamWox
    [DataMember]
    public string sid { get; set; }               // la cache de la ligne le mot-clé +
    l'identificateur de l'utilisateur du site Web
    [DataMember]
    public string container { get; set; }         //  l'identificateur de l'élément HTML (par exemple,
    <div>), où sera affichée la liste des demandes
    [DataMember]
    public string user_name { get; set; }         // le nom de l'utilisateur du site Web
    [DataMember]
    public string user_email { get; set; }        // l'e-mail de l'utilisateur du site web
    [DataMember]
    public string user_company { get; set; }      //le nom de la compagnie de l'utilisateur du site Web
    [DataMember]
    public int incidents_per_page { get; set; }   // le nombre des demandes affichées sur une 
    page
    [DataMember]
    public int comments_per_page { get; set; }    // le nombre des commentaires affichés sur
    une page
    [DataMember]
    public int[] filter_groups { get; set; }      // les identificateurs des groupes de service
    Servicedesk TeamWox
    [DataMember]
    public int[] filter_products { get; set; }    // les identificateurs des produits des groupes
    de service Servicedesk TeamWox
    [DataMember]
    public int[] filter_categories { get; set; }  // les identificateurs des catégories des groupes
    de service Servicedesk TeamWox
    [DataMember]
    public string logo { get; set; }              // le logotype de votre compagnie
    }
  /// <summary>
  ///La classe avec l'ensemble de la méthode pour la sortie de l'information
  /// </summary>
  public class ServiceDeskTools
    {
    /// <summary>
    /// recevrons la cache MD5 pour la ligne
    /// </summary>
    /// <param name="input">la ligne d'où il faut prendre la cache</param>
    public static string GetMD5(string input)
      {
      MD5 hash = MD5.Create();
      //--- calculons la cache
      byte[] retArray = Encoding.Unicode.GetBytes(input);
      retArray = hash.ComputeHash(retArray);
      //--- formons la ligne de la réponse
      StringBuilder sBuilder = new StringBuilder();
      for(int i = 0;i < retArray.Length;i++)
        {
        sBuilder.Append(retArray[i].ToString("X2"));
        }
      //---
      return sBuilder.ToString();
      }
    /// <summary>
    /// formerons la ligne du massif JavaScript avec le blindage des symboles spéciales
    /// </summary>
    /// <param name="param">les paramètres du composant de Servicedesk</param>
    public static string JSON(ServiceDeskParam param)
      {
      string json;
      //--- déduirons les paramètres dans le format JSON
      DataContractJsonSerializer serializer = new DataContractJsonSerializer(param.GetType());
      using(MemoryStream ms = new MemoryStream())
        {
        serializer.WriteObject(ms,param);
        json = Encoding.UTF8.GetString(ms.ToArray());
        }
      //---
      return json;
      }
    /// <summary>
    /// formerons les paramètres de l'affichage du composant de Servicedesk
    /// </summary>
    /// <param name="user">l'information sur l'utilisateur</param>
    public static ServiceDeskParam GetParameters(User user)
      {
      ServiceDeskParam serviceDesckParam = new ServiceDeskParam();
      //--- le nom de domaine de votre TeamWox
      serviceDesckParam.url = "https://team.yourdomain.com";
      //--- l'identification de l'utilisateur du site Web
      serviceDesckParam.sid = GetMD5("Change_This_Secret_Word_" + user.ID);
      //--- l'identificateur de l'élément HTML (par exemple, <div>), dans qui s'affichera
      la liste des demandes
      serviceDesckParam.container = "service_desk";
      //--- l'information de l'utilisateur du site Web
      serviceDesckParam.user_name    = user.Name;
      serviceDesckParam.user_email   = user.Email;
      serviceDesckParam.user_company = user.Company;
      //--- les paramètres des sorties des demandes et les commentaires à la page
      serviceDesckParam.incidents_per_page = 15;
      serviceDesckParam.comments_per_page  = 20;
      //--- les identificateurs des groupes, des produits, des catégories de Servicedesk
      serviceDesckParam.filter_groups     = new[] { 1003,1004,1007 };
      serviceDesckParam.filter_products   = new[] { 1020,1023 };
      serviceDesckParam.filter_categories = new[] { 2003,2007,2011 };
      //--- le logotype de votre compagnie
      serviceDesckParam.logo = "<img src=\"http://www.yourwebsite.com/company_logo.gif\"
      title=\"Your Company Name\" alt=\"Your Company Name\"/>";
      //---
      return serviceDesckParam;
      }
    }
  }