public HttpResponseMessage Post() //, [FromBody] string changes), string encryptedClientId { String contentString = Request.Content.ReadAsStringAsync().Result.ToString(); ChangesModel req; string leadGenID = ""; string pageID = ""; int lgid = 0; int clientID = -1; string token = ""; var clientIP = GetClientIp(); #region Handle Request try { req = JSON.SafelyParseJson <ChangesModel>(contentString); if (req.entry[0].changes[0].field != "leadgen") { // This is NOT a Leadgen event, log it? Email.SendEmail("*****@*****.**", "POST on FB API - non-leadgen", "body:" + contentString + " ; field=" + req.entry[0].changes[0].field, true, string.Empty, string.Empty); return(Request.CreateResponse(HttpStatusCode.BadRequest)); } leadGenID = req.entry[0].changes[0].value.leadgen_id; pageID = req.entry[0].changes[0].value.page_id; } catch (Exception ex) { // Log it?? Email.SendEmail("*****@*****.**", "POST EXCEPTION on FB API", "body:" + contentString + " ; LeadGenID=" + leadGenID + " ; PageID = " + pageID, true, string.Empty, string.Empty); return(Request.CreateResponse(HttpStatusCode.BadRequest)); } #endregion var fb = new FacebookAPI("Leads"); #region Database calls using (var dc = new IntegrationsDataContext()) { var page = (from p in dc.Integrations_FacebookPages where p.PageID == pageID && p.AccessRevoked == null select p).FirstOrDefault(); if (page != null) { clientID = (int)page.ClientID; } else { Email.SendEmail("*****@*****.**", "Unable to retrieve Facebook Integration for Page=" + pageID, "Invalid Request at " + DateTime.Now, true, string.Empty, string.Empty); return(Request.CreateResponse(HttpStatusCode.BadRequest)); } page.PageAccessToken = fb.UpdateToken(page.PageAccessToken); token = page.PageAccessToken; var newLeadGen = new Integrations_FacebookLeadGen { ClientID = clientID, LeadGen_ID = leadGenID, PageID = pageID, Posted = DateTime.Now, PostJSON = contentString, RequestIP = clientIP }; dc.Integrations_FacebookLeadGens.InsertOnSubmit(newLeadGen); dc.SubmitChanges(); lgid = newLeadGen.ID; } #endregion #region create LoanTek lead var myLead = fb.GetLeadInfo(leadGenID, token); var loanTekLead = myLead.ToMortgageLead(clientID, true); if (loanTekLead != null) { var newFBLead = new Integrations_FacebookLead { LeadGenID = lgid, LeadID = loanTekLead.LeadId, LeadJSON = contentString }; using (var dc = new IntegrationsDataContext()) { dc.Integrations_FacebookLeads.InsertOnSubmit(newFBLead); dc.SubmitChanges(); } Email.SendEmail("*****@*****.**", "FB API Lead Post Success", "Integrations_FacebookLeads.ID=" + newFBLead.ID.ToString() + " tbl_Leads.LeadID=" + loanTekLead.LeadId.ToString() + "LeadGenID=" + leadGenID + " ; PageID = " + pageID + "<br><br>Body:<br>" + contentString, true, string.Empty, string.Empty); } else { Email.SendEmail("*****@*****.**", "FB Leads - LoanTek Lead creation failure", "body:" + contentString + " ; LeadGenID=" + leadGenID + " ; PageID = " + pageID, true, string.Empty, string.Empty); } #endregion return(Request.CreateResponse(HttpStatusCode.OK, contentString)); }