liuyn
2024-03-11 a87f1c3df03078814ee97ad0c8ac200a232419e9
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
/*
 * Author: Bubba Li
 * Created Date: 02/08/2022
 * Purpose: SearchContactController
 * Test Class: SearchContactController
 * History: 
 *      02/08/2022 - Bubba Li - Initial Code.
 * 
 * */
public with sharing class SearchContactForReportController {
    public String searchKeyWord{set;get;}
    public String staticResource {get; set;}
    public String contactAWSIds {set;get;}
    public String contactsInfo {set;get;}
    public String PIPL_Search_Contact_Label{set;get;}
    public String ObjectTypeLabel {set;get;}
    public String aId{set;get;}
    public static Boolean checkNullString(String inputString){
        if(String.isEmpty(inputString)||String.isBlank(inputString)){
            return true;
        }
        return false;
    }
    //2023 08 30 张赫阳 PIPL页面改造 start
    public String OFSType{set;get;}
    //2023 08 30 张赫阳 PIPL页面改造 end
    public SearchContactForReportController() {
        String accountId = ApexPages.currentPage().getParameters().get('accountId');
        searchKeyWord = ApexPages.currentPage().getParameters().get('searchContactKeyWord');
        //2023 08 30 张赫阳 PIPL页面改造 start
        OFSType = ApexPages.currentPage().getParameters().get('Type');
        //2023 08 30 张赫阳 PIPL页面改造 end
        ObjectTypeLabel = Schema.getGlobalDescribe().get('Contact').getDescribe().getLabel();
        aId = accountId;
        PIPL_Search_Contact_Label = Label.PIPL_Search_Contact_Label;
        //1. Query Contact by accountId
        List<Contact> conList = new List<Contact>();
        system.debug('Account Id from Front-end:'+accountId);
        if(checkNullString(accountId)&&checkNullString(searchKeyWord)){
            conList = new List<Contact>();
        }else{
            if(checkNullString(accountId)){
                conList = new List<Contact>(); 
            }else {
                //2022-5-12 yjk 将科室匹配改为医院匹配查询联系人 statt
                System.debug('accountId = ' + accountId);
                //deloitte-zhj 20231107 start
                // List<Account> act = [select id,Hospital__c from Account where id = :accountId]; //deloitte-zhj 20231106
                // if(act.size() > 0){
                //     conList = new List<Contact>([select Id,AWS_Data_Id__c,Account.Name from Contact  where     Account.Hospital__c=:act[0].Hospital__c and AWS_Data_Id__c!='' limit 2000]); 
                // }
                conList = new List<Contact>([select Id,Account.Name from Contact where Account.Hospital__c=:accountId and RecordType.DeveloperName = 'Doctor' limit 2000]); 
                //deloitte-zhj 20231107 end
                //2022-5-12 yjk 将科室匹配改为医院匹配查询联系人 end
            }
            
        }    
        contactsInfo = JSON.serialize(conList);
        //2. Prepare the Contact Info
        // Map<String,Contact> awsIdToContactMap = new Map<String,Contact>();
        // List<String> conAWSIds = new List<String>();
        // for(Contact con:conList){
        //     conAWSIds.add(con.AWS_Data_Id__c);
        //     awsIdToContactMap.put(con.AWS_Data_Id__c,con);
        // }
        // contactsInfo = JSON.serialize(awsIdToContactMap);
        // contactAWSIds = JSON.serialize(conAWSIds);
        // staticResource = JSON.serialize(PIHelper.getPIIntegrationInfo('Contact'));        
    }
 
    @RemoteAction
    public static Response searchContacts(String searchContactName, String accountId) {
        Response res = new Response();
        try {
            String sql = 'SELECT Id, Account.Name, Name, Phone, Email, MobilePhone FROM Contact Where RecordType.DeveloperName = \'Doctor\' ';
            if (!checkNullString(accountId)) {
                // Account act = [SELECT id, Hospital__c FROM Account WHERE id = :accountId];
                // if (!checkNullString(act.Hospital__c)) {
                    sql += 'AND Account.Hospital__c = \'' + accountId + '\' ';
                // } else {
                //     sql += 'AND Account.Hospital__c = \'\' ';
                // }
            }
            if (!checkNullString(searchContactName)) {
                sql += 'AND Name like \'%' + searchContactName + '%\' ';
            }
            sql += 'ORDER BY createddate DESC Limit 1000';
            System.debug('sql =======' + sql);
            List<Contact> conList = Database.query(sql);
            // data.put('conList', conList);
            res.status = 'Success';
            res.message = JSON.serialize(conList);
        } catch (Exception e) {
            res.status = 'fail';
            res.message = e.getMessage() + ' ' + e.getLineNumber();
        }
        return res;
    }
 
    // @RemoteAction
    // public static Response searchContacts(String awsContactIds,String searchContactName,String accountId) {
    //     system.debug('awsContactIds = ' + awsContactIds);
    //     Response resp = new Response();
    //     resp.status = 'fail';
    //     Map<String,Contact> awsIdToContactMapTemp = new Map<String,Contact>();
    //     if(!checkNullString(awsContactIds)){
    //         List<String> awsDataIds = (List<String>) JSON.deserialize(awsContactIds, List<String>.class);
    //         List<Contact> conListTemp = new List<Contact>();
    //         if(!checkNullString(accountId)){
    //             //2022-5-12 yjk 将科室匹配改为医院匹配查询联系人 statt
    //             //deloitte-zhj 20231107 start
    //             //Account act = [select id,Hospital__c from Account where id = :accountId];
    //             //conListTemp = new List<Contact>([select Id,AWS_Data_Id__c,Account.Name from Contact where Account.Hospital__c=:act.Hospital__c and AWS_Data_Id__c in:awsDataIds]);
    //             conListTemp = new List<Contact>([select Id,AWS_Data_Id__c,Account.Name from Contact where Account.Hospital__c=:accountId and AWS_Data_Id__c in:awsDataIds]);
    //             //deloitte-zhj 20231107 end
    //             //2022-5-12 yjk 将科室匹配改为医院匹配查询联系人 end
    //         }else {
    //             conListTemp = new List<Contact>([select Id,AWS_Data_Id__c,Account.Name from Contact where AWS_Data_Id__c in:awsDataIds]);
    //         }
    //         for(Contact con:conListTemp){
    //             awsIdToContactMapTemp.put(con.AWS_Data_Id__c,con);
    //         }
    //     }
    //     System.debug('awsIdToContactMapTemp = ' + awsIdToContactMapTemp);
    //     Map<String,Contact> noPIContactMapTemp = new Map<String,Contact>();
    //     List<Contact> partnerContactList = AWSServiceTool.getNoPIContact(searchContactName,accountId);
    //     System.debug('partnerContactList = ' + partnerContactList);            
    //     if(partnerContactList.size()>0){
    //         for(Contact con:partnerContactList){
    //             noPIContactMapTemp.put(con.Id,con);
    //         }               
    //     }
    //     if(awsIdToContactMapTemp.keySet().size()>0 ||noPIContactMapTemp.keySet().size()>0){
    //         resp.status = 'success';
    //         resp.message = JSON.serialize(awsIdToContactMapTemp);// PI contact info
    //         resp.noPIContactList = JSON.serialize(noPIContactMapTemp);//NoPI contact info
    //     }
    //     return resp;
    // }
 
    @RemoteAction
    public static Response searchContactsNoPI(String contactName) {
        Response resp = new Response();
        resp.status = 'fail';
        List<Contact> conListTemp = new List<Contact>([select Id,Name,Account.Name,Phone,Email,MobilePhone from Contact where Name like :contactName]);
        if(conListTemp.size() > 0){
            resp.status = 'success';
            resp.message = JSON.serialize(conListTemp);
        }
        return resp;
    }
 
    public class Response{
        public String message{set;get;}
        public String status{set;get;}
        public String noPIContactList{set;get;}
    }
}