Wolffel

FII_Soap_SelfServiceGetReading.cls

Jun 17th, 2019
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.76 KB | None | 0 0
  1. /**
  2.  * @File Name          : FII_Soap_SelfServiceGetReading.cls
  3.  * @Description        :
  4.  * @Author             :
  5.  * @Group              :
  6.  * @Last Modified By   :              
  7.  * @Last Modified On   : 18/6/2019 12:55:37
  8.  * @Modification Log   :
  9.  *==============================================================================
  10.  * Ver         Date                     Author                    Modification
  11.  *==============================================================================
  12.  * 1.0    
  13. **/
  14. global with sharing class FII_Soap_SelfServiceGetReading {
  15.  
  16.     /**
  17.     * @description
  18.     * @author              
  19.     * @param SelfServiceRequest request
  20.     * @return webservice
  21.     */
  22.     webservice static MessageResponse selfServiceGetReading(SelfServiceRequest request){
  23.         MessageResponse messageResponse = new MessageResponse();
  24.         Map<String,FII_Soap_Errors__mdt> catalogErrors = Util_Queries.getCatalogErrors();
  25.         System.debug('FII_Soap_SelfServiceGetReading.selfServiceGetReading request ' + request);
  26.  
  27.         // Savepoint rollbackPoint = Database.setSavepoint();
  28.         try{
  29.             messageResponse.isOkay = false;
  30.            
  31.             if(request.readingList != null && validateInputData(request.readingList)){
  32.  
  33.                 //crear caso y tarea antes de llamar al metodo usando la clase generica
  34.                 messageResponse = insertReading(request.readingList, null, messageResponse);
  35.  
  36.                 if(messageResponse.isOkay == false){
  37.                     messageResponse.messageHandler.addError(catalogErrors.get('0004').MasterLabel,catalogErrors.get('0004').Mensaje__c);
  38.                 }
  39.             }else{
  40.                 messageResponse.messageHandler.addError(catalogErrors.get('0003').MasterLabel,catalogErrors.get('0003').Mensaje__c);
  41.             }
  42.         }catch(Exception e){
  43.             System.debug('FII_Soap_SelfServiceGetReading.selfServiceGetReading error ' + e.getStackTraceString());
  44.             messageResponse.messageHandler.addError(catalogErrors.get('0001').MasterLabel, catalogErrors.get('0001').Mensaje__c, e);
  45.             messageResponse.isOkay = false;
  46.  
  47.             // Database.rollback(rollbackPoint);
  48.         }
  49.         return messageResponse;
  50.     }
  51.  
  52.     /**
  53.     * @description
  54.     * @author              
  55.     * @param List<Reading> request
  56.     * @return Boolean
  57.     */
  58.     public static Boolean validateInputData(List<Reading> request){
  59.         Boolean result = false;
  60.         if(request != null && !request.isEmpty()){
  61.             for(Reading current :request){
  62.                 result = !String.isBlank(current.contractNumber)
  63.                     && !String.isBlank(current.cups)
  64.                     && !String.isBlank(current.nif)
  65.                     || !String.isBlank(current.readingValue);
  66.             }
  67.         }
  68.         return result;
  69.     }
  70.  
  71.     /**
  72.     * @description
  73.     * @author              
  74.     * @param List<Reading> request
  75.     * @param Id taskId
  76.     * @param MessageResponse messageResponse
  77.     * @return MessageResponse
  78.     */
  79.     public static MessageResponse insertReading(List<Reading> request, Id taskId, MessageResponse messageResponse){
  80.  
  81.         List<Contract> contractList = new List<Contract>();
  82.         List<SObject> insertList = new List<SObject>();
  83.         Map<String, Contract> contractMap = new Map<String, Contract>();
  84.         Set<String> cupsSet = new Set<String>();
  85.         Set<String> contractNumbers = new Set<String>();
  86.         Set<String> nifs = new Set<String>();
  87.         for(Reading current :request){
  88.             if(!String.isBlank(current.cups)){          
  89.             cupsSet.add(current.cups);      
  90.             }
  91.             if(!String.isBlank(current.contractNumber)){
  92.                 contractNumbers.add(current.contractNumber);
  93.             }    
  94.             if(!String.isBlank(current.nif)){
  95.                 nifs.add(current.nif);
  96.             }
  97.         }
  98.         //contractList = Util_Queries.getContractsByContractNumber(new List<String>{request.contractNumber});
  99.  
  100.         String query =   'SELECT Id, Account.NIF_CIF_Customer_NIE__c, '
  101.                         +' ContractNumber, Contract_number__c, CUPS__c, '
  102.                         +' AccountId, Rev_num__c '
  103.                         +' FROM Contract ';
  104.  
  105.         String condition = ' ';
  106.         List<String> andConditions = new List<String>{};                
  107.        
  108.         if(!cupsSet.isEmpty()){          
  109.             andConditions.add(  ' CUPS__c IN :cupsSet');      
  110.         }
  111.         if(!contractNumbers.isEmpty()){
  112.             andConditions.add(  ' Contract_number__c IN :contractNumbers');
  113.         }    
  114.         if(!nifs.isEmpty()){
  115.            andConditions.add(  ' Account.NIF_CIF_Customer_NIE__c IN :nifs');
  116.         }
  117.  
  118.         if (!andConditions.isEmpty()){
  119.             condition = 'WHERE (' + String.join(andConditions, ' ) AND ( ') + ')';
  120.         }
  121.        
  122.         condition += ' ORDER BY Contract_number__c, Rev_num__c DESC';
  123.         query += condition;
  124.          
  125.         contractList = Database.query(query);
  126.        
  127.         System.debug('FII_Soap_SelfServiceGetReading.selfServiceGetReading contractList ' + contractList);
  128.         if(contractList != null && !contractList.isEmpty()){
  129.             for (Contract current :contractList){
  130.                 if(!contractMap.containsKey(current.Contract_number__c))
  131.                     contractMap.put(current.Contract_number__c, current);
  132.             }
  133.             for(Reading current :request){
  134.                 insertList.add(createReading(current, contractMap.get(current.contractNumber).Id, taskId));
  135.                 insertList.add(createContractTaskRelation(contractMap.get(current.contractNumber).Id, taskId));
  136.             }
  137.             if(!insertList.isEmpty())
  138.                 insert insertList;
  139.             messageResponse.activityId = taskId;
  140.             messageResponse.isOkay = true;
  141.         }
  142.         return messageResponse;
  143.     }
  144.  
  145.     public static FII_Reading__c createReading( Reading readingRequest, Id contractId, Id taskId){
  146.         return new FII_Reading__c(
  147.             FII_NUM_RD_New_Reading__c       = Integer.valueOf(readingRequest.readingValue),
  148.             FII_LKP_RD_Contract__c          = contractId,
  149.             FII_NUM_RD_Consumption__c       = !String.isBlank(readingRequest.consumption) ? Integer.valueOf(readingRequest.consumption):0,
  150.             FII_NUM_RD_Wheels__c            = !String.isBlank(readingRequest.wheels) ? Integer.valueOf(readingRequest.wheels):0,
  151.             FII_TXT_RD_Integrator__c        = readingRequest.integrator,
  152.             FII_DAT_RD_New_Reading_Date__c  = readingRequest.readingValueDate,
  153.             FII_DAT_RD_Next_Cycle__c        = readingRequest.nextCycleDate,
  154.             FII_TXT_RD_Result__c            = readingRequest.result,
  155.             FII_SEL_RD_SourceType__c        = readingRequest.sourceTypeLastReading,
  156.             FII_NUM_RD_Last_Reading_Value__c = !String.isBlank(readingRequest.lastRealReadingValue) ? Integer.valueOf(readingRequest.lastRealReadingValue):0,
  157.             FII_TXT_RD_Task__c              = taskId
  158.         );
  159.     }
  160.  
  161.     public static FII_ContractTaskRelation__c createContractTaskRelation(Id contractId, Id taskId){
  162.         return new FII_ContractTaskRelation__c(
  163.             FII_LKP_CTR_Contractt__c = contractId,
  164.             FII_LKP_CTR_Taskk__c = taskId
  165.         );
  166.     }
  167.  
  168.     global class SelfServiceRequest{
  169.         webservice List<Reading> readingList;
  170.     }
  171.  
  172.     global class Reading{
  173.         webservice String contractNumber; //FII_LKP_RD_Contract__c
  174.         webservice String cups;
  175.         webservice String nif;
  176.         webservice String integrator; //FII_TXT_RD_Integrator__c
  177.         webservice String period;
  178.         webservice String wheels; //FII_NUM_RD_Wheels__c
  179.         webservice String cteMult ;
  180.         webservice String previousReading;
  181.         webservice Date lastReadingDate;
  182.         webservice String sourceTypeLastReading; //FII_SEL_RD_SourceType__c
  183.         webservice String lastRealReadingValue; //FII_NUM_RD_Last_Reading_Value__c
  184.         webservice Date lastRealReadingDate;
  185.         webservice Date nextCycleDate;  //FII_DAT_RD_Next_Cycle__c
  186.         webservice String readingValue; //FII_NUM_RD_New_Reading__c
  187.         webservice Date readingValueDate; //FII_DAT_RD_New_Reading_Date__c
  188.         webservice String consumption; //FII_NUM_RD_Consumption__c
  189.         webservice String result; //FII_TXT_RD_Result__c
  190.     }
  191.  
  192.     global class MessageResponse {
  193.         webservice String activityId; //taskId
  194.         webservice Boolean isOkay;
  195.         webservice FII_SOAP_Message.Messages messages;
  196.         private FII_SOAP_Message messageHandler;
  197.  
  198.         private MessageResponse() {
  199.             messageHandler = new FII_SOAP_Message();
  200.             messages = messageHandler.messages;
  201.         }            
  202.     }
  203. }
Advertisement
Add Comment
Please, Sign In to add comment