From 80a3f59e2d3df07805bc67e329300b8de90a5b3a Mon Sep 17 00:00:00 2001
From: buli <137736985@qq.com>
Date: 星期二, 11 七月 2023 14:13:08 +0800
Subject: [PATCH] Merge branch 'LEXCommunityLiJun' into LEXUpgrade2023-Deloitte

---
 force-app/main/default/aura/NewAgencyOpportunity/NewAgencyOpportunityHelper.js |  341 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 341 insertions(+), 0 deletions(-)

diff --git a/force-app/main/default/aura/NewAgencyOpportunity/NewAgencyOpportunityHelper.js b/force-app/main/default/aura/NewAgencyOpportunity/NewAgencyOpportunityHelper.js
new file mode 100644
index 0000000..6377482
--- /dev/null
+++ b/force-app/main/default/aura/NewAgencyOpportunity/NewAgencyOpportunityHelper.js
@@ -0,0 +1,341 @@
+({
+    CallBackAction: function (component, action_name, para, callback) {
+        var action = component.get(
+            'c.' + action_name.trimStart().replace('c.', '')
+        );
+        if (para) {
+            action.setParams(para);
+        }
+        if (callback) {
+            action.setCallback(this, function (data) {
+                callback(data);
+            });
+        }
+
+        $A.enqueueAction(action);
+    },
+    ShowToast: function (paras) {
+        var toastEvent = $A.get('e.force:showToast');
+        toastEvent.setParams(paras);
+        toastEvent.fire();
+    },
+    AwsPost: function (postURL, data, callback, token) {
+        let payloadForNewPI = '';
+        if (typeof data == 'string') {
+            payloadForNewPI = data;
+        } else {
+            payloadForNewPI = JSON.stringify(data);
+        }
+
+        AWSService.post(
+            postURL,
+            payloadForNewPI,
+            function (result) {
+                //this.insertCalloutLog(this.insertModule,postURL,JSON.stringify(payloadForNewPI),JSON.stringify(result),this.successStatus);
+                if (callback) callback(result);
+            },
+            token
+        );
+    },
+    AwsGet: function (url, data, callback, token) {
+        if (typeof data == 'string') {
+            url += data;
+        } else {
+            let i = 0;
+            for (let p in data) {
+                url += i++ ? '&' : '?';
+                url += p + '=' + data[p];
+            }
+        }
+
+        AWSService.get(
+            url,
+            function (result) {
+                //this.insertCalloutLog(this.insertModule,postURL,JSON.stringify(payloadForNewPI),JSON.stringify(result),this.successStatus);
+                if (callback) callback(result);
+            },
+            token
+        );
+    },
+    refreshTable: function (
+        component,
+        event,
+        helper,
+        cols,
+        contactInfoList,
+        contactsInfo
+    ) {
+        let that = this;
+        let myTableDiv = document.getElementById('QueryResult');
+        let table = document.createElement('TABLE');
+        table.border = '1';
+        table.id = 'table';
+        table.setAttribute(
+            'class',
+            'slds-table slds-table_cell-buffer slds-table_bordered'
+        );
+        let tableBody = document.createElement('TBODY');
+        table.appendChild(tableBody);
+        let headerTR = document.createElement('TR');
+        headerTR.setAttribute('class', 'slds-line-height_reset');
+        let colsHeader = ['濮撳悕', '鍖婚櫌', '鍖荤敓鍖哄垎(鑱屽姟)', '鍒嗙被'];
+        tableBody.appendChild(headerTR);
+        for (let i = 0; i < colsHeader.length; i++) {
+            let td = document.createElement('TH');
+            td.width = '75';
+            td.setAttribute('class', 'slds-truncate slds-border_right');
+            td.appendChild(document.createTextNode(colsHeader[i]));
+            headerTR.appendChild(td);
+        }
+        //3. Init the AWS data
+        for (let i = 0; i < contactInfoList.length; i++) {
+            let tr = document.createElement('TR');
+            tableBody.appendChild(tr);
+            let contactInfoTemp = contactInfoList[i];
+            for (let j = 0; j < cols.length; j++) {
+                let td = document.createElement('TD');
+                td.width = '75';
+                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) {
+                        that.redirectToParentPage(
+                            component,
+                            event,
+                            helper,
+                            obj
+                        );
+                    });
+                }
+                tr.appendChild(td);
+            }
+        }
+        myTableDiv.appendChild(table);
+        component.find('button').set('v.disabled', false);
+    },
+    redirectToParentPage: function (component, event, helper, obj) {
+        let agencyContactName = obj.currentTarget.innerText;
+        let id = obj.currentTarget.id;
+        component.set('v.ac_name', agencyContactName);
+        let layout = component.get('v.layout');
+        for (let s of layout) {
+            for (let c of s.layoutColumns) {
+                for (let item of c.layoutItems) {
+                    if (item.field == 'Agency_Contact__c') {
+                        item.value = id;
+                    }
+                }
+            }
+        }
+        component.set('v.isModalOpen', false);
+    },
+    resetTable: function () {
+        let queryResult = document.getElementById('QueryResult');
+        let table = document.getElementsByTagName('table');
+        debugger;
+        console.log('table:' + table);
+        debugger;
+        if (table.length > 1) {
+            for (var i = 1; i < table.length; i++) {
+                queryResult.removeChild(table[i]);
+            }
+        }
+    },
+    preparePayloadForSearchAgencyContact: function (component, event, helper) {
+        let that = this;
+        let agencyHospitalId = '';
+        let accountId = '';
+        let layout = component.get('v.layout');
+        for (let s of layout) {
+            for (let c of s.layoutColumns) {
+                for (let item of c.layoutItems) {
+                    if (item.field == 'Agency_Hospital__c') {
+                        agencyHospitalId = item.value;
+                    }
+                    if (item.field == 'Account_Opp__c') {
+                        accountId = item.value;
+                    }
+                }
+            }
+        }
+        var action = component.get('c.getAWSDataIds');
+        action.setParams({
+            agencyHospitalId: agencyHospitalId,
+            accountId: accountId
+        });
+        action.setCallback(this, function (response) {
+            var state = response.getState();
+            if (state == 'SUCCESS') {
+                var rv = response.getReturnValue();
+                if (rv.Data.length == 0) {
+                    component.find('button').set('v.disabled', false);
+                    helper.ShowToast({
+                        message: '璇ョ粡閿�鍟嗗尰闄笅闈㈡病鏈夊鎴蜂汉鍛�',
+                        type: 'warning'
+                    });
+                    return;
+                }
+                let searchPayload = new Object();
+                let searchAgencyContactName = component.get('v.searchKeyWord');
+                searchPayload.dataIds = rv.Data;
+                searchPayload.name = searchAgencyContactName;
+                component.set('v.contactAWSIds', rv.Data);
+                let staticResource = component.get('v.staticResource');
+                let url = staticResource.searchUrl;
+                let token = staticResource.token;
+                this.AwsPost(
+                    url,
+                    searchPayload,
+                    function (data) {
+                        if (data.success) {
+                            let cols = [
+                                'Name',
+                                'AgencyHospital',
+                                'DoctorDivision1',
+                                'Type'
+                            ];
+                            let contactInfoList = [];
+                            let awsDataIds = [];
+                            if (data.object.length == 0) {
+                                component
+                                    .find('button')
+                                    .set('v.disabled', false);
+                                that.ShowToast({
+                                    message: '娌℃湁鏌ヨ鍒拌瀹㈡埛浜哄憳',
+                                    type: 'warning'
+                                });
+                                return;
+                            }
+                            for (var i = 0; i < data.object.length; i++) {
+                                if (data.object[i].dataId) {
+                                    let contactInfo = new Object();
+                                    //闇�瑕佷慨鏀�
+                                    contactInfo.Name = data.object[i].name;
+                                    contactInfo.AgencyHospital = '';
+                                    contactInfo.DoctorDivision1 =
+                                        data.object[i].doctorDivision1;
+                                    contactInfo.AWSDataId =
+                                        data.object[i].dataId;
+                                    contactInfo.Type = data.object[i].type;
+                                    contactInfo.pi = true;
+                                    awsDataIds.push(contactInfo.AWSDataId);
+                                    contactInfo.sfRecordId = '';
+                                    contactInfoList.push(contactInfo);
+                                }
+                            }
+                            //let AWSIdToSFIdMapValue = {};
+                            var searchAgencyContacts = component.get(
+                                'c.searchAgencyContacts'
+                            );
+                            searchAgencyContacts.setParams({
+                                awsAgencyContactIds: JSON.stringify(awsDataIds),
+                                agencyHospitalId: agencyHospitalId,
+                                accountId: accountId
+                            });
+                            searchAgencyContacts.setCallback(
+                                this,
+                                function (response) {
+                                    var state = response.getState();
+                                    if (state == 'SUCCESS') {
+                                        var rv = response.getReturnValue();
+                                        if (rv.IsSuccess) {
+                                            let contactsInfo = '';
+                                            if (rv.Data) {
+                                                contactsInfo = JSON.parse(
+                                                    rv.Data.replace(
+                                                        /(&quot\;)/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'
+                                                                ];
+                                                            if (
+                                                                contactFromSF[
+                                                                    'Agency_Hospital__r'
+                                                                ]
+                                                            ) {
+                                                                contactInfoList[
+                                                                    i
+                                                                ].AgencyHospital =
+                                                                    contactFromSF[
+                                                                        'Agency_Hospital__r'
+                                                                    ]['Name'];
+                                                            }
+                                                            if (
+                                                                contactFromSF[
+                                                                    'Department_Class__r'
+                                                                ]
+                                                            ) {
+                                                                contactInfoList[
+                                                                    i
+                                                                ].AgencyHospital =
+                                                                    contactFromSF[
+                                                                        'Department_Class__r'
+                                                                    ]['Parent'][
+                                                                        'Name'
+                                                                    ];
+                                                            }
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                            that.refreshTable(
+                                                component,
+                                                event,
+                                                helper,
+                                                cols,
+                                                contactInfoList,
+                                                contactsInfo
+                                            );
+                                        }
+                                    }
+                                }
+                            );
+                            $A.enqueueAction(searchAgencyContacts);
+                        }
+                    },
+                    token
+                );
+            }
+        });
+        $A.enqueueAction(action);
+    }
+});

--
Gitblit v1.9.1