public class SearchVisitorController { public Contact rc {get;set;} public Contact sc {get;set;} public List scwl {get;set;} public List cl {get;set;} public List acwl {get;set;} public String index {get; set;} public String awsContactIds{set;get;}//Add By Li Jun 20220214 for PIPL public String id1 {get;set;} public String hId1 {get;set;} public String idVa1 {get;set;} public String id2 {get;set;} public String hId2 {get;set;} public String idVa2 {get;set;} public String id3 {get;set;} public String hId3 {get;set;} public String idVa3 {get;set;} public String id4 {get;set;} public String hId4 {get;set;} public String idVa4 {get;set;} public String id5 {get;set;} public String hId5 {get;set;} public String idVa5 {get;set;} public String vp {get;set;} public User u {get;set;} public Account a {get;set;} //Add By Li Jun 20220217 Start public String staticResource {get; set;} public String contactAWSIds {set;get;} public String contactsInfo {set;get;} public String awsDataIdArray {set;get;} public String sfContactId{set;get;} //Add By Li Jun 20220217 End public SearchVisitorController(){ this.id1 = Apexpages.currentPage().getParameters().get('id1'); this.hId1 = Apexpages.currentPage().getParameters().get('hId1'); this.idVa1 = Apexpages.currentPage().getParameters().get('idVa1'); this.id2 = Apexpages.currentPage().getParameters().get('id2'); this.hId2 = Apexpages.currentPage().getParameters().get('hId2'); this.idVa2 = Apexpages.currentPage().getParameters().get('idVa2'); this.id3 = Apexpages.currentPage().getParameters().get('id3'); this.hId3 = Apexpages.currentPage().getParameters().get('hId3'); this.idVa3 = Apexpages.currentPage().getParameters().get('idVa3'); this.id4 = Apexpages.currentPage().getParameters().get('id4'); this.hId4 = Apexpages.currentPage().getParameters().get('hId4'); this.idVa4 = Apexpages.currentPage().getParameters().get('idVa4'); this.id5 = Apexpages.currentPage().getParameters().get('id5'); this.hId5 = Apexpages.currentPage().getParameters().get('hId5'); this.idVa5 = Apexpages.currentPage().getParameters().get('idVa5'); this.vp = Apexpages.currentPage().getParameters().get('vp'); u = [select id, Employee_No__c, Province__c from User where id =:UserInfo.getUserId()]; a = [select id from Account where Id =:vp]; clearRC(); sc = new Contact(); scwl = new List(); /*Set idList = new Set(); if(idVa1 != ''){ idList.add(idVa1); } if(idVa2 != ''){ idList.add(idVa2); } if(idVa3 != ''){ idList.add(idVa3); } if(idVa4 != ''){ idList.add(idVa4); } if(idVa5 != ''){ idList.add(idVa5); } AddContactWrapper acw = new AddContactWrapper(); acwl = new List(); Integer i = 0; if(idList.size() == 0){ acw.con = new Contact(); acw.index = String.valueOf(i); acwl.add(acw); acwl.add(acw); acwl.add(acw); acwl.add(acw); acwl.add(acw); i++; } else{ List cl = [select id, name, Account.Name, Type__c, Doctor_Division1__c, MyDr_Flg__c, MyDr__c, phone, Supplement__c, Select_Flg__c From Contact Where id IN :idList]; for(Contact c : cl){ acw = new AddContactWrapper(); acw.con = c; acw.index = String.valueOf(i); acwl.add(acw); i++; } for(Integer j=i; j<5; j++){ acw = new AddContactWrapper(); acw.con = new Contact(); acw.index = String.valueOf(j); acwl.add(acw); } }*/ acwl = new List(); list idList = new list(); system.debug('===========================idList.size():'+idList.size()); idList.add(idVa1); idList.add(idVa2); idList.add(idVa3); idList.add(idVa4); idList.add(idVa5); acwlRefresh(idList); /* List cList1 = [select id, name, Account.Name, FirstName, Search_LastName__c, LastName, Type__c, phone, Supplement__c, Doctor_Division1__c, MyDr_Flg__c, MyDr__c, Select_Flg__c, Please_Delete__c, Please_Delete_applier__c From Contact Where id =:idVa1]; if(idVa1 != '' && cList1.size() > 0){ AddContactWrapper acw = new AddContactWrapper(String.valueOf(0), cList1.get(0)); acwl.add(acw); } else{ AddContactWrapper acw = new AddContactWrapper(String.valueOf(0), new Contact()); acwl.add(acw); } List cList2 = [select id, name, Account.Name, FirstName, Search_LastName__c, LastName, Type__c, phone, Supplement__c, Doctor_Division1__c, MyDr_Flg__c, MyDr__c, Select_Flg__c, Please_Delete__c, Please_Delete_applier__c From Contact Where id =:idVa2]; if(idVa2 != '' && cList2.size() > 0){ AddContactWrapper acw = new AddContactWrapper(String.valueOf(1), cList2.get(0)); acwl.add(acw); } else{ AddContactWrapper acw = new AddContactWrapper(String.valueOf(1), new Contact()); acwl.add(acw); } List cList3 = [select id, name, Account.Name, FirstName, Search_LastName__c, LastName, Type__c, phone, Supplement__c, Doctor_Division1__c, MyDr_Flg__c, MyDr__c, Select_Flg__c, Please_Delete__c, Please_Delete_applier__c From Contact Where id =:idVa3]; if(idVa3 != '' && cList3.size() > 0){ AddContactWrapper acw = new AddContactWrapper(String.valueOf(2), cList3.get(0)); acwl.add(acw); } else{ AddContactWrapper acw = new AddContactWrapper(String.valueOf(2), new Contact()); acwl.add(acw); } List cList4 = [select id, name, Account.Name, FirstName, Search_LastName__c, LastName, Type__c, phone, Supplement__c, Doctor_Division1__c, MyDr_Flg__c, MyDr__c, Select_Flg__c, Please_Delete__c, Please_Delete_applier__c From Contact Where id =:idVa4]; if(idVa4 != '' && cList4.size() > 0){ AddContactWrapper acw = new AddContactWrapper(String.valueOf(3), cList4.get(0)); acwl.add(acw); } else{ AddContactWrapper acw = new AddContactWrapper(String.valueOf(3), new Contact()); acwl.add(acw); } List cList5 = [select id, name, Account.Name, FirstName, Search_LastName__c, LastName, Type__c, phone, Supplement__c, Doctor_Division1__c, MyDr_Flg__c, MyDr__c, Select_Flg__c, Please_Delete__c, Please_Delete_applier__c From Contact Where id =:idVa5]; if(idVa5 != '' && cList5.size() > 0){ AddContactWrapper acw = new AddContactWrapper(String.valueOf(4), cList5.get(0)); acwl.add(acw); } else{ AddContactWrapper acw = new AddContactWrapper(String.valueOf(4), new Contact()); acwl.add(acw); }*/ serContact(); //Add By Li Jun for PIPL 20220217 Start //1. Query Contact by accountId List conList = new List(); List departmentClass = new List(); system.debug('Account Id from Front-end:'+a.Id); String accountId = a.Id; PIHelper.PIIntegration contactPIIntegration = PIHelper.getPIIntegrationInfo('Contact'); if(String.isNotBlank(accountId) && String.isNotEmpty(accountId)){ departmentClass = [select Department_Class__c from Account where id =:accountId]; if(departmentClass.size() > 0){ conList = new List([select Id,AWS_Data_Id__c from Contact where Strategic_dept_Class__c=:departmentClass[0].Department_Class__c and AWS_Data_Id__c!='' limit :contactPIIntegration.maxQueryNumber]); } //conList = new List([select Id,AWS_Data_Id__c from Contact where AccountId=:accountId and AWS_Data_Id__c!='' limit :contactPIIntegration.maxQueryNumber]); } //2. Prepare the Contact Info List conAWSIds = new List(); system.debug('Contact Size:'+conList.size()); for(Contact con:conList){ conAWSIds.add(con.AWS_Data_Id__c); } contactAWSIds = JSON.serialize(conAWSIds); staticResource = JSON.serialize(contactPIIntegration); //Add By Li Jun for PIPL 20220217 End } //Add by Li Jun for PIPL 202202117 Start public PageReference clearLineInfoList() { scwl = new List(); return null; } //Add by Li Jun for PIPL 202202117 End public PageReference serContact(){ System.debug('===== serContact start ====='+awsContactIds); //Add By Li Jun for PIPL 20220218 Start Set awsContactSet = new Set(); if(String.isNotBlank(awsContactIds)&&String.isNotEmpty(awsContactIds)){ List awsDataIds = (List) JSON.deserialize(awsContactIds, List.class); awsContactSet = new Set(awsDataIds); } System.debug('===== serContact start ====='+awsContactSet); //Add By Li Jun for PIPL 20220218 End String searchHospital = 'Select Hospital__c, Department_Class__c,Is_Active__c From Account Where Id = \'' + vp + '\' '; Account a = Database.query(searchHospital); if(a.Is_Active__c == '無効'){ ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, 'summary - This hospital is inactive.', 'detail - error')); return null; } String searchSql = 'Select id, name,Ignore_Same_Name__c,AWS_Data_Id__c, Account.Name, Type__c, Doctor_Division1__c, MyDr_Flg__c, phone, Supplement__c, MyDr__c, Select_Flg__c,Delete_Reason__c, Please_Delete__c, Please_Delete_applier__c, FirstName, LastName, Search_LastName__c, Account_Visitor_Search__c From Contact '; String whereStr = 'Where Account.ParentId =\'' + a.Department_Class__c + '\' and Account.Is_Active__c != \'無効\' ' + ' and Isactive__c != \'无效(退休)\' and Isactive__c != \'无效(重复)\''; String whereSql = ''; //Commented by Li Jun 20220214 for PIPL if(awsContactSet.size()>0){ whereSql += 'and AWS_Data_Id__c in: awsContactSet '; } // if(sc.Search_LastName__c != null && sc.Search_LastName__c != ''){ // whereSql += 'and LastName like ' + '\'%' + sc.Search_LastName__c + '%\' '; // } // if(sc.Search_FirstName__c != null && sc.Search_FirstName__c != ''){ // whereSql += 'and FirstName like ' + '\'%' + sc.Search_FirstName__c + '%\' '; // } if(sc.Type__c != null && sc.Type__c != ''){ whereSql += 'and Type__c = \'' + sc.Type__c + '\' '; } if(sc.Doctor_Division1__c != null && sc.Doctor_Division1__c != ''){ whereSql += 'and Doctor_Division1__c = \'' + sc.Doctor_Division1__c + '\' '; } if(sc.MyDr_Flg__c){ whereSql += 'and MyDr__c like \'%' + u.Employee_No__c + '%\' '; } searchSql = searchSql + whereStr + whereSql; searchSql += ' order by Account.Name asc, LastName, FirstName '; System.debug('searchSql:'+searchSql); cl = Database.query(searchSql); System.debug('Query Result from SF:'+JSON.serialize(cl)); Integer i = 0; scwl = new List(); for(Contact c : cl){ if(c.MyDr__c != null && (',' + c.MyDr__c).contains(',' + u.Employee_No__c)){ c.MyDr_Flg__c = true; } else{ c.MyDr_Flg__c = false; } SltContactWrapper cw = new SltContactWrapper(String.valueOf(i), c); scwl.add(cw); i++; } for ( i = 0; i < acwl.size(); i++) { AddContactWrapper acw = acwl.get(i); if (acw.con != null && acw.con.MyDr__c != null && (',' + acw.con.MyDr__c).contains(',' + u.Employee_No__c) ) { acw.con.MyDr_Flg__c = true; }else{ acw.con.MyDr_Flg__c = false; } } return null; } public PageReference updContactP(){ system.debug('========upd please delete start**============='+index); Contact conTemp = scwl.get(Integer.valueof(index)).con; Contact conTemp2 = [select Please_Delete__c, Please_Delete_applier__c From Contact where Id = :conTemp.Id]; if(conTemp.Please_Delete__c == true && conTemp.Delete_Reason__c==null){ conTemp.Delete_Reason__c.addError('请输入删除理由'); return null; }else if(conTemp2.Please_Delete_applier__c != null && conTemp2.Please_Delete_applier__c != UserInfo.getUserId()){ return null; }else if(conTemp.Please_Delete__c == true && conTemp2.Please_Delete_applier__c == null){ conTemp.Please_Delete_applier__c = UserInfo.getUserId(); }else if(conTemp.Please_Delete__c == false && conTemp2.Please_Delete_applier__c == UserInfo.getUserId()){ conTemp.Please_Delete_applier__c = null; }else{ } Savepoint sp = Database.setSavepoint(); try{ update conTemp; }catch(Exception io){ Database.rollback(sp); } return null; } public PageReference MyDrChange(Contact c){ list conList = [select MyDr__c, MyDr_Flg__c From Contact where Id = :c.Id]; Contact conTemp = new Contact(); if(conList.size()<1){ conTemp = c; }else{ conTemp = conList[0]; } list mdList = new list(); if(!string.isBlank(conTemp.MyDr__c)){ mdList = conTemp.MyDr__c.split(',',0); } //u = [select id, Employee_No__c from User where id =:UserInfo.getUserId()]; integer index = -1; for(integer i=0;i < mdList.size();i++){ if(mdList[i].equals(u.Employee_No__c)){ //if the myDr is included, save the sequence number index = i; break; } else{ //do nothing } } //if mydr is true, the Employee_No__c should be in the mdList if(c.MyDr_Flg__c==true){ if(index == -1) mdList.add(u.Employee_No__c); // in the contrast , the Employee_No__c should not be in the mdList } else{ if(index != -1) mdList.remove(index); } String s; if(mdList.size()<1){ s=''; }else{ s = mdList[0]; if(mdList.size()>1){ for(integer i=1;i idList = new List(); for(Integer i = 0; i < acwl.size(); i++){ AddContactWrapper acw = acwl.get(i); idList.add(acw.conId); } acwlRefresh(idList); clearRC(); serContact(); return null; } public PageReference acwlRefresh(List idList){ List cList = [Select id, name, Account.Name, Type__c, Doctor_Division1__c, MyDr_Flg__c, MyDr__c, phone, Supplement__c, Select_Flg__c, Please_Delete__c, Please_Delete_applier__c, FirstName, LastName, Search_LastName__c, Account_Visitor_Search__c From Contact where id in :idList]; system.debug('===========================cList.size():'+cList.size()); map idConMap = new map(); integer i = 0; List acwlTemp = new List(); for(String d : idList){ system.debug('===========================idList:'+i+'='+d); i++; for(Contact c : cList){ system.debug('===========================c.Id:'+i+'='+c.Id); if(d.equals(c.Id)){ idConMap.put(d,c); break; } } } system.debug('===========================idConMap:'+idConMap.get('')); for (i = 0; i < 5; i++) { AddContactWrapper acwNew; if(idList[i] == ''||idList[i] == null ){ acwNew = new AddContactWrapper('' + i, new Contact()); }else{ acwNew = new AddContactWrapper('' + i, idConMap.get(idList[i])); } system.debug('===========================acwNew:'+acwNew.index); acwlTemp.add(acwNew); } acwl = acwlTemp.clone(); return null; } class SltContactWrapper{ public String index {get;set;} public Contact con {get;set;} public String conId {get;set;} public SltContactWrapper(String index, Contact con) { this.con = con; this.conId = con.Id; this.index = index; } } class AddContactWrapper{ public String index {get;set;} public Contact con {get;set;} public String conId {get;set;} public AddContactWrapper(String index, Contact con) { this.con = con; this.conId = con.Id; this.index = index; } } }