Skip to main content
1 of 4
Matt
  • 1
  • 2

Apec Class Issue when parsing a text string back to a record

I have a LWC that essentially collects data in a table format.

I am then using an apex action (apex class) to parse the text string output of the LWC back to a record - see the code below:

public without sharing class PointofConnSingle { //input details that comes to apex from flow public class FlowInputs{

    @InvocableVariable
    public string applicationIdString;
    
    @InvocableVariable
    public string propertyChildStringArray;
    
}

@InvocableMethod(label='Point Of Connection Saving Single Apex')
public static List<String> saveMainsData(List<FlowInputs> request){

    List<string> applicationIdList = new List <string>();
    List<string> propertyChildStringArrayList = new List<string>();
    List<string> resultResponse = new list<string>();
    List<property__c> newPropertyToInsertList = new List<property__c>();

    for(FlowInputs requestItem : request){           
        applicationIdList.add(requestItem.applicationIdString);
        propertyChildStringArrayList.add(requestItem.propertyChildStringArray);
    }

    try{

        Id applicationId = Id.valueOf(applicationIdList[0]);        
        //main property array- processing Json
        List<PropertyJsonClass> mainPropList = PropertyJsonClass.parse(propertyChildStringArrayList[0]);

        //inserting property frist
        for(PropertyJsonClass resultPropItem: mainPropList) {                                  
            property__c newProperty = new property__c();
            newProperty.Application__c = applicationId;
            newProperty.Type_of_Property_POC__c = resultPropItem.propertyType;
            newProperty.Name = resultPropItem.propertyType;
            newProperty.Units__c = filterResponse(resultPropItem.unit);
            newProperty.Imp_Areas_M__c = filterResponse(resultPropItem.impAreas);
            newProperty.Name = resultPropItem.propertyType;
            newPropertyToInsertList.add(newProperty);            
        } 

        if(!newPropertyToInsertList.isEmpty()){
            system.debug('adding property records');
            insert newPropertyToInsertList;
        }

    }catch(Exception e){
        resultResponse.add('INSERT Failed' + e);
    }

    resultResponse.add('OK');
    return resultResponse;

}

   private static integer filterResponse(String dataToFilter){
    if(dataToFilter!='' && dataToFilter!=null){
        return integer.valueOf(dataToFilter);
    }else{
        return 0;
    }
}      

}

This works if the value put into the Units__c or Imp_Areas_M__c field is an integer but fails if a decimal is entered.

The data is entered via a LWC that outputs a text string that this code then parses into the fields

any ideas?

I assumed the Private static class at the bottom converts the value to a integer - but obviously not

Error Message is - The number of results does not match the number of interviews that were executed in a single bulk execution request.

Matt
  • 1
  • 2