0

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. :(

enter image description here

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!

3
  • What's your question?
    – EranV
    May 13, 2020 at 13:19
  • @EranV 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. :(
    – Akosi Jeff
    May 13, 2020 at 13:27
  • the button action started at loadCustomProducts
    – Akosi Jeff
    May 13, 2020 at 13:28

1 Answer 1

0

You will need to check if selectedAccount attribute is being updated by another component event. It is possible that it has changed to null prior to calling loadCustomProducts controller method.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .