Beispiel #1
0
        public UpdateLeadAdapterResponse UpdateFacebookLeadAdapter(UpdateLeadAdapterRequest request)
        {
            Logger.Current.Verbose("Request received to update Facebook lead adapter.");

            try
            {
                LeadAdapterAndAccountMap leadAdapter = Mapper.Map <LeadAdapterViewModel, LeadAdapterAndAccountMap>(request.LeadAdapterViewModel);

                bool isDuplicate = leadAdaptersRepository.IsDuplicateFacebookAdapter(request.AccountId, leadAdapter.Id, leadAdapter.FacebookLeadAdapterName);
                if (isDuplicate)
                {
                    throw new UnsupportedOperationException("[|LeadAdapter with same name already exists.|]");
                }

                leadAdaptersRepository.Update(leadAdapter);
                unitOfWork.Commit();
                GetFacebookAppResponse fbResponse = this.GetFacebookApp(new GetFacebookAppRequest()
                {
                    AccountId = request.AccountId
                });
                string extendedToken = this.GetExtendedPageAccessToken(leadAdapter.FacebookLeadAdapter.UserAccessToken, leadAdapter.FacebookLeadAdapter.PageID, fbResponse.FacebookAppID, fbResponse.FacebookAppSecret);
                leadAdapter.FacebookLeadAdapter.PageAccessToken = !string.IsNullOrEmpty(extendedToken) ? extendedToken : leadAdapter.FacebookLeadAdapter.PageAccessToken;


                leadAdaptersRepository.UpdateFacebookLeadAdapter(leadAdapter.FacebookLeadAdapter);
            }
            catch (Exception ex)
            {
                Logger.Current.Error("An error occured while updating facebook lead adapter", ex);
            }
            Logger.Current.Informational("Leadadapter updated successfully.");
            return(new UpdateLeadAdapterResponse());
        }
Beispiel #2
0
        public GetFacebookAppResponse GetFacebookApp(GetFacebookAppRequest request)
        {
            GetFacebookAppResponse response = new GetFacebookAppResponse();

            if (request.AccountId != 0)
            {
                Account account = leadAdaptersRepository.GetFacebookApp(request.AccountId);
                if (account != null)
                {
                    response.FacebookAppID     = account.FacebookAPPID;
                    response.FacebookAppSecret = account.FacebookAPPSecret;
                }
            }
            return(response);
        }
Beispiel #3
0
        public InsertLeadAdapterResponse InsertFacebookLeadAdapter(InsertLeadAdapterRequest request)
        {
            Logger.Current.Verbose("Request received to insert Facebook lead adapter.");
            InsertLeadAdapterResponse response = new InsertLeadAdapterResponse();
            int newLeadAdapterID = 0;

            try
            {
                LeadAdapterViewModel vm = request.LeadAdapterViewModel;
                int AccountID           = vm.AccountID;

                bool isDuplicate = leadAdaptersRepository.IsDuplicateFacebookAdapter(AccountID, vm.LeadAdapterAndAccountMapId, vm.FacebookLeadAdapterName);
                if (isDuplicate)
                {
                    throw new UnsupportedOperationException("[|LeadAdapter with same name already exists.|]");
                }


                LeadAdapterAndAccountMap leadAdapter = Mapper.Map <LeadAdapterViewModel, LeadAdapterAndAccountMap>(vm);
                leadAdaptersRepository.Insert(leadAdapter);
                LeadAdapterAndAccountMap newLeadAdapter = unitOfWork.Commit() as LeadAdapterAndAccountMap;
                newLeadAdapterID = newLeadAdapter.Id;
                leadAdapter.FacebookLeadAdapter.LeadAdapterAndAccountMapID = newLeadAdapter.Id;

                GetFacebookAppResponse fbResponse = this.GetFacebookApp(new GetFacebookAppRequest()
                {
                    AccountId = AccountID
                });
                string extendedToken = this.GetExtendedPageAccessToken(leadAdapter.FacebookLeadAdapter.UserAccessToken, leadAdapter.FacebookLeadAdapter.PageID, fbResponse.FacebookAppID, fbResponse.FacebookAppSecret);
                leadAdapter.FacebookLeadAdapter.PageAccessToken = !string.IsNullOrEmpty(extendedToken) ? extendedToken : leadAdapter.FacebookLeadAdapter.PageAccessToken;

                leadAdaptersRepository.InsertFacebookLeadAdapter(leadAdapter.FacebookLeadAdapter);

                var hasFacebookFields = leadAdaptersRepository.HasFacebookFields(AccountID);
                if (!hasFacebookFields)
                {
                    CustomFieldTab customfieldtab = customfieldRepository.GetLeadAdapterCustomFieldTab(AccountID);
                    if (customfieldtab == null)
                    {
                        InsertCustomFieldTabRequest      customfieldtabrequest = new InsertCustomFieldTabRequest();
                        CustomFieldTabViewModel          tab     = new CustomFieldTabViewModel();
                        CustomFieldSectionViewModel      section = new CustomFieldSectionViewModel();
                        GetLeadAdapterCustomFieldRequest getleadadaptercustomfieldsrequest = new GetLeadAdapterCustomFieldRequest();
                        getleadadaptercustomfieldsrequest.AccountId       = AccountID;
                        getleadadaptercustomfieldsrequest.LeadAdapterType = vm.LeadAdapterType;
                        GetLeadAdapterCustomFieldResponse getleadadaptercustomfieldsresponse = customfieldService.GetLeadAdapterCustomFieldsByType(getleadadaptercustomfieldsrequest);
                        section.CustomFields = getleadadaptercustomfieldsresponse.CustomFields.ToList();
                        section.Name         = vm.LeadAdapterType.ToString();
                        section.StatusId     = CustomFieldSectionStatus.Active;

                        tab.AccountId        = AccountID;
                        tab.Name             = "Lead Adapter Custom Fields";
                        tab.IsLeadAdapterTab = true;
                        tab.Sections         = new List <CustomFieldSectionViewModel>();
                        tab.Sections.Add(section);
                        tab.StatusId = CustomFieldTabStatus.Active;
                        customfieldtabrequest.CustomFieldTabViewModel = tab;
                        customfieldService.InsertCustomFieldTab(customfieldtabrequest);
                    }
                    else
                    {
                        UpdateCustomFieldTabRequest      customfieldtabrequest = new UpdateCustomFieldTabRequest();
                        CustomFieldTabViewModel          tab     = Mapper.Map <CustomFieldTab, CustomFieldTabViewModel>(customfieldtab);
                        CustomFieldSectionViewModel      section = new CustomFieldSectionViewModel();
                        GetLeadAdapterCustomFieldRequest getleadadaptercustomfieldsrequest = new GetLeadAdapterCustomFieldRequest();
                        getleadadaptercustomfieldsrequest.AccountId       = AccountID;
                        getleadadaptercustomfieldsrequest.LeadAdapterType = vm.LeadAdapterType;
                        GetLeadAdapterCustomFieldResponse getleadadaptercustomfieldsresponse = customfieldService.GetLeadAdapterCustomFieldsByType(getleadadaptercustomfieldsrequest);
                        section.CustomFields = getleadadaptercustomfieldsresponse.CustomFields.ToList();
                        section.Name         = vm.LeadAdapterType.ToString();
                        section.StatusId     = CustomFieldSectionStatus.Active;
                        tab.Sections.Add(section);
                        tab.StatusId = CustomFieldTabStatus.Active;
                        customfieldtabrequest.CustomFieldTabViewModel = tab;
                        customfieldService.UpdateCustomFieldTab(customfieldtabrequest);
                    }
                }

                foreach (Tag tag in leadAdapter.Tags.Where(t => t.Id == 0))
                {
                    Tag savedTag = tagRepository.FindBy(tag.TagName, leadAdapter.AccountID);
                    indexingService.IndexTag(savedTag);
                    accountRepository.ScheduleAnalyticsRefresh(savedTag.Id, (byte)IndexType.Tags);
                }
                response.LeadAdapterViewModel = Mapper.Map <LeadAdapterAndAccountMap, LeadAdapterViewModel>(newLeadAdapter);
            }
            catch (Exception ex)
            {
                Logger.Current.Error("An error occured while creating Facebook LeadAdapter", ex);
                if (newLeadAdapterID != 0)
                {
                    this.DeleteLeadAdapter(new DeleteLeadAdapterRequest(newLeadAdapterID));
                }
                throw;
            }

            Logger.Current.Informational("Facebook Leadadapter inserted successfully.");
            return(new InsertLeadAdapterResponse());
        }