Пример #1
0
        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));
        }