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()); }
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); }
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()); }