You need to sign in to do that
Don't have an account?
Arvind_Singh
Advanced Apex Specialist Superbadge - Stpe 3
Hello,
chartHelper run as system but still getting error. I have tried all possible ways but no luck. Can someone please help.
Challenge Not yet complete... here's what's wrong:
Ensure that the methods in the chartHelper class run as the system.
ChartHelper.apxc
chartHelper run as system but still getting error. I have tried all possible ways but no luck. Can someone please help.
Challenge Not yet complete... here's what's wrong:
Ensure that the methods in the chartHelper class run as the system.
ChartHelper.apxc
public class ChartHelper { @AuraEnabled// Make sure annotation should be pplied for this method public static List<chartData> GetInventory() { List<chartData> cht = new List<chartData>(); for(AggregateResult ar : [SELECT Family family, Sum(Quantity_Remaining__c) total FROM Product2 WHERE Quantity_Remaining__c > 0 GROUP BY Family]){ cht.add(new chartData((String)ar.get('family'), Integer.valueOf(ar.get('total')))); } return cht; } public class ChartData { public String name {get;set;} public Decimal val {get;set;} public ChartData(String name, Decimal val){ this.name = name; this.val = val; } } }Product2Extension.apxc
public class Product2Extension { public List<ProductWrapper> productsToInsert {get;set;} public Product2Extension(ApexPages.StandardController controller){ productsToInsert = new List<ProductWrapper>(); addRows(); } public List<SelectOption> GetFamilyOptions() { List<SelectOption> options = new List<SelectOption>(); options.add(new SelectOption(Constants.SELECT_ONE, Constants.SELECT_ONE)); for(PickListEntry eachPicklistValue : Constants.PRODUCT_FAMILY) { options.add(new SelectOption(eachPicklistValue.getValue(), eachPicklistValue.getLabel())); } return options; } public void AddRows(){ for (Integer i=0; i<Constants.DEFAULT_ROWS; i++ ){ productsToInsert.add(new ProductWrapper()); } } public List<ChartHelper.ChartData> GetInventory(){ return ChartHelper.GetInventory(); } public PageReference Save(){ SavePoint sp = Database.setSavepoint(); Integer insertedCount = 0; try { List<Product2> newProducts = new List<Product2>(); List<PriceBookEntry> pbeList = new List<PriceBookEntry>(); List<ProductWrapper> filteredProductWrappers = new List<ProductWrapper>(); for(ProductWrapper eachPW : productsToInsert) { if(!String.isBlank(eachPW.productRecord.Name) && !String.isBlank(eachPW.productRecord.Family) && eachPW.productRecord.Family!=Constants.SELECT_ONE && eachPW.productRecord.isActive && eachPW.pricebookEntryRecord.UnitPrice!=null && eachPW.productRecord.Initial_Inventory__c!=null && eachPW.productRecord.Initial_Inventory__c!=0 && eachPW.pricebookEntryRecord.UnitPrice!=0) { filteredProductWrappers.add(eachPW); } } for(ProductWrapper eachPW : filteredProductWrappers) { newProducts.add(eachPW.productRecord); } Database.SaveResult[] productSaveResults = Database.insert(newProducts, false); for(Integer i=0; i<productSaveResults.size(); i++) { if(productSaveResults[i].isSuccess()) { PriceBookEntry pbe = filteredProductWrappers[i].pricebookEntryRecord; pbe.Product2Id = productSaveResults[i].getId(); pbe.IsActive = true; pbe.Pricebook2Id = Constants.STANDARD_PRICEBOOK_ID; pbeList.add(pbe); insertedCount++; } } Database.SaveResult[] pbeSaveResults = Database.insert(pbeList, false); //If successful clear the list and display an informational message apexPages.addMessage(new ApexPages.message(ApexPages.Severity.INFO,insertedCount + ' Inserted')); productsToInsert.clear(); //Do not remove addRows(); //Do not remove } catch (Exception e){ System.debug('Exception occured:'+e.getMessage()); Database.rollback(sp); apexPages.addMessage(new ApexPages.message(ApexPages.Severity.ERROR, Constants.ERROR_MESSAGE)); } return null; } public class ProductWrapper { public Product2 productRecord {get;set;} public PriceBookEntry pricebookEntryRecord {get;set;} public ProductWrapper() { productRecord = new Product2(); pricebookEntryRecord = new PricebookEntry(); } } }Product2New.vfp
<apex:page standardcontroller="Product2" extensions="Product2Extension"> <apex:sectionHeader title="New Product" subtitle="Add Inventory" /> <apex:pageMessages id="pageMessages" /> <apex:form id="form" > <apex:actionRegion > <apex:pageBlock title="Existing Inventory" id="existingInv"> <apex:chart data="{!Inventory}" width="600" height="400"> <apex:axis type="Category" fields="name" position="left" title="Product Family"/> <apex:axis type="Numeric" fields="val" position="bottom" title="Quantity Remaining"/> <apex:barSeries axis="bottom" orientation="horizontal" xField="val" yField="name"/> </apex:chart> </apex:pageBlock> <apex:pageBlock title="New Products" > <apex:pageBlockButtons location="top"> <apex:commandButton action="{!save}" value="Save" reRender="existingInv, orderItemTable, pageMessages"/> </apex:pageBlockButtons> <apex:pageBlockButtons location="bottom"> <apex:commandButton action="{!addRows}" value="Add" reRender="orderItemTable, pageMessages" /> </apex:pageBlockButtons> <apex:pageBlockTable value="{!productsToInsert}" var="p" id="orderItemTable" > <apex:column headerValue="{!$ObjectType.Product2.Fields.Name.Label}" > <apex:inputText value="{!p.productRecord.Name}" /> </apex:column> <apex:column headerValue="{!$ObjectType.Product2.Fields.Family.Label}" > <apex:selectList value="{!p.productRecord.Family}" size="1" multiselect="false"> <apex:selectOptions value="{!FamilyOptions}"></apex:selectOptions> </apex:selectList> </apex:column> <apex:column headerValue="{!$ObjectType.Product2.Fields.IsActive.Label}" > <apex:inputField value="{!p.productRecord.isActive}" /> </apex:column> <apex:column headerValue="{!$ObjectType.PricebookEntry.Fields.UnitPrice.Label}" > <apex:inputText value="{!p.pricebookEntryRecord.UnitPrice}" /> </apex:column> <apex:column headerValue="{!$ObjectType.Product2.Fields.Initial_Inventory__c.Label}" > <apex:inputField value="{!p.productRecord.Initial_Inventory__c}" /> </apex:column> </apex:pageBlockTable> </apex:pageBlock> </apex:actionRegion> </apex:form> </apex:page>
All Answers
https://salesforce.stackexchange.com/questions/221102/trailhead-advanced-apex-specialist-challenge-3?noredirect=1#comment334978_221102