Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- namespace Terrasoft.Configuration.FacebookWebhookService
- {
- using System;
- using System.CodeDom.Compiler;
- using System.Collections.Generic;
- using System.Collections.ObjectModel;
- using System.Data;
- using System.IO;
- using System.Text;
- using System.Threading.Tasks;
- using System.ServiceModel;
- using System.ServiceModel.Web;
- using System.ServiceModel.Activation;
- using System.ServiceModel.Channels;
- using System.Web;
- using Newtonsoft.Json;
- using Newtonsoft.Json.Linq;
- using Terrasoft.Common;
- using Terrasoft.Common.Json;
- using Terrasoft.Core;
- using Terrasoft.Core.DB;
- using Terrasoft.Core.Entities;
- using Terrasoft.Core.Store;
- using Terrasoft.Nui.ServiceModel;
- using Terrasoft.Nui.ServiceModel.Extensions;
- using Terrasoft.UI.WebControls;
- [ServiceContract]
- [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
- public class FacebookWebhookService
- {
- //obtain user credentials from system settings
- private string GetUserCredentialValueFromSysSettings(UserConnection userConnection, string settingCode) {
- Select sysSettingsSelect = new Select(userConnection).Top(1)
- .Column("TextValue")
- .Column("SysSettingsAlias", "ValueTypeName").As("ValueTypeName")
- .From("SysSettingsValue").As("SysSettingsValueAlias")
- .Join(JoinType.Inner, "SysSettings").As("SysSettingsAlias")
- .On("SysSettingsAlias","Id").IsEqual("SysSettingsValueAlias", "SysSettingsId")
- .Where("Code").IsEqual(new QueryParameter(settingCode)) as Select;
- using (DBExecutor dbExecutor = userConnection.EnsureDBConnection()) {
- using (IDataReader dataReader = sysSettingsSelect.ExecuteReader(dbExecutor)) {
- if (dataReader.Read()) {
- string valueTypeNameValue = dataReader.GetValue(dataReader.GetOrdinal("ValueTypeName")) as string;
- if (valueTypeNameValue == "SecureText") {
- DataValueType dbDataValueType = userConnection.DataValueTypeManager.GetInstanceByName(valueTypeNameValue);
- object secureTextColumnValue = dataReader.GetValue(dataReader.GetOrdinal("TextValue"));
- return dbDataValueType.GetValueForLoad(userConnection, secureTextColumnValue) as string;
- } else {
- return dataReader.GetValue(dataReader.GetOrdinal("TextValue")) as string;
- }
- }
- }
- }
- return null;
- }
- //obtain UserConnection, we'll need it for DB oprations
- private UserConnection _userConnection;
- private UserConnection UserConnection {
- get {
- if (_userConnection != null) {
- return _userConnection;
- }
- if (HttpContext.Current.Session != null) {
- _userConnection = HttpContext.Current.Session["UserConnection"] as UserConnection;
- }
- if (_userConnection == null) {
- var appConnection = HttpContext.Current.Application["AppConnection"] as AppConnection;
- var systemUserConnection = appConnection.SystemUserConnection;
- string WebLeadUserName = GetUserCredentialValueFromSysSettings(systemUserConnection, "WebLeadUserName");
- if (!string.IsNullOrEmpty(WebLeadUserName)) {
- string WebLeadUserPassword = GetUserCredentialValueFromSysSettings(systemUserConnection, "WebLeadUserPassword");
- string workspace = appConnection.SystemUserConnection.Workspace.Name;
- _userConnection = new UserConnection(appConnection);
- _userConnection.Initialize();
- _userConnection.Login(WebLeadUserName, WebLeadUserPassword, workspace, TimeZoneInfo.Utc);
- }
- }
- return _userConnection;
- }
- }
- //enable Headers
- [OperationContract]
- [WebInvoke(Method = "OPTIONS", UriTemplate = "SaveFacebookLeadData")]
- public void GetWebFormLeadDataRequestOptions() {
- var OutgoingResponseHeaders = WebOperationContext.Current.OutgoingResponse.Headers;
- OutgoingResponseHeaders.Add("Access-Control-Allow-Origin", "*");
- OutgoingResponseHeaders.Add("Access-Control-Allow-Methods", "POST");
- OutgoingResponseHeaders.Add("Access-Control-Allow-Headers", "Content-Type, Accept");
- }
- //proceed request
- [OperationContract]
- [WebInvoke(Method = "POST", UriTemplate = "SaveFacebookLeadData",
- BodyStyle = WebMessageBodyStyle.Wrapped, RequestFormat = WebMessageFormat.Json,
- ResponseFormat = WebMessageFormat.Json)]
- public string SaveFacebookLeadData(FormData formData) // request data
- {
- if (UserConnection == null) {
- return string.Empty;
- }
- string requestURL = HttpContext.Current.Request.UrlReferrer.AbsoluteUri;
- //
- // do smth with formData
- //
- //result answer
- WebFormSavingResult resultObject = new WebFormSavingResult();
- resultObject.resultMessage = "Data were catched";
- resultObject.resultCode = 0;
- var CurrentWebOperationContext = WebOperationContext.Current;
- var OutgoingResponseHeaders = CurrentWebOperationContext.OutgoingResponse.Headers;
- var incomingRequestOrigin = CurrentWebOperationContext.IncomingRequest.Headers["Origin"];
- OutgoingResponseHeaders.Add("Access-Control-Allow-Origin", incomingRequestOrigin);
- string result = Terrasoft.Common.Json.Json.Serialize(resultObject);
- return result;
- }
- //classes
- public class FormData
- {
- public string formId
- {
- get;
- set;
- }
- public FormFieldsData[] formFieldsData
- {
- get;
- set;
- }
- }
- public class FormFieldsData
- {
- public string name {
- get;
- set;
- }
- public string value {
- get;
- set;
- }
- }
- public class WebFormSavingResult
- {
- public string resultMessage
- {
- get;
- set;
- }
- public int resultCode
- {
- get;
- set;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement