public HttpResponseMessage LeadGen()
        {
            HttpResponseMessage msg = new HttpResponseMessage();

            try
            {
                if (HttpContext.Current.Request.HttpMethod == "GET")
                {
                    NameValueCollection nvcData = HttpUtility.ParseQueryString(Request.RequestUri.Query);
                    string ch = nvcData["hub.challenge"];
                    Logger.Current.Informational(ch);
                    Dictionary <string, string> queryStrings = new Dictionary <string, string>();

                    if (!string.IsNullOrEmpty(ch))
                    {
                        msg.Content = new StringContent(ch);
                    }
                }
                else if (HttpContext.Current.Request.HttpMethod == "POST")
                {
                    HttpContent     requestContent = Request.Content;
                    string          jsonContent    = requestContent.ReadAsStringAsync().Result;
                    var             parsed         = JObject.Parse(jsonContent);
                    FacebookLeadGen leadGen        = new FacebookLeadGen();
                    var             entryObj       = parsed.SelectToken("entry").Value <IEnumerable <object> >();
                    Logger.Current.Informational("json content:" + jsonContent);
                    if (entryObj != null && entryObj.Any())
                    {
                        var changesObj = parsed.SelectToken("entry[0].changes").Value <IEnumerable <object> >();
                        if (changesObj != null && changesObj.Any())
                        {
                            try
                            {
                                leadGen.AdGroupId = parsed.SelectToken("entry[0].changes[0].value.adgroup_id").Value <long>();
                                leadGen.AdID      = parsed.SelectToken("entry[0].changes[0].value.ad_id").Value <long>();
                            }
                            catch
                            {
                                leadGen.AdGroupId = 0;
                                var adId = ConfigurationManager.AppSettings["FacebookAdID"].ToString();
                                leadGen.AdID = long.Parse(adId);
                            }
                            leadGen.FormID    = parsed.SelectToken("entry[0].changes[0].value.form_id").Value <long>();
                            leadGen.LeadGenID = parsed.SelectToken("entry[0].changes[0].value.leadgen_id").Value <long>();
                            leadGen.PageID    = parsed.SelectToken("entry[0].changes[0].value.page_id").Value <long>();
                            leadAdapterService.InsertFacebookLeadGen(new InsertFacebookLeadGenRequest()
                            {
                                FacebookLeadGen = leadGen
                            });
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.Current.Error("error in facebook webhook", ex);
            }

            return(msg);
        }
Beispiel #2
0
 public void UpdateFacebookLeadGen(FacebookLeadGen fbLead)
 {
     if (fbLead != null)
     {
         var db = ObjectContextFactory.Create();
         FacebookLeadGenDb leadGen = Mapper.Map <FacebookLeadGen, FacebookLeadGenDb>(fbLead);
         db.Entry(leadGen).State = EntityState.Modified;
         db.SaveChanges();
     }
 }
Beispiel #3
0
 public void InsertFacebookLeadGen(FacebookLeadGen fbLead)
 {
     if (fbLead != null)
     {
         var db = ObjectContextFactory.Create();
         FacebookLeadGenDb leadGen = Mapper.Map <FacebookLeadGen, FacebookLeadGenDb>(fbLead);
         leadGen.CreatedDate = DateTime.UtcNow;
         db.FacebookLeadGen.Add(leadGen);
         db.SaveChanges();
     }
 }
Beispiel #4
0
        private FacebookLead GetData(FacebookLeadGen fbLead)
        {
            Logger.Current.Informational("Request received for fetching data from fb");
            string pageAccessToken = fbLead.PageAccessToken;   // GetExtendedPageAccessToken(fbLead.PageAccessToken);
            string leadGenID       = fbLead.LeadGenID.ToString();
            var    fb = new FacebookClient(pageAccessToken);
            string exceptionMessage = string.Empty;

            fb.AppId     = FacebookAppID;
            fb.AppSecret = FacebookAppSecret;
            FacebookLead lead = new FacebookLead();

            try
            {
                var response = (JsonObject)fb.Get(leadGenID);
                if (response != null)
                {
                    var id        = response["id"];
                    var date      = response["created_time"];
                    var fieldDate = (JsonArray)response["field_data"];
                    List <FacebookFieldData> fieldValues = new List <FacebookFieldData>();
                    if (fieldDate != null)
                    {
                        foreach (var pair in fieldDate)
                        {
                            FacebookFieldData fieldData = new FacebookFieldData();
                            var name   = ((JsonObject)pair)["name"];
                            var values = ((JsonObject)pair)["values"];
                            if (values != null)
                            {
                                var valuesObj = (JsonArray)values;
                                var val       = valuesObj[0];
                                fieldData.Name   = name.ToString();
                                fieldData.Values = new String[] { val.ToString() };
                            }
                            fieldValues.Add(fieldData);
                        }
                    }

                    lead.ID            = id.ToString();
                    lead.CreatedTime   = DateTime.Parse(date.ToString());
                    lead.FieldData     = fieldValues;
                    fbLead.IsProcessed = true;
                    fbLead.Remarks     = "Success";
                    fbLead.RawData     = response.ToString();
                    leadAdaptersRepository.UpdateFacebookLeadGen(fbLead);
                }
            }
            catch (FacebookOAuthException ex)
            {
                Logger.Current.Error("An error occured while fetching lead data from Facebook", ex);
                exceptionMessage = ex.Message;
                leadAdaptersRepository.UpdateLeadAdapterStatus(leadAdapterAndAccountMap.Id, LeadAdapterErrorStatus.Error, LeadAdapterServiceStatus.TokenExpired);
                SendErrorEmail("Exception while processing data from " + leadAdapterAndAccountMap.LeadAdapterTypeID.ToString() + " LeadAdapter", "Exception details" + ex.Message);
            }
            catch (FacebookApiException ex)
            {
                Logger.Current.Error("An error occured while fetching lead data from Facebook", ex);
                exceptionMessage = ex.Message;
                leadAdaptersRepository.UpdateLeadAdapterStatus(leadAdapterAndAccountMap.Id, LeadAdapterErrorStatus.Running, LeadAdapterServiceStatus.InvalidRequest);
            }
            finally
            {
                fbLead.Remarks     = exceptionMessage;
                fbLead.IsProcessed = true;
                leadAdaptersRepository.UpdateFacebookLeadGen(fbLead);
            }
            return(lead);
        }