/
LeadScoreEvaluator.cs
49 lines (45 loc) · 2.38 KB
/
LeadScoreEvaluator.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
using System;
using System.Linq;
using System.Net;
using System.Web;
using Telerik.Sitefinity.Configuration;
using Telerik.Sitefinity.DataIntelligenceConnector.Configuration;
using Telerik.Sitefinity.Personalization;
namespace Sitefinity.Sample.LeadScoreCriteria
{
public class LeadScoreEvaluator : ICriterionEvaluator
{
public bool IsMatch(string settings, IPersonalizationTestContext testContext)
{
var decCookie = HttpContext.Current.Request.Cookies["sf-data-intell-subject"];
if (decCookie != null)
{
//Retrieve the tracking cookie ID from the request
var dataIntelligenceSubject = HttpContext.Current.Request.Cookies["sf-data-intell-subject"].Value;
var address = "https://api.dec.sitefinity.com/analytics/v1/scorings/leads/in";
using (WebClient client = new WebClient())
{
var currentSite = new Telerik.Sitefinity.Multisite.MultisiteContext().CurrentSite;
client.Headers.Add("x-dataintelligence-datacenterkey: " + Config.Get<DigitalExperienceCloudConnectorConfig>().SiteToApiKeyMappings[currentSite.Name].DataCenterApiKey);
client.Headers.Add("x-dataintelligence-datasource: " + Config.Get<DigitalExperienceCloudConnectorConfig>().ApplicationName);
client.Headers.Add("x-dataintelligence-ids: " + settings.Split(new string[] { "--" }, StringSplitOptions.None)[0]);
client.Headers.Add("x-dataintelligence-subject: " + dataIntelligenceSubject);
client.Headers.Add("Authorization: appauth 04C79B5D-3146-7AD2-3FCA-C6966A00C2A2");
client.Headers.Add("x-dataintelligence-contacts:{\"" + Config.Get<DigitalExperienceCloudConnectorConfig>().ApplicationName + "\":[\"" + dataIntelligenceSubject + "\"]}");
try
{
var leads = client.DownloadString(address);
return leads.Contains("\"LevelId\":" + settings.Split(new string[] { "--" }, StringSplitOptions.None)[1] + ",\"PassedOn") ? true : false;
}
catch (Exception e)
{
return false;
}
}
}
else {
return false;
}
}
}
}