| | |
| | | <apex:page controller="SearchContactController" showHeader="false" id="page"> |
| | | <apex:includeScript value="{!URLFOR($Resource.jquery183minjs)}" /> |
| | | <apex:includeScript value="{! URLFOR($Resource.AWSService, 'AWSService.js') }" /> |
| | | <apex:includeScript value="{!URLFOR($Resource.jquery183minjs)}" /> |
| | | <apex:includeScript value="{!URLFOR($Resource.PleaseWaitDialog)}" /> |
| | | <apex:stylesheet value="{!URLFOR($Resource.blockUIcss)}" /> |
| | | |
| | | <head> |
| | | </head> |
| | |
| | | var staticResources = JSON.parse('{!staticResource}'); |
| | | var contactAWSIds = JSON.parse('{!contactAWSIds}'); |
| | | var contactsInfo = JSON.parse('{!contactsInfo}'); |
| | | var searchContactName = ''; |
| | | var searchKeyWord = '{!searchKeyWord}'; |
| | | var searchContactName = searchKeyWord; |
| | | queryLeadFromAWS(); |
| | | function searchAWSContact(){ |
| | | console.log('Search process!'); |
| | | //1. reset table; |
| | | //1. reset table; |
| | | blockme(); |
| | | resetTable(); |
| | | //2. get contact name value |
| | | searchContactName = document.getElementById('page:form:lksrch').value; |
| | | queryLeadFromAWS(); |
| | | |
| | | } |
| | | function resetTable(){ |
| | | let queryResult = document.getElementById('QueryResult'); |
| | |
| | | function queryLeadFromAWS() { |
| | | //1. Prepare the payload for contact search |
| | | let requestSearchPayload = preparePayloadForSearchContact(); |
| | | console.log('request payload body:'+requestSearchPayload); |
| | | //2. Invoke AWS Service |
| | | fetch(staticResources.searchUrl, { |
| | | method: 'POST', |
| | | body: requestSearchPayload, |
| | | headers: { |
| | | 'Content-Type': 'application/json', |
| | | 'pi-token': staticResources.token |
| | | } |
| | | }).then((data) => { |
| | | return data.json(); |
| | | }).then((result) => { |
| | | if(result.object&&result.object.length>0){ |
| | | initContactTable(result); |
| | | } |
| | | }) |
| | | // fetch(staticResources.searchUrl, { |
| | | // method: 'POST', |
| | | // body: requestSearchPayload, |
| | | // headers: { |
| | | // 'Content-Type': 'application/json', |
| | | // 'pi-token': staticResources.token |
| | | // } |
| | | // }).then((data) => { |
| | | // return data.json(); |
| | | // }).then((result) => { |
| | | // if(result.object&&result.object.length>0){ |
| | | // initContactTable(result); |
| | | // } |
| | | // }) |
| | | let queryBackContactName = function queryBackContactName(result){ |
| | | // if(result.object){ |
| | | // initContactTable(result); |
| | | // } |
| | | initContactTable(result); |
| | | }; |
| | | AWSService.search(staticResources.searchUrl,requestSearchPayload,queryBackContactName,staticResources.token) |
| | | } |
| | | |
| | | function redirectToParentPage(obj) { |
| | |
| | | let tableBody = document.createElement('TBODY'); |
| | | table.appendChild(tableBody); |
| | | let headerTR = document.createElement('TR'); |
| | | let colsHeader = ['姓名','客户名称','邮箱', '电话','手机号']; |
| | | tableBody.appendChild(headerTR); |
| | | for (let i = 0; i < cols.length; i++) { |
| | | for (let i = 0; i < colsHeader.length; i++) { |
| | | let td = document.createElement('TH'); |
| | | td.width = '75'; |
| | | td.appendChild(document.createTextNode(cols[i])); |
| | | td.appendChild(document.createTextNode(colsHeader[i])); |
| | | headerTR.appendChild(td); |
| | | } |
| | | //3. Init the AWS data |
| | |
| | | for (let j = 0; j < cols.length; j++) { |
| | | let td = document.createElement('TD'); |
| | | td.width = '75'; |
| | | if(j == 0){ |
| | | td.id = contactsInfo[contactInfoTemp.AWSDataId].Id; |
| | | } |
| | | td.appendChild(document.createTextNode(contactInfoTemp[cols[j]])); |
| | | if(contactInfoTemp.pi){ |
| | | if (!contactsInfo.hasOwnProperty(contactInfoTemp.AWSDataId)) { |
| | | continue; |
| | | } |
| | | if(j == 0 && contactsInfo[contactInfoTemp.AWSDataId] ){ |
| | | td.id = contactsInfo[contactInfoTemp.AWSDataId].Id; |
| | | } |
| | | }else{ |
| | | td.id = contactInfoTemp.sfRecordId; |
| | | } |
| | | td.appendChild(document.createTextNode(contactInfoTemp[cols[j]]!=null?contactInfoTemp[cols[j]]:'')); |
| | | if (cols[j] == 'Name') { |
| | | td.addEventListener("click", function (obj) { |
| | | redirectToParentPage(obj); |
| | |
| | | } |
| | | } |
| | | myTableDiv.appendChild(table); |
| | | unblockUI(); |
| | | } |
| | | function initContactTable(data) { |
| | | let cols = ['Name', 'Email', 'Phone']; |
| | | let cols = ['Name','AccountName', 'Email', 'Phone','MobilePhone']; |
| | | let contactInfoList = []; |
| | | let awsDataIds = []; |
| | | for(var i=0;i<data.object.length;i++){ |
| | | if(data.object[i].dataId){ |
| | | let contactInfo = new Object(); |
| | | contactInfo.Name = data.object[i].lastName; |
| | | contactInfo.Email = data.object[i].email; |
| | | contactInfo.Phone = data.object[i].phone; |
| | | contactInfo.AWSDataId = data.object[i].dataId; |
| | | awsDataIds.push(contactInfo.AWSDataId); |
| | | contactInfo.sfRecordId = ''; |
| | | contactInfoList.push(contactInfo); |
| | | } |
| | | if(data.object){ |
| | | for(var i=0;i<data.object.length;i++){ |
| | | if(data.object[i].dataId){ |
| | | let contactInfo = new Object(); |
| | | contactInfo.Name = data.object[i].lastName; |
| | | contactInfo.Email = data.object[i].email; |
| | | contactInfo.MobilePhone = data.object[i].mobilePhone; |
| | | contactInfo.Phone = data.object[i].phone; |
| | | contactInfo.AWSDataId = data.object[i].dataId; |
| | | contactInfo.pi = true; |
| | | awsDataIds.push(contactInfo.AWSDataId); |
| | | contactInfo.sfRecordId = ''; |
| | | contactInfoList.push(contactInfo); |
| | | } |
| | | } |
| | | } |
| | | let AWSIdToSFIdMapValue = {}; |
| | | console.log(awsDataIds); |
| | | //Invoke SF BackEnd |
| | | Visualforce.remoting.Manager.invokeAction( |
| | | '{!$RemoteAction.SearchContactController.searchContacts}', |
| | | JSON.stringify(awsDataIds), |
| | | JSON.stringify(awsDataIds),searchContactName,'{!aId}', |
| | | function (result, event) { |
| | | if(event.status){ |
| | | if(result.status = 'success'){ |
| | | contactsInfo = JSON.parse(result.message.replace(/("\;)/g,"\"")); |
| | | if(result.message){ |
| | | contactsInfo = JSON.parse(result.message.replace(/("\;)/g,"\"")); |
| | | if(Object.keys(contactsInfo).length>0){ |
| | | for(let i=0;i<contactInfoList.length;i++){ |
| | | let contactFromSF = contactsInfo[contactInfoList[i]['AWSDataId']]; |
| | | if(contactFromSF){ |
| | | contactInfoList[i].sfRecordId = contactFromSF['Id']; |
| | | contactInfoList[i].AccountName = contactFromSF['Account']['Name']; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | //1. get SF 非敏感的联系人信息 |
| | | if(result.noPIContactList){ |
| | | var noPIInfo = JSON.parse(result.noPIContactList.replace(/("\;)/g,"\"")); |
| | | for(let f in noPIInfo){ |
| | | let contactInfo = new Object(); |
| | | contactInfo.Name = noPIInfo[f].Name!=null?noPIInfo[f].Name:''; |
| | | contactInfo.Email = noPIInfo[f].Email!=null?noPIInfo[f].Email:''; |
| | | contactInfo.Phone = noPIInfo[f].Phone!=null?noPIInfo[f].Phone:''; |
| | | contactInfo.MobilePhone = noPIInfo[f].MobilePhone!=null?noPIInfo[f].MobilePhone:''; |
| | | contactInfo.AWSDataId = ''; |
| | | contactInfo.sfRecordId = noPIInfo[f].Id!=null?noPIInfo[f].Id:''; |
| | | contactInfo.AccountName = noPIInfo[f]['Account']['Name']; |
| | | contactInfo.pi = false; |
| | | contactInfoList.push(contactInfo); |
| | | } |
| | | } |
| | | refreshTable(cols,contactInfoList); |
| | | }else{ |
| | | console.log('No result'); |