Hope you can help me with my problem in regards of getting data according to category. Please see attached picture. I wanted to LOAD THE PRODUCTS according to ACCOUNT chosen on the ACCOUNT LOOK UP.
I have a custom object of PRODUCT REFERENCE with ACCOUNT ID.
Can you help me with passing the Account ID from Controller/Helper to the APEX Class. It worked but unfortunately, I need to double click the button before it work properly. :(
Here's my Controller:
({
doInit : function(component, event, helper) {
helper.listOfAlphabet(component);
helper.getProducts(component, event, helper);
if (component.get('v.recordId') != null) {
helper.getSubActivityReportDetails(component);
}
},
loadCustomProducts : function(component, event, helper) {
var data = component.get('v.defaultData');
var term = "true";
var results = data;
var regex;
var selectedProductsIDList = [];
var selectedProductsList = [];
//var selectedCount = component.get('v.selectedCount');
regex = new RegExp(term, "i");
//results = data.filter(row=>regex.test(row.isChecked));
for (var i = 0; i < results.length; i++) {
selectedProductsIDList.push(
results[i].prod2.Id
);
selectedProductsList.push(
results[i]
);
}
component.set('v.selectedProductsIDList', selectedProductsIDList);
component.set('v.selectedProductsList', selectedProductsList);
//$A.enqueueAction(component.get('c.handleClick'));
helper.getProducts(component, event, helper);
}
})
Helper Code:
getProducts : function(component, event, helper) {
component.set("v.showSpinner", true);
var action = component.get('c.getProducts');
action.setParams({
recordID : component.get('v.recordId'),
acctID : component.get('v.selectedAccount').Id
//acctID: component.get('v.account')
});
action.setCallback(this, function(response) {
var state = response.getState();
if (state === "SUCCESS") {
var returnedValue = response.getReturnValue();
var returnedValueLength = returnedValue.length;
if (returnedValueLength > 0) {
this.defaultDateToday(component);
component.set('v.noRecordsFound', false);
component.set('v.defaultData', returnedValue);
//this.loadProducts(component);
var pageSize = component.get('v.pageSize');
component.set('v.totalRecords', returnedValueLength);
component.set('v.startPage', 0);
component.set('v.endPage', pageSize - 1);
var dataTableList = [];
for (var i = 0; i < pageSize; i++) {
if (component.get('v.defaultData').length > i) {
dataTableList.push(returnedValue[i]);
}
}
component.set('v.dataTableList', dataTableList);
component.set('v.selectedCount', component.get('v.selectedProductsList').length);
component.set('v.totalPages', Math.ceil(returnedValueLength / pageSize));
component.set('v.showSpinner', false);
component.set('v.recordLoaded', false);
}
else {
component.set("v.noRecordsFound" , true);
component.set("v.showSpinner", false);
component.set('v.recordLoaded', false);
}
}
else {
var errors = response.getError();
if (errors && Array.isArray(errors) && errors.length > 0) {
this.showToastDisplay({
"title" : "Something went wrong",
"message" : errors[0].message,
"type" : "error"
});
}
}
});
$A.enqueueAction(action);
}
And my Class:
//Product List
@AuraEnabled
public static List<ProductListWrapper> getProducts(String recordID, String acctID) {
System.debug('RECORD ID: ' + recordID);
/* Account channel = [SELECT Channel__c
FROM Account
WHERE (Id = :acctID)
LIMIT 1
];*/
List<Account> channel = [SELECT Channel__c
FROM Account
WHERE (ID = :acctID)
LIMIT 1
];
String channel2;
if(channel.size() == 1){
channel2 = channel[0].Channel__c;
}
else{
channel2 = null;
}
List<CAP_Item_Ref__c> prod2List = [SELECT Id,
Name
FROM CAP_Item_Ref__c
WHERE Channel__c = :channel2
ORDER BY Name ASC
];
Thanks in advance!