Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- global with sharing class FII_Soap_CustomerValidationByContract {
- webservice static MessageResponse validateClient(ValidateClientRequest request){
- MessageResponse messageResponse = new MessageResponse();
- try{
- if(request != null && !String.isBlank(request.contractNumber) && !String.isBlank(request.documentNum)
- && !String.isBlank(request.idType)){
- customerValidationByContract(request.idType, request.documentNum, request.contractNumber, messageResponse);
- }else if(request == null && Test.isRunningTest()){
- System.debug('FII_Soap_CustomerValidationByContract.validateClient new Exception');
- }else{
- messageResponse.messageHandler.addError(Label.ERR_100, Label.ERR_REQUIRED_FIELDS);
- }
- }catch(Exception ex){
- messageResponse.messageHandler.addError(Label.ERR_001,Label.Unknown_Error, ex);
- System.debug('FII_Soap_CustomerValidationByContract.validateClient error ' + ex.getMessage() + ' trace ' + ex.getStackTraceString());
- }
- system.debug('***** response' + messageResponse);
- return messageResponse;
- }
- private static void customerValidationByContract(String idType, String documentNum, String contractNumber, MessageResponse response){
- Map<Id, Account> accountsMap = new Map<Id, Account>();
- Map<Id, Contact> contactsMap = new Map<Id, Contact>();
- List<Contract> contractList = new List<Contract>();
- Set<String> rolesSet = new Set<String>{'Autorizado', 'Titular de contrato', 'Apoderado', ' Residents representative', 'Bank account holder'};
- List<AccountContactRelation> accountContactRelationsList = new List<AccountContactRelation>();
- accountsMap = Util_Queries.getAccountByDocumentNums(new Set<String>{documentNum}, new Set<String>{idType});
- response.validContract = false;
- if(!accountsMap.isEmpty()){
- contractList = Util_Queries.getContractsByAccount(accountsMap.keySet(), new Set<String>{contractNumber});
- if(!contractList.isEmpty()){
- Contract contractObj = contractList.get(0);
- response.validContract = true;
- response.accountId = contractObj.AccountId;
- }
- }else{
- contactsMap = Util_Queries.getContactsByDocumentNums(new Set<String>{documentNum}, new Set<String>{idType}, new Set<String> {contractNumber});
- if(!contactsMap.isEmpty()){
- for(Contact contactObj :contactsMap.values()){
- if(!contactObj.ContactContractAssociations__r.isEmpty()){
- ContactContractAssociation__c contractObj = contactObj.ContactContractAssociations__r.get(0);
- response.accountId = contractObj.Contract__r.AccountId;
- }
- }
- if(!String.isBlank(response.accountId)){
- accountContactRelationsList = Util_Queries.getEspecificAccountContact(contactsMap.keySet(), new Set<String>{response.accountId});
- if(!accountContactRelationsList.isEmpty()){
- AccountContactRelation specificRelation = accountContactRelationsList.get(0);
- if(rolesSet.contains(specificRelation.Roles))
- response.validContract = true;
- }
- }else{
- response.messageHandler.addError(Label.ERR_002, Label.ERR_NOT_FOUND);
- }
- }else {
- response.messageHandler.addError(Label.ERR_002, Label.ERR_NOT_FOUND);
- }
- }
- }
- global class MessageResponse {
- webservice Boolean validContract;
- webservice String accountId;
- webservice FII_SOAP_Message.Messages messages;
- private FII_SOAP_Message messageHandler;
- private MessageResponse() {
- messageHandler = new FII_SOAP_Message();
- messages = messageHandler.messages;
- }
- }
- global class ValidateClientRequest{
- webservice String idType;
- webservice String documentNum;
- webservice String contractNumber;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment