using System.IO;
using System.Text;
using System.Security.Cryptography;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Json;
namespace ServiceDeskIntegration
{
/// <summary>
/// Class with parameters for outputting Service Desk component
/// </summary>
[DataContract]
public class ServiceDeskParam
{
[DataMember]
public string url { get; set; } // domain name of your TeamWox
[DataMember]
public string sid { get; set; } // hash from the like: keyword + identifier of website user
[DataMember]
public string container { get; set; } // identifier of HTML element (for example, <div>), the list of requests will be displayed in
[DataMember]
public string user_name { get; set; } // name of website user
[DataMember]
public string user_email { get; set; } // e-mail of website user
[DataMember]
public string user_company { get; set; } // name of company of website user
[DataMember]
public int incidents_per_page { get; set; } // number of requests displayed at one page
[DataMember]
public int comments_per_page { get; set; } // number of comments displayed at one page
[DataMember]
public int[] filter_groups { get; set; } // identifiers of service groups at Service Desk in TeamWox
[DataMember]
public int[] filter_products { get; set; } // identifiers of products in Service Desk groups in TeamWox
[DataMember]
public int[] filter_categories { get; set; } // identifiers of categories in Service Desk groups in TeamWox
[DataMember]
public string logo { get; set; } // logo of your company
}
/// <summary>
/// Class with the set of methods for outputting the information
/// </summary>
public class ServiceDeskTools
{
/// <summary>
/// get the MD5 hash for the line
/// </summary>
/// <param name="input">line the hash should be taken from</param>
public static string GetMD5(string input)
{
MD5 hash = MD5.Create();
//--- calculate hash
byte[] retArray = Encoding.Unicode.GetBytes(input);
retArray = hash.ComputeHash(retArray);
//--- form the response line
StringBuilder sBuilder = new StringBuilder();
for(int i = 0;i < retArray.Length;i++)
{
sBuilder.Append(retArray[i].ToString("X2"));
}
//---
return sBuilder.ToString();
}
/// <summary>
/// form the line of JavaScript array with screening special symbols
/// </summary>
/// <param name="param">parameters of Service Desk components</param>
public static string JSON(ServiceDeskParam param)
{
string json;
//--- output paramters in JSOn format
DataContractJsonSerializer serializer = new DataContractJsonSerializer(param.GetType());
using(MemoryStream ms = new MemoryStream())
{
serializer.WriteObject(ms,param);
json = Encoding.UTF8.GetString(ms.ToArray());
}
//---
return json;
}
/// <summary>
/// form parameters of displaying Service Desk Component
/// </summary>
/// <param name="user">user information</param>
public static ServiceDeskParam GetParameters(User user)
{
ServiceDeskParam serviceDesckParam = new ServiceDeskParam();
//--- domain name of your TeamWox
serviceDesckParam.url = "https://team.yourdomain.com";
//--- identification of website user
serviceDesckParam.sid = GetMD5("Change_This_Secret_Word_" + user.ID);
//--- identifier of HTML element HTML (for example, <div>), the list of requests will be displayed in
serviceDesckParam.container = "service_desk";
//--- information about website user
serviceDesckParam.user_name = user.Name;
serviceDesckParam.user_email = user.Email;
serviceDesckParam.user_company = user.Company;
//--- parameters of displaying requests and comments
serviceDesckParam.incidents_per_page = 15;
serviceDesckParam.comments_per_page = 20;
//--- identifiers of groups, products and categories of Service Desk
serviceDesckParam.filter_groups = new[] { 1003,1004,1007 };
serviceDesckParam.filter_products = new[] { 1020,1023 };
serviceDesckParam.filter_categories = new[] { 2003,2007,2011 };
//--- logo of your company
serviceDesckParam.logo = "<img src=\"http://www.yourwebsite.com/company_logo.gif\" title=\"Your Company Name\" alt=\"Your Company Name\"/>";
//---
return serviceDesckParam;
}
}
} |