Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * @File Name : FII_Soap_SelfServiceGetReading.cls
- * @Description :
- * @Author :
- * @Group :
- * @Last Modified By :
- * @Last Modified On : 18/6/2019 12:55:37
- * @Modification Log :
- *==============================================================================
- * Ver Date Author Modification
- *==============================================================================
- * 1.0
- **/
- global with sharing class FII_Soap_SelfServiceGetReading {
- /**
- * @description
- * @author
- * @param SelfServiceRequest request
- * @return webservice
- */
- webservice static MessageResponse selfServiceGetReading(SelfServiceRequest request){
- MessageResponse messageResponse = new MessageResponse();
- Map<String,FII_Soap_Errors__mdt> catalogErrors = Util_Queries.getCatalogErrors();
- System.debug('FII_Soap_SelfServiceGetReading.selfServiceGetReading request ' + request);
- // Savepoint rollbackPoint = Database.setSavepoint();
- try{
- messageResponse.isOkay = false;
- if(request.readingList != null && validateInputData(request.readingList)){
- //crear caso y tarea antes de llamar al metodo usando la clase generica
- messageResponse = insertReading(request.readingList, null, messageResponse);
- if(messageResponse.isOkay == false){
- messageResponse.messageHandler.addError(catalogErrors.get('0004').MasterLabel,catalogErrors.get('0004').Mensaje__c);
- }
- }else{
- messageResponse.messageHandler.addError(catalogErrors.get('0003').MasterLabel,catalogErrors.get('0003').Mensaje__c);
- }
- }catch(Exception e){
- System.debug('FII_Soap_SelfServiceGetReading.selfServiceGetReading error ' + e.getStackTraceString());
- messageResponse.messageHandler.addError(catalogErrors.get('0001').MasterLabel, catalogErrors.get('0001').Mensaje__c, e);
- messageResponse.isOkay = false;
- // Database.rollback(rollbackPoint);
- }
- return messageResponse;
- }
- /**
- * @description
- * @author
- * @param List<Reading> request
- * @return Boolean
- */
- public static Boolean validateInputData(List<Reading> request){
- Boolean result = false;
- if(request != null && !request.isEmpty()){
- for(Reading current :request){
- result = !String.isBlank(current.contractNumber)
- && !String.isBlank(current.cups)
- && !String.isBlank(current.nif)
- || !String.isBlank(current.readingValue);
- }
- }
- return result;
- }
- /**
- * @description
- * @author
- * @param List<Reading> request
- * @param Id taskId
- * @param MessageResponse messageResponse
- * @return MessageResponse
- */
- public static MessageResponse insertReading(List<Reading> request, Id taskId, MessageResponse messageResponse){
- List<Contract> contractList = new List<Contract>();
- List<SObject> insertList = new List<SObject>();
- Map<String, Contract> contractMap = new Map<String, Contract>();
- Set<String> cupsSet = new Set<String>();
- Set<String> contractNumbers = new Set<String>();
- Set<String> nifs = new Set<String>();
- for(Reading current :request){
- if(!String.isBlank(current.cups)){
- cupsSet.add(current.cups);
- }
- if(!String.isBlank(current.contractNumber)){
- contractNumbers.add(current.contractNumber);
- }
- if(!String.isBlank(current.nif)){
- nifs.add(current.nif);
- }
- }
- //contractList = Util_Queries.getContractsByContractNumber(new List<String>{request.contractNumber});
- String query = 'SELECT Id, Account.NIF_CIF_Customer_NIE__c, '
- +' ContractNumber, Contract_number__c, CUPS__c, '
- +' AccountId, Rev_num__c '
- +' FROM Contract ';
- String condition = ' ';
- List<String> andConditions = new List<String>{};
- if(!cupsSet.isEmpty()){
- andConditions.add( ' CUPS__c IN :cupsSet');
- }
- if(!contractNumbers.isEmpty()){
- andConditions.add( ' Contract_number__c IN :contractNumbers');
- }
- if(!nifs.isEmpty()){
- andConditions.add( ' Account.NIF_CIF_Customer_NIE__c IN :nifs');
- }
- if (!andConditions.isEmpty()){
- condition = 'WHERE (' + String.join(andConditions, ' ) AND ( ') + ')';
- }
- condition += ' ORDER BY Contract_number__c, Rev_num__c DESC';
- query += condition;
- contractList = Database.query(query);
- System.debug('FII_Soap_SelfServiceGetReading.selfServiceGetReading contractList ' + contractList);
- if(contractList != null && !contractList.isEmpty()){
- for (Contract current :contractList){
- if(!contractMap.containsKey(current.Contract_number__c))
- contractMap.put(current.Contract_number__c, current);
- }
- for(Reading current :request){
- insertList.add(createReading(current, contractMap.get(current.contractNumber).Id, taskId));
- insertList.add(createContractTaskRelation(contractMap.get(current.contractNumber).Id, taskId));
- }
- if(!insertList.isEmpty())
- insert insertList;
- messageResponse.activityId = taskId;
- messageResponse.isOkay = true;
- }
- return messageResponse;
- }
- public static FII_Reading__c createReading( Reading readingRequest, Id contractId, Id taskId){
- return new FII_Reading__c(
- FII_NUM_RD_New_Reading__c = Integer.valueOf(readingRequest.readingValue),
- FII_LKP_RD_Contract__c = contractId,
- FII_NUM_RD_Consumption__c = !String.isBlank(readingRequest.consumption) ? Integer.valueOf(readingRequest.consumption):0,
- FII_NUM_RD_Wheels__c = !String.isBlank(readingRequest.wheels) ? Integer.valueOf(readingRequest.wheels):0,
- FII_TXT_RD_Integrator__c = readingRequest.integrator,
- FII_DAT_RD_New_Reading_Date__c = readingRequest.readingValueDate,
- FII_DAT_RD_Next_Cycle__c = readingRequest.nextCycleDate,
- FII_TXT_RD_Result__c = readingRequest.result,
- FII_SEL_RD_SourceType__c = readingRequest.sourceTypeLastReading,
- FII_NUM_RD_Last_Reading_Value__c = !String.isBlank(readingRequest.lastRealReadingValue) ? Integer.valueOf(readingRequest.lastRealReadingValue):0,
- FII_TXT_RD_Task__c = taskId
- );
- }
- public static FII_ContractTaskRelation__c createContractTaskRelation(Id contractId, Id taskId){
- return new FII_ContractTaskRelation__c(
- FII_LKP_CTR_Contractt__c = contractId,
- FII_LKP_CTR_Taskk__c = taskId
- );
- }
- global class SelfServiceRequest{
- webservice List<Reading> readingList;
- }
- global class Reading{
- webservice String contractNumber; //FII_LKP_RD_Contract__c
- webservice String cups;
- webservice String nif;
- webservice String integrator; //FII_TXT_RD_Integrator__c
- webservice String period;
- webservice String wheels; //FII_NUM_RD_Wheels__c
- webservice String cteMult ;
- webservice String previousReading;
- webservice Date lastReadingDate;
- webservice String sourceTypeLastReading; //FII_SEL_RD_SourceType__c
- webservice String lastRealReadingValue; //FII_NUM_RD_Last_Reading_Value__c
- webservice Date lastRealReadingDate;
- webservice Date nextCycleDate; //FII_DAT_RD_Next_Cycle__c
- webservice String readingValue; //FII_NUM_RD_New_Reading__c
- webservice Date readingValueDate; //FII_DAT_RD_New_Reading_Date__c
- webservice String consumption; //FII_NUM_RD_Consumption__c
- webservice String result; //FII_TXT_RD_Result__c
- }
- global class MessageResponse {
- webservice String activityId; //taskId
- webservice Boolean isOkay;
- webservice FII_SOAP_Message.Messages messages;
- private FII_SOAP_Message messageHandler;
- private MessageResponse() {
- messageHandler = new FII_SOAP_Message();
- messages = messageHandler.messages;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment