Few Apex Scenario Based Programming Questions

Recently at one of the local Hackathon I came across some scenario based Apex programming questions and I thought I would go ahead and blog on them. Below are three scenarios on which we are going to write some Apex code!
Scenario 1: Create a Method which accepts List of String and returns a Map with count on how many times a specific value is repeated in a given List. Example:- List<'A', 'B', 'A', 'C', 'B', 'A'> should result in "{A=3, B=2, C=1}"

Approached Solution: Below is my Apex class with a method to accept List and returns a Map.

Lightning RecordForm - An enhanced Lightning Data Service

As always with every release Salesforce introduces bunch of new base components and this time they have "Lightning: recordForm" which suppresses using "lightning:recordEditForm and lightning:recordViewForm" separately to handle record view and edit.
Lets go ahead and put some sample code to create a Lightning Component using lightning recordForm!

RecordFormComp.cmp: <aura:component implements="force:appHostable,flexipage:availableForAllPageTypes,flexipage:availableForRecordHome,force:hasSObjectName,force:hasRecordId,force:lightningQuickAction" access="global" > <aura:attribute name="fieldsList"type="String[]" default="['Id', 'Name', 'BillingAddress', 'AnnualRevenue']"/> <div> <center> <h1><b>Lightning Record Form<br/> Object_Name: {!v.sObjectName} - Record_Id: {!v.recordId} </b> …

Using Component.find vs Document.getElementById to Dynamically Hide or Show Content in Lightning Components

Business Scenario: To dynamically Show or Hide content in Lightning Components. Using "Document.getElementById"Below are Component and Controller code to show or hide content by using Document.getElementById
<aura:component implements="force:appHostable,flexipage:availableForAllPageTypes,flexipage:availableForRecordHome,force:hasRecordId,force:lightningQuickAction" access="global" > <!--Set component attribute--> <aura:attribute name="valSet"type="Set"/> <center> <!--Button to display Set values--> <lightning:button onclick="{!c.getSetValues}" label="Set Values"/> </center> <!--Construct HTML Table using SLDS--> <table class="slds-table slds-table--bordered slds-table--striped slds-table--cell-buffer slds-table--fixed-layout"> <thead> <tr class="slds-text-heading--label…

Collections In Lightning Components

Collections are building blocks for any object oriented programming language. In Apex we use LIST, SET, MAP collection types in order to work with records!

Here in this blog, we are going look at some basic code on using Collection Types in context with Lightning Components..... First we create an Apex Controller with two methods to return List and Map respectively. We will use these methods to access from our Lighting Component and display them on the Home Page.
publicclassLightningCollectionTypes{@AuraEnabledpublicstaticList<Account>lghtList(){List<Account>lstAccnts=[SELECTId,NameFROMAccountLIMIT22];returnlstAccnts;}@AuraEnabledpublicstaticMap<Id,Account>lghtMap(){Map<ID,Account>m=newMap<ID,Account>([SELECTId,NameFROMAccountLIMIT22]);returnm;}} LIST Below are component and controller code for 'ListComp' lightning component that will get data from Apex controller method to store in a List and display it on the UI.


Salesforce User Interface API

With new Salesforce UI API we can get the orgs data and metadata in a single response returned form an Api call. Even Salesforce uses the same UI API to build their Lightning Experience and Salesforce for Android, iOS, and mobile web.

While making calls and getting the data, salesforce does take care of checking the field-level security settings, sharing setting, and perms. We don't have to worry about making the SOQL queries to get record data, getting object metadata and themes info, getting layout info, all this heavy lifting work will be taken care by Salesforce. Best part is that every response is returned in a formatted JSON!

UI API Endpoints are divided into 3 levels namely
1. Records Endpoint
2. Actions Endpoint
3. Favorites Endpoint
For Authentication, User Interface API uses OAuth 2.0 just like all other Salesforce REST APIs does

Reference Links:
1. User Interface API Developer Guide
2. Salesforce Blog by Raja Rao DVSalesforce UI API helps with below features:

1. …

SFDX - Create and Deploy Project to Dev Hub using VS Code

In this blog post we are going to create a sample project in Scratch Org and deploy it to Dev Hub using VisualStudio Code using SFDX commands
Create DevHub Account: In order to create a Scratch Org we need to have a DevHub Account which can be created using this Link. This DevHub is a free account and is valid only for 30 days to use! Create Scratch Org: Once we have our DevHub Account created and now we can go ahead and create our Scratch Org using below commands Also make sure you have CLI installed for Windows/Mac using Install the Salesforce CLI steps

Now lets go ahead and authorize DevHub using "sfdx force:auth:web:login -d -a MyDevHub" from terminal and this will prompt you to allow access screen and once authentication is successful you will see a message saying 'You may now close the browser' like below

Now that we have authenticated our DevHub, let's check logging into it using alias name 'MyDevHub' which we gave in above step. From te…