client side pagination using lightning component

Client side pagination using lightning component

  • There is a requirement to display more than 10k records using aura components and needs to be implemented inline search and sort functionality as well.  Provide download functionality as well.
  • Based on the Account record id in the url we have to pass the same id to the lightning component and fetch the related records and show in UI.
    1. AgentSelectionPage.vf
    2. AgentSelectionPageApp.app
    3. SelectionPage.cmp
    4. SelectionPage.js
    5. SelectionPage.helper
    6. SelectionPage.css
    7. OverviewDetailsCtrl.apx
  • AgentSelectionPage.vf
<apex:page sidebar="true" showHeader="true" standardController="Account" tabStyle="Account">
    <apex:outputPanel layout="block" style="overflow:auto;height:800px" >
        <!--<chatter:feed entityId="{!$CurrentPage.parameters.accountId}"/>-->
        <apex:includeLightning />
        <div style="width:100%;height:100px;" id="LightningContainer"/>    
        <script type="text/javascript">
        var accountId = "{!$CurrentPage.parameters.accountId}";
        $Lightning.use("c:AgentSelectionPageApp", function() {
            $Lightning.createComponent("c:SelectionPage", 
                                       { "accountId" : accountId },
                                       "LightningContainer", function(component) {
                                           console.log('Component created');
                                       });
        });
        </script>
        <script language="javascript">
        function resizeIframe() {
            var me = window.name;
            if (me) {
                var iframes = parent.document.getElementsByName(me);
                if (iframes && iframes.length == 1) {
                    height = document.body.offsetHeight;
                    iframes[0].style.height = height + "px";
                }
            }
        }
        resizeIframe();
        </script>
    </apex:outputPanel>
</apex:page>

  • AgentSelectionPageApp.app
<aura:application extends="ltng:outApp" access="global">
    <aura:dependency resource="c:SelectionPage"/>
</aura:application>
  • SelectionPage.cmp
<aura:component controller="OverviewDetailsCtrl" implements="lightning:isUrlAddressable,force:appHostable,flexipage:availableForAllPageTypes,flexipage:availableForRecordHome,force:hasRecordId,forceCommunity:availableForAllPageTypes,force:lightningQuickAction" access="global" >    
    <aura:attribute name="accountId" type="String" />
    <aura:attribute name="recordId" type="String" />
    <aura:attribute name="hubShowHideFlag" type="Boolean" default="false"/> 
    <aura:attribute name="successAlertFlag" type="Boolean" default="false"/> 
    <aura:attribute name="mouseHoverData" type="object" />
    <aura:attribute name="accountIdHover" type="Id" />
    <aura:attribute name="togglehover" type="boolean" default="false"/>
    <aura:attribute name="data" type="Object"/> 
    <aura:attribute name="hoverRow" type="Integer" default="-1" />
    <aura:attribute name="billingCountryList" type="List"/> 
    <aura:attribute name="billingCityList" type="List"/>
    <aura:attribute name="columns" type="List"/>  
    <aura:attribute name="selectedAccountRecords" type="List" default="[]"/> 
    <aura:attribute name="unselectedAccountRecords" type="List" default="[]"/> 
    <aura:attribute name="BillingCountry" type="String"/>  
    <aura:attribute name="cityName" type="String"/>
    <aura:attribute name="profileLinkableName" type="String"/>
    <aura:attribute name="profileLinkableList" type="List" default="['Yes','No']"/>
    <aura:attribute name="successAlert" type="String" default=""/>
    <aura:attribute name="countryName" type="String"/> 
    <aura:attribute type="String" name="sortField" />
    <aura:attribute type="Boolean" name="sortAsc" />
    <aura:attribute name="allData" type="List"/>
    <aura:attribute name="currentPageNumber" type="Integer" default="1"/>
    <aura:attribute name="pageSize" type="Integer" default="50"/>
    <aura:attribute name="totalPages" type="Integer" default="0"/>
    <aura:attribute name="pageList" type="List"/>
    <aura:attribute name="issearching"    type="Boolean" default="false"/>
    <aura:attribute type="Boolean" name="showLoader" default="true"/>
    <aura:handler name="init" value="{!this}" action="{!c.doInit}"/>
    
    <aura:if isTrue="{!v.showLoader}">
        <c:CTO_Loader></c:CTO_Loader>
    </aura:if>
    <br/> 
    <div class="slds-border_bottom">        
        <div class="demo-only demo-only--sizing slds-grid slds-wrap slds-text-align_center slds-m-around_x-small"> 
            <div class="slds-size_7-of-12">
                <div class="slds-grid slds-grid_align-spread" data-test="home-section-heading">
                    <h2 class="slds-text-heading_large">
                        <caption class="slds-headertab-sty">Corporate Traveller Onboarding</caption>
                    </h2>        
                </div>
            </div>
            <div class="slds-size_5-of-12">
                <div class="slds-clearfix">
                    <div class="slds-float_right">                        
                        <lightning:button label="Save" variant="brand" onclick="{!c.handleSelectedAccounts }"  />
                        <lightning:button label="Download as CSV" variant="brand" onclick="{!c.downloadCsv }"  />
                        <lightning:button label="Clear Filters" variant="brand" onclick="{!c.handleClearFilters }"/>
                        <lightning:button label="Cancel" variant="brand"  onclick="{!c.handleCancel }"/>                         
                    </div>
                </div>                 
            </div> 
        </div>
    </div>    
    <br/>
    
    <!--<c:CTOToastUtil  toastmsg="Hello Faz" toastType="error"/>-->
    <aura:if isTrue="{!v.successAlertFlag}">  
        <c:CTOToastUtil  toastmsg="{!v.successAlert}" toastType="success" successAlertFlag="{!v.successAlertFlag}"/>
    </aura:if>
    <!--<c:CTOToastUtil  toastmsg="Something is fishy" toastType="warning"/>-->
    
    <!--<div class="slds-scrollable"  style="overflow:auto;height:500px" >-->
    <aura:if isTrue="{!v.hubShowHideFlag}">            
        <lightning:layout multipleRows="true" horizontalAlign="center">
            <lightning:layoutItem padding="around-small" size="12">
                <div class="slds-box">
                    <table  style="table-layout:fixed;width:100%;border-collapse: collapse;" class="slds-table slds-border_left slds-border_right slds-table_cell-buffer slds-table_bordered slds-table_col-bordered">
                        <!--<caption class="slds-headertab-sty">Corporate Traveller Onboarding</caption>-->
                        <tr class="slds-text-title_caps">
                            <th scope="col" onclick="{!c.sortByCompanyName}">                                        
                                <strong><div class="slds-truncate">COMPANY NAME</div></strong>
                                <div onkeyup="{! c.searchcomanyName }">
                                    <lightning:input  aura:id="comanyName" placeholder="Search Company"
                                                     name="comanyName"
                                                     type="text"
                                                     />
                                </div>
                            </th>
                            <th scope="col" onclick="{!c.sortByCountry}">
                                <strong><div class="slds-truncate">Country</div></strong>
                                <lightning:select label="" aura:id="countryName" value="{!v.countryName}" onchange="{!c.searchcountryName}" name="BillingCountry">
                                    <option  disabled="true"  value="">Search Country</option>
                                    <aura:iteration items="{!v.billingCountryList}" var="country">
                                        <option value="{!country}" selected="{!country==v.countryName}">{!country}</option>
                                    </aura:iteration>
                                </lightning:select>
                            </th>                            
                            <th scope="col" onclick="{!c.sortByCity}">
                                <strong><div class="slds-truncate">City</div></strong>
                                <lightning:select  label=""  aura:id="cityName" value="{!v.cityName}" onchange="{!c.searchcityName}" name="cityName">
                                    <option disabled="true" value="">Search City</option>
                                    <aura:iteration items="{!v.billingCityList}" var="city">
                                        <option value="{!city}" selected="{!city==v.cityName}">{!city}</option>
                                    </aura:iteration>
                                </lightning:select>                                    
                            </th>
                            <th scope="col" onclick="{!c.sortByPayment}">
                                <strong><div class="slds-truncate">PAYMENT METHOD</div></strong>
                                <div onkeyup="{! c.searchpaymentMethod }">
                                    <lightning:input aura:id="paymentMethod"  placeholder="Search Payment"
                                                     name="paymentMethod"
                                                     type="text"
                                                     />
                                </div>
                            </th>
                            <th scope="col" onclick="{!c.sortByCreatedDate}">
                                <strong><div class="slds-truncate">Created Date</div></strong>
                                <div onkeyup="{! c.searchSearchDate }">
                                    <lightning:input aura:id="searchDate" placeholder="Search Date"
                                                     name="searchDate"
                                                     />      
                                </div>
                            </th>
                            <th scope="col" onclick="{!c.sortByIncludedKDNR}">  
                                <strong><div class="slds-truncate">Included KDNR</div></strong>                               
                                <lightning:select  label=""  aura:id="profileLinkable" value="{!v.profileLinkableName}" onchange="{!c.searchProfileLinkable}" name="profileLinkableName">
                                    <option disabled="true" value="">Search Included KDNR</option>
                                    <aura:iteration items="{!v.profileLinkableList}" var="profile">
                                        <option value="{!profile}" selected="{!profile==v.profileLinkableName}">{!profile}</option>
                                    </aura:iteration>
                                </lightning:select> 
                            </th>
                        </tr>
                    </table>
                    <div class="slds-scrollable"  style="overflow:auto;" >
                        <div style="display: block; height: 400px;overflow-y: auto;overflow-x: hidden;">
                            <table  style="table-layout:fixed;width:101%;border-collapse: collapse;" class="slds-table slds-border_left slds-border_right slds-table_cell-buffer slds-table_bordered slds-table_col-bordered">    
                                <tbody>
                                    <aura:if isTrue="{!not(empty(v.data))}">
                                        <aura:iteration items="{!v.data}" var="acc" indexVar="index"> 
                                            <tr  data-selected-Index="{!index}">
                                                <td scope="row" class="kdnrClass" data-label="sectIdx">
                                                    <a href="javascript:void(0)" style="color:#ff5f00;" onclick="{!c.redirectToAccount}" data-attriVal="{!acc.Id}">{!acc.KDNR}</a>
                                                </td>
                                                <td scope="row"  class="colomnsClass" data-label="sectIdx">
                                                    <div class="slds-truncate" title="{!acc.Name}">{!acc.Name}</div>
                                                </td>
                                                <td scope="row"   class="colomnsClass" data-label="sectIdx">
                                                    <div class="slds-truncate" title="{!acc.BillingCountry}">{!acc.BillingCountry}</div>
                                                </td>
                                                <td scope="row"    class="colomnsClass" data-label="sectIdx">
                                                    <div class="slds-truncate" title="{!acc.BillingCity}">{!acc.BillingCity}</div>
                                                </td>
                                                <td scope="row"   class="colomnsClass" data-label="sectIdx">
                                                    <div class="slds-truncate" title="{!acc.Payment_Type}">{!acc.Payment_Type}</div>
                                                </td>
                                                <td scope="row"   class="colomnsClass" data-label="sectIdx">
                                                    <div class="slds-truncate" title="{!acc.X12_Months_Rolling_Revenue}">{!acc.X12_Months_Rolling_Revenue}</div>
                                                </td>
                                                <td scope="row" class="kdnrClasss" data-label="sectIdx">
                                                    <div><a id="{!acc.Id}" style="color:#ff5f00;" onmouseenter="{!c.handleMouseHover}" onmouseout="{!c.handleMouseOut}" data-index="{!index}" tabindex="-1">{!acc.parentKDNR}</a></div>
                                                    <aura:if isTrue="{!v.hoverRow==index}">
                                                        <aura:if isTrue="{!v.togglehover==true}">
                                                            <section aria-labelledby="panel-heading-id" class="slds-popover slds-popover_panel slds-nubbin_top-left" role="dialog" style="position: absolute;padding: inherit;">                                                                
                                                                <div class="slds-popover__header">
                                                                    <header class="slds-media slds-media_center slds-m-bottom_small"> 
                                                                        <span class="slds-icon_container slds-icon-standard-account slds-media__figure">
                                                                            <lightning:icon iconName="standard:account"/> 
                                                                        </span>
                                                                        <div class="slds-media__body">
                                                                            <h2 class="slds-text-heading_medium slds-hyphenate" id="panel-heading-id">
                                                                                <a href="javascript:void(0);">
                                                                                    <p class="slds-truncate">
                                                                                        <a href="javascript:void(0);">{!v.mouseHoverData.Name}</a>
                                                                                    </p>
                                                                                </a>
                                                                            </h2>
                                                                        </div>
                                                                    </header>
                                                                    <footer class="slds-grid slds-wrap slds-grid_pull-padded">            
                                                                        <div class="slds-p-horizontal_small slds-size_2-of-2 slds-p-bottom_x-small">
                                                                            <dl>
                                                                                <dt>
                                                                                    <p class="slds-popover_panel__label slds-truncate">Owner</p>
                                                                                </dt>
                                                                                <dd>
                                                                                    <a href="javascript:void(0);">{!v.mouseHoverData.Owner.Name}</a>
                                                                                </dd>
                                                                            </dl>
                                                                        </div>
                                                                        
                                                                    </footer>
                                                                </div>
                                                                <div class="slds-popover__body">
                                                                    <dl class="slds-popover__body-list">
                                                                        <dd class="slds-m-top_x-small">
                                                                            <p class="slds-truncate">
                                                                                <a href="javascript:void(0);">{!v.mouseHoverData.Name}</a>
                                                                            </p>
                                                                            <dl class="slds-list_horizontal slds-wrap slds-text-body_small">
                                                                                <dt class="slds-item_label slds-text-color_weak slds-truncate">ABKZ</dt>
                                                                                <dd class="slds-item_detail slds-text-color_weak slds-truncate">{!v.mouseHoverData.ABKZ__c}</dd>
                                                                                <dt class="slds-item_label slds-text-color_weak slds-truncate">Mandant</dt>
                                                                                <dd class="slds-item_detail slds-text-color_weak slds-truncate">{!v.mouseHoverData.Mandant__c}</dd>
                                                                                <dt class="slds-item_label slds-text-color_weak slds-truncate">KDNR</dt>
                                                                                <dd class="slds-item_detail slds-text-color_weak slds-truncate">{!v.mouseHoverData.KDNR__c}</dd>
                                                                                <dt class="slds-item_label slds-text-color_weak slds-truncate">Profile Linkable</dt>
                                                                                <dd class="slds-item_detail slds-text-color_weak slds-truncate">{!v.mouseHoverData.Profile_Linkable__c}</dd>
                                                                            </dl>
                                                                        </dd>                                 
                                                                    </dl>
                                                                </div>
                                                            </section>
                                                        </aura:if>
                                                    </aura:if>
                                                    <!--<div class="slds-truncate" title="{!acc.parentKDNR}" alt="Google">{!acc.parentKDNR}</div>-->
                                                </td>
                                                <td scope="row"   class="colomnsClass" data-label="sectIdx">
                                                    <div class="slds-truncate" title="{!acc.CreatedDate}">{!acc.CreatedDate}</div>
                                                </td>
                                                <td scope="row"   class="colomnsClass" data-label="sectIdx">
                                                    <label class="slds-checkbox">
                                                        <ui:inputCheckbox  class="slds-checkbox--faux"  aura:id="checkAccountId" value="{!acc.Profile_Linkable}" text="{!acc.Id}"/>
                                                        <span class="slds-checkbox--faux"></span>
                                                        <span class="slds-form-element__label text"></span>
                                                    </label>
                                                </td>
                                            </tr>
                                        </aura:iteration>
                                    </aura:if>  
                                </tbody>
                            </table>
                            <aura:if isTrue="{!empty(v.data)}">
                                <div class="slds-align_absolute-center" style="height:5rem">No matching records to display</div>
                            </aura:if>
                        </div>
                    </div>
                </div>
            </lightning:layoutItem>
            <lightning:layoutItem padding="around-small" flexibility="auto">
                <!--
                <lightning:button label="First" iconName="utility:left" iconPosition="left" variant="brand"
                                  onclick="{!c.onFirst}" disabled="{! v.currentPageNumber == 1}"/>-->
                <lightning:button  label="Previous" iconName="utility:left" iconPosition="left" variant="brand"
                                  onclick="{!c.onPrev}" disabled="{! v.currentPageNumber == 1}"/>               
                <span class="slds-p-horizontal_x-small">
                    <a onclick="{!c.processMe}" name="1" 
                       class="{! (v.currentPageNumber == 1) ? 'slds-button slds-button_brand' : 'slds-button slds-button_neutral'}">1</a>
                </span>
                <aura:iteration items="{!v.pageList}" var="item">
                    <span class="slds-p-horizontal_x-small">
                        <a onclick="{!c.processMe}" name="{!item}"
                           class="{! (v.currentPageNumber == item) ? 'slds-button slds-button_brand' : 'slds-button slds-button_neutral'}">{!item}</a>
                    </span>
                </aura:iteration>                
                <span class="slds-p-horizontal_xxx-small">
                    <a>...</a>
                </span>
                <span class="slds-p-horizontal_x-small">
                    <a onclick="{!c.processMe}" name="{!v.totalPages}"
                       class="{! (v.currentPageNumber == v.totalPages) ? 'slds-button slds-button_brand' : 'slds-button slds-button_neutral'}">{!v.totalPages}</a>
                </span>                
                <lightning:button label="Next"  iconName="utility:right" iconPosition="right" variant="brand"
                                  disabled="{! v.currentPageNumber == v.totalPages}" onclick="{!c.onNext}"/>
                <!--
                <lightning:button label="Last" iconName="utility:right" iconPosition="right" variant="brand"
                                  disabled="{! v.currentPageNumber == v.totalPages}" onclick="{!c.onLast}"/>
          -->
            </lightning:layoutItem>
        </lightning:layout>
        <!--
        <div class="slds-clearfix">
            <div class="slds-float_right">                
                <lightning:button label="Save" variant="brand" onclick="{!c.handleSelectedAccounts }"  />
                <lightning:button label="Download as CSV" variant="brand" onclick="{!c.downloadCsv }"  />
                <lightning:button label="Clear Filters" variant="brand" onclick="{!c.handleClearFilters }"/>
                <lightning:button label="Cancel" variant="brand"/>                         
            </div>
        </div> 
        -->
    </aura:if>
    <!--</div>-->
</aura:component>

({
    doInit : function(component, event, helper) { 
        component.set("v.hubShowHideFlag",true);
        helper.onLoad(component, helper);
    },
    sortByKDNR : function(component, event, helper) { 
        helper.sortBy(component, "KDNR");
    },
    sortByIncludedKDNR : function(component, event, helper) { 
        helper.sortBy(component, "Profile_Linkable");
    },
    sortByCreatedDate : function(component, event, helper) { 
        helper.sortBy(component, "CreatedDate");
    },
    sortByParentKDNR : function(component, event, helper) { 
        helper.sortBy(component, "parentKDNR");
    },
    sortByRevenue : function(component, event, helper) { 
        helper.sortBy(component, "X12_Months_Rolling_Revenue");
    },
    sortByPayment : function(component, event, helper) { 
        helper.sortBy(component, "Payment_Type");
    },
    sortByCity : function(component, event, helper) { 
        helper.sortBy(component, "BillingCity");
    },
    sortByCountry : function(component, event, helper) { 
        helper.sortBy(component, "BillingCountry");
    },
    sortByCompanyName : function(component, event, helper) { 
        helper.sortBy(component, "Name");
    },
    handleMouseHover: function(component, event, helper) {
        component.set("v.accountIdHover",event.srcElement.id);
        helper.getMiniLayout(component, event, helper)
    },
    handleMouseOut: function(component, event, helper) {
        component.set("v.hoverRow",-1);
        component.set("v.togglehover",false);
    },
    redirectToAccount : function(component, event, helper) { 
        var classicURL = '/'+event.currentTarget.getAttribute("data-attriVal");        
        window.open(classicURL,'_blank');
    },
    onNext : function(component, event, helper) {        
        var pageNumber = component.get("v.currentPageNumber"); 
        component.set("v.currentPageNumber", pageNumber+1);
        helper.buildData(component, helper);
    },
    onPrev : function(component, event, helper) {        
        var pageNumber = component.get("v.currentPageNumber");
        component.set("v.currentPageNumber", pageNumber-1);
        helper.buildData(component, helper);
    },
    handleCancel :  function(component, event, helper) {
        component.set("v.showLoader",true);
        var accountId = component.get("v.accountId");
        var classicURL = '/'+accountId;        
        window.open(classicURL,'_self');
        component.set("v.showLoader",false);
    },
    processMe : function(component, event, helper) {
        component.set("v.currentPageNumber", parseInt(event.target.name));
        helper.buildData(component, helper);
    },    
    onFirst : function(component, event, helper) {        
        component.set("v.currentPageNumber", 1);
        helper.buildData(component, helper);
    },
    
    onLast : function(component, event, helper) {        
        component.set("v.currentPageNumber", component.get("v.totalPages"));
        helper.buildData(component, helper);
    },
    searchKDNRCompanyName : function (component, event, helper) {        
        var isEnterKey = event.keyCode === 13;
        if (isEnterKey) {
            component.set("v.showLoader",true);
            var queryTerm = component.find('searchKDNR').get('v.value');
            if(queryTerm) {
                component.set('v.issearching', true);
                setTimeout(function() {
                    helper.buildSearchData(component,helper,queryTerm);
                    component.set('v.issearching', false);
                }, 2000);
                
            }else{
                alert("Please enter KDNR, Company Name");
                component.set("v.showLoader",false);
            }
            
        }
    },
    searchparentKDNR :function(component, event, helper) {
        var queryTerm = component.find('parentKDNR').get('v.value');
        if(queryTerm){
            var allDataArray = [];
            allDataArray = helper.filterDataFromAllData(component,queryTerm, 'parentKDNR');
            helper.buildDataArray(component, helper,allDataArray);
        }
    },
    searchKDNR: function(component, event, helper) {
        var queryTerm = component.find('KDNRName').get('v.value');
        if(queryTerm){
            var allDataArray = [];
            allDataArray = helper.filterDataFromAllData(component,queryTerm, 'KDNR');
            helper.buildDataArray(component, helper,allDataArray);
        }
    },
    searchcomanyName: function(component, event, helper) {
        var queryTerm = component.find('comanyName').get('v.value');
        if(queryTerm){
            var allDataArray = [];
            allDataArray = helper.filterDataFromAllData(component,queryTerm.toUpperCase(), 'Name');
            helper.buildDataArray(component, helper,allDataArray);
        }
    },
    searchcountryName: function(component, event, helper) {
        var queryTerm = component.get("v.countryName");
        if(queryTerm){
            var allDataArray = [];
            allDataArray = helper.filterDataFromAllData(component,queryTerm, 'BillingCountry');
            helper.buildDataArray(component, helper,allDataArray);
        }
    },
    searchcityName: function(component, event, helper) {
        var queryTerm = component.get("v.cityName");
        debugger;
        if(queryTerm){
            var allDataArray = [];
            allDataArray = helper.filterDataFromAllData(component,queryTerm, 'BillingCity');
            helper.buildDataArray(component, helper,allDataArray);
        }
    },
    searchpaymentMethod: function(component, event, helper) {
        var queryTerm = component.find('paymentMethod').get('v.value');
        if(queryTerm){            
            var allDataArray = [];
            allDataArray = helper.filterDataFromAllData(component,queryTerm.toUpperCase(), 'Payment_Type');
            helper.buildDataArray(component, helper,allDataArray);
        }
    },
    searchProfileLinkable : function(component, event, helper) {
        var queryTerm = component.find('profileLinkable').get('v.value');
        if(queryTerm){
            var allDataArray = [];
            if(queryTerm === "Yes"){                
                allDataArray = helper.filterDataFromAllData(component,'true', 'Profile_Linkable');
            }else if(queryTerm === "No"){
                allDataArray = helper.filterDataFromAllData(component,'false', 'Profile_Linkable');
            } 
            helper.buildDataArray(component, helper,allDataArray);
        }
    }, 
    searchRevenueRM : function(component, event, helper) {
        var queryTerm = component.find('revenueRM').get('v.value');
        if(queryTerm){
            var allDataArray = [];
            allDataArray = helper.filterDataFromAllData(component,queryTerm, 'X12_Months_Rolling_Revenue');
            helper.buildDataArray(component, helper,allDataArray);
        }
    },
    searchSearchDate : function(component, event, helper) {
        var queryTerm = component.find('searchDate').get('v.value');
        if(queryTerm){
            var allDataArray = [];
            allDataArray = helper.filterDataFromAllData(component,queryTerm, 'CreatedDate');
            helper.buildDataArray(component, helper,allDataArray);
        }
    },
    doCaptureChangedValue : function(component, event, helper) {
        var checkbox = event.getSource();
        var selectedAccountRecord = component.get("v.selectedAccountRecords");
        var unselectedAccountRecord = component.get("v.unselectedAccountRecords");
        if(checkbox.get("v.value")){
            selectedAccountRecord.push(checkbox.get("v.text"));   
            //unselectedAccountRecord.splice(checkbox.get("v.text"), 1);
        }else{
            unselectedAccountRecord.push(checkbox.get("v.text"));
            //selectedAccountRecord.splice(checkbox.get("v.text"), 1);
        }
        component.set("v.selectedAccountRecords",selectedAccountRecord);
        component.set("v.unselectedAccountRecords",unselectedAccountRecord);
    },
    searchBillingCountry : function(component, event, helper) {
        var BillingCountryValue = component.get("v.BillingCountry");
    },
    //Process the selected contacts
    handleSelectedAccounts: function(component, event, helper) {
        component.set("v.showLoader",true);
        var selectedAccounts = [];
        var unSelectedAccounts = [];
        var checkvalue = component.find("checkAccountId");        
        if(!Array.isArray(checkvalue)){
            if (checkvalue.get("v.value") == true) {                
                selectedAccounts.push(checkvalue.get("v.text"));
            }
        }else{
            for (var i = 0; i < checkvalue.length; i++) {
                if (checkvalue[i].get("v.value") == true) {
                    selectedAccounts.push(checkvalue[i].get("v.text"));
                }else{
                    unSelectedAccounts.push(checkvalue[i].get("v.text"));
                }
            }
        }
        console.log('unSelectedAccounts-' + unSelectedAccounts);
        console.log('selectedAccounts-' + selectedAccounts);
        
        var action = component.get("c.doUpdateSelectedUnsSelected");
        action.setParams({
            selectedAccounts   : selectedAccounts,
            unSelectedAccounts : unSelectedAccounts
        });
        action.setCallback(this,function(response) {
            var state = response.getState();
            if (state === "SUCCESS") {   
                //console.log("success or failure ::"+response.getReturnValue());
                helper.removeFilters(component, helper);
                //$A.get("e.force:refreshView").fire();
                if(response.getReturnValue()){
                    component.set("v.successAlertFlag",true);
                    component.set("v.successAlert",response.getReturnValue());
                }
                //helper.onLoad(component, helper);
                component.set("v.showLoader",false);
            }else if(state === "ERROR"){
                var errors = action.getError();
                if (errors) {
                    if (errors[0] && errors[0].message) {
                        alert(errors[0].message);
                    }
                }
                component.set("v.showLoader",false);
            }else if (status === "INCOMPLETE") {
                alert('No response from server or client is offline.');
                component.set("v.showLoader",false);
            }
        });
        $A.enqueueAction(action);
    },
    handleClearFilters : function(component, event, helper) {        
        component.set("v.showLoader",true);
        helper.removeFilters(component, helper);
        helper.onLoad(component, helper);
        //helper.buildDataArray(component, helper,allData);
        //component.set("v.showLoader",false);
    },
    downloadCsv : function(component,event,helper){
        var stockData = component.get("v.allData");  
        var csv = helper.convertArrayOfObjectsToCSV(component,stockData);   
        if (csv == null){
            return;
        }     
        var hiddenElement = document.createElement('a');
        hiddenElement.href = 'data:text/csv;charset=utf-8,' + encodeURI(csv);
        hiddenElement.target = '_self';
        hiddenElement.download = 'ExportData.csv'; 
        document.body.appendChild(hiddenElement);
        hiddenElement.click();
    },
})

({
    onLoad : function(component, helper) {
        this.removeFilters(component, helper);
        var accountId = component.get("v.accountId") ? component.get("v.accountId") :component.get("v.recordId"); 
        var action = component.get("c.doGetHeirarchyAccounts");
        var billingCountryList = [];
        var billingCityList = [];
        action.setParams({
            accountId : accountId
        });
        action.setCallback(this,function(response) {
            var state = response.getState();
            if (state === "SUCCESS") {
                if(response.getReturnValue() !== null){
                    component.set("v.totalPages", Math.ceil(response.getReturnValue().length/component.get("v.pageSize")));
                    component.set("v.allData", response.getReturnValue());
                    for (var key in response.getReturnValue()) {
                        if (response.getReturnValue().hasOwnProperty(key)) {
                            if(response.getReturnValue()[key].BillingCountry){
                                if(billingCountryList.indexOf(response.getReturnValue()[key].BillingCountry.toUpperCase()) === -1) {
                                    billingCountryList.push(response.getReturnValue()[key].BillingCountry);
                                }
                            }
                            if(response.getReturnValue()[key].BillingCity){
                                if(billingCityList.indexOf(response.getReturnValue()[key].BillingCity.toUpperCase()) === -1) {
                                    billingCityList.push(response.getReturnValue()[key].BillingCity);
                                }
                            }
                            
                        }
                    }
                    billingCountryList = [... new Set(billingCountryList)];
                    billingCityList = [... new Set(billingCityList)];
                    billingCountryList.sort();
                    billingCityList.sort();
                    component.set("v.billingCountryList",billingCountryList);
                    component.set("v.billingCityList",billingCityList);
                    component.set("v.currentPageNumber",1);
                    window.allData = component.get("v.allData");
                    helper.buildData(component, helper); 
                }else{
                    component.set("v.showLoader",false);
                }
            }else if(state === "ERROR"){
                var errors = action.getError();
                if (errors) {
                    if (errors[0] && errors[0].message) {
                        alert(errors[0].message);
                    }
                }
                component.set("v.showLoader",false);
                
            }else if (status === "INCOMPLETE") {
                alert('No response from server or client is offline.');
                component.set("v.showLoader",false);
                
            }
        });
        var requestInitiatedTime = new Date().getTime();
        $A.enqueueAction(action);
    },
    buildSearchData : function(component, helper,queryTerm) {
        var accountId = component.get("v.accountId"); 
        var action = component.get("c.doSearchKDNRCompany");
        action.setParams({
            accountId : accountId,
            searchString : queryTerm
        });
        action.setStorable();
        action.setCallback(this,function(response) {
            var state = response.getState();
            if (state === "SUCCESS") {
                component.set("v.totalPages", Math.ceil(response.getReturnValue().length/component.get("v.pageSize")));
                component.set("v.allData", response.getReturnValue());
                component.set("v.currentPageNumber",1);
                helper.buildData(component, helper);
            }else if(state === "ERROR"){
                var errors = action.getError();
                if (errors) {
                    if (errors[0] && errors[0].message) {
                        alert(errors[0].message);
                    }
                }
            }else if (status === "INCOMPLETE") {
                alert('No response from server or client is offline.');
            }
        });
        var requestInitiatedTime = new Date().getTime();
        $A.enqueueAction(action);
    },
    buildDataArray : function(component, helper,allDataArray) {
        var data = [];
        var pageNumber = component.get("v.currentPageNumber");
        var pageSize = component.get("v.pageSize");
        var allData = allDataArray;
        var x = (pageNumber-1)*pageSize;
        
        for(; x<=(pageNumber)*pageSize; x++){
            if(allData[x]){
                data.push(allData[x]);
            }
        }
        component.set("v.data", data);
        helper.generatePageList(component, pageNumber);
    },
    buildData : function(component, helper) {
        var data = [];
        var pageNumber = component.get("v.currentPageNumber");
        var pageSize = component.get("v.pageSize");
        var allData = component.get("v.allData");
        var x = (pageNumber-1)*pageSize;
        
        for(; x<=(pageNumber)*pageSize; x++){
            if(allData[x]){
                data.push(allData[x]);
            }
        }
        component.set("v.data", data); 
        helper.generatePageList(component, pageNumber);
    },
    generatePageList : function(component, pageNumber){
        pageNumber = parseInt(pageNumber);
        var pageList = [];
        var totalPages = component.get("v.totalPages");
        if(totalPages > 1){
            if(totalPages <= 10){
                var counter = 2;
                for(; counter < (totalPages); counter++){
                    pageList.push(counter);
                } 
            } else{
                if(pageNumber < 5){
                    pageList.push(2, 3, 4, 5, 6);
                } else{
                    if(pageNumber>(totalPages-5)){
                        pageList.push(totalPages-5, totalPages-4, totalPages-3, totalPages-2, totalPages-1);
                    } else{
                        pageList.push(pageNumber-2, pageNumber-1, pageNumber, pageNumber+1, pageNumber+2);
                    }
                }
            }
        }
        component.set("v.pageList", pageList);        
        component.set("v.showLoader",false);
    },  
    removeFilters : function(component,helper){
        component.find("parentKDNR").set("v.value", "");
        component.find("KDNRName").set("v.value", "");
        component.find("comanyName").set("v.value", "");
        component.find("paymentMethod").set("v.value", "");
        component.find("profileLinkable").set("v.value", "");
        component.find("searchDate").set("v.value", "");
        component.find("revenueRM").set("v.value", "");
        component.set("v.countryName","");
        component.set("v.cityName","");
    },
    convertArrayOfObjectsToCSV : function(component,objectRecords){
        var csvStringResult, counter, keys, columnDivider, lineDivider;
        if (objectRecords == null || !objectRecords.length) {
            return null;
        }
        columnDivider = ',';
        lineDivider =  '\n';
        keys = ['KDNR','Name','BillingCountry','BillingCity','Payment_Type','X12_Months_Rolling_Revenue','CreatedDate','Profile_Linkable','parentKDNR'];
        csvStringResult = '';
        //csvStringResult += keys.join(columnDivider);
        csvStringResult += ['KDNR Name','Company Name','Billing Country','Billing City','Payment Type','REVENUE R12M','Created Date','Included KDNR','Parent KDNR' ];
        csvStringResult += lineDivider;
        for(var i=0; i < objectRecords.length; i++){   
            counter = 0;
            for(var sTempkey in keys) {
                var skey = keys[sTempkey] ;  
                if(counter > 0){ 
                    csvStringResult += columnDivider; 
                } 
                console.log(objectRecords[i][skey]);
                if(objectRecords[i][skey] != undefined){
                    csvStringResult += '"'+ objectRecords[i][skey]+'"';
                }else{
                    csvStringResult += '"'+ '' +'"';
                }
                counter++;
            }
            csvStringResult += lineDivider;
        } 
        return csvStringResult;        
    },
    filterDataFromAllData: function(component,queryTerm, searchField){
        try {
            var tempArray = allData.filter(function(item){
                var temp = '';
                if(searchField === 'Profile_Linkable'){
                    temp = (item && item[searchField] && item[searchField].toString()) ? item[searchField].toString() : 'false';
                }else{
                    temp = (item && item[searchField] && item[searchField].toString()) || '' ? item[searchField].toString() : '';    
                }
                return temp.includes(queryTerm)
            });
            return tempArray;
        }
        catch(e) {
            alert(e);
        }
    },
    getMiniLayout:function(component, event, helper){ 
        var accountId = component.get("v.accountIdHover"); 
        var action = component.get("c.doMouseOverData");
        action.setParams({
            accountId : accountId
        });
        action.setStorable();
        action.setCallback(this,function(response) {
            var state = response.getState();
            if (state === "SUCCESS") {
                console.log(JSON.stringify(response.getReturnValue()));
                component.set('v.mouseHoverData', response.getReturnValue());             
                component.set("v.hoverRow", parseInt(event.target.dataset.index));
                component.set("v.togglehover",true);
            }
        });
        $A.enqueueAction(action);
    },
    sortBy: function(component, field) {
        var sortAsc = component.get("v.sortAsc"),
            sortField = component.get("v.sortField"),
            data = window.allData,
            sortAsc = field == sortField? !sortAsc: true;
        data.sort(function(a,b){
            var t1 = a[field] == b[field],
                t2 = a[field] > b[field];
            return t1? 0: (sortAsc?-1:1)*(t2?-1:1);
        });
        component.set("v.sortAsc", sortAsc);
        component.set("v.sortField", field);
        component.set("v.data", data);
    }
});

.THIS .kdnrClass{
    font-family: 'Roboto', sans-serif;
    font-weight: 600;
    font-size: 12px;
    line-height: 1.42857;
    color: #ff5f00 !important;
    font-weight: bold !important;
}
.THIS .slds-text-title_caps{
    color:black;    
    background:#eeeeee;
}

public class OverviewDetailsCtrl {
    @AuraEnabled
    public static List<Account> getLimitedAccounts(){
        List<Account> accounts = [SELECT
               Id, Name
               FROM Account ORDER BY CreatedDate LIMIT 15000];
        return accounts;
    }
}



Pass parameters using Aura Method Lightning

Child Component Code Snippet : AuraMethodChildCMP.cmp

<aura:component implements="force:appHostable,flexipage:availableForAllPageTypes,flexipage:availableForRecordHome,force:hasRecordId,forceCommunity:availableForAllPageTypes,force:lightningQuickAction" access="global" > <aura:method name="auraMethod" action="{!c.getAurMethodProperties}"> <aura:attribute name="firstName" type="String" default="Fazurulla"></aura:attribute> <aura:attribute name="lastName" type="String" default="Ganganapalli"></aura:attribute> </aura:method> </aura:component>


JS:
({ getAurMethodProperties : function(component,event,helper){ alert(event.getParam('arguments').firstName); alert(event.getParam('arguments').lastName); } })

Parent Component Code Snippet : AuraMethodParentCMP.cmp

<aura:component implements="force:appHostable,flexipage:availableForAllPageTypes,flexipage:availableForRecordHome,force:hasRecordId,forceCommunity:availableForAllPageTypes,force:lightningQuickAction" access="global" > <div class="slds-m-around_xx-large"> <c:AuraMethodChildCMP aura:id="childCmp"/> <lightning:button variant="brand" label="Submit" onclick="{!c.callAuraMethod}" /> </div> </aura:component>

JS:
({ callAuraMethod : function(component, event, helper) { var childComponent = component.find("childCmp").auraMethod(); } })

APP: AuraMethodAPP.app

<aura:application extends="force:slds"> <c:AuraMethodParentCMP></c:AuraMethodParentCMP> </aura:application>


Dynamically fetch object fields from fieldset using apex salesforce

public static List<String> readFieldSet(String fieldSetName, String ObjectName)
{
    List<String> fieldsList = new List<String>();
    Map<String, Schema.SObjectType> GlobalDescribeMap = Schema.getGlobalDescribe();
    Schema.SObjectType SObjectTypeObj = GlobalDescribeMap.get(ObjectName);
    Schema.DescribeSObjectResult DescribeSObjectResultObj = SObjectTypeObj.getDescribe();
    Schema.FieldSet fieldSetObj = DescribeSObjectResultObj.FieldSets.getMap().get(fieldSetName);
    for(Schema.FieldSetMember fieldSetMemberObj : fieldSetObj.getFields())
    {
        fieldsList.add(fieldSetMemberObj.getFieldPath());
    }
    return fieldsList;
}
List<String> listfields = readFieldSet('CF_B2C_CustomerFields','CF_Customer__c');
system.debug(string.JOIN(listfields, ', ') );
--------------------------------------------------------------
public static List<Schema.FieldSetMember> readFieldSet(String fieldSetName, String ObjectName)
{
    Map<String, Schema.SObjectType> GlobalDescribeMap = Schema.getGlobalDescribe();
    Schema.SObjectType SObjectTypeObj = GlobalDescribeMap.get(ObjectName);
    Schema.DescribeSObjectResult DescribeSObjectResultObj = SObjectTypeObj.getDescribe();
    Schema.FieldSet fieldSetObj = DescribeSObjectResultObj.FieldSets.getMap().get(fieldSetName); 
    return fieldSetObj.getFields();
}
List<Schema.FieldSetMember> fieldSetMemberList = readFieldSet('CF_B2C_CustomerFields','CF_Customer__c');
for(Schema.FieldSetMember fieldSetMemberObj : fieldSetMemberList)
{
    system.debug('API Name ====>' + fieldSetMemberObj.getFieldPath());
    system.debug('Label ====>' + fieldSetMemberObj.getLabel());
    system.debug('Required ====>' + fieldSetMemberObj.getRequired());
    system.debug('DbRequired ====>' + fieldSetMemberObj.getDbRequired());
    system.debug('Type ====>' + fieldSetMemberObj.getType());

Salesforce organization service URL in visualforce without using apex code

Code Snippet :

{!LEFT($Api.Partner_Server_URL_220, FIND( '/services', $Api.Partner_Server_URL_320))}<br/>
{!$Api.Partner_Server_URL_220}  <br/>
{!$Api.Enterprise_Server_URL_260} <br/>
{!$Api.Partner_Server_URL_250}   <br/>
{!$Api.Session_ID} <br/>

{!LEFT($Api.Partner_Server_URL_220, FIND( '/services', $Api.Partner_Server_URL_320))}a4N?fcf=00B340000090IWG<br/>


Output :


https://c.ap4.visual.force.com/
https://c.ap4.visual.force.com/services/Soap/u/22.0/00D6F000001oLO4 
https://c.ap4.visual.force.com/services/Soap/c/26.0/00D6F000001oLO4 
https://c.ap4.visual.force.com/services/Soap/u/25.0/00D6F000001oLO4
https://c.ap4.visual.force.com/a4N?fcf=00B340000090IWG

salesforce Login using command prompt and DML operations

Step1 : Getting access token from salesforce

Input :
--------
curl https://eu10.salesforce.com/services/oauth2/token -d "grant_type=password" -d "client_id=3MVG9mIli7ewofGu2Fey6P0EzbHrEZ5QW7IfZGGs6XOpO8AA3tMPg647IVo5jWNEiQduBdQTxRG.KAMSlYvIW" -d "client_secret=6367330749412135519" -d "username=cisco.systems%40yopmail.com" -d "password=Rishan786%25" -X POST -H "X-PrettyPrint:1"

Output :
========
{
  "access_token" : "00D0X000000uTD0!AQwAQCkbfDBhPM0gDej6hlPQGz6PROmeye0SOaFKnMl6iZmqpvraRPokhDoMN1eHIguvF3lqjkOeko_Te8Dvbj9pnbHf7HAa",
  "instance_url" : "https://eu10.salesforce.com",
  "id" : "https://login.salesforce.com/id/00D0X000000uTD0UAM/0050X000007a0ZeQAI",
  "token_type" : "Bearer",
  "issued_at" : "1532774651728",
  "signature" : "ejZ1kpsoqlPP1yAL4Mvs62yC73X3QN+Wc6xn3PZqb5o="
}

Step2 : Getting organization objects information

Input :
-------

curl https://eu10.salesforce.com/services/data/v20.0/sobjects/ -H "Authorization:Bearer 00D0X000000uTD0!AQwAQCkbfDBhPM0gDej6hlPQGz6PROmeye0SOaFKnMl6iZmqpvraRPokhDoMN1eHIguvF3lqjkOeko_Te8Dvbj9pnbHf7HAa" -H "X-PrettyPrint:1"

Output :
--------
{
  "encoding" : "UTF-8",
  "maxBatchSize" : 200,
  "sobjects" : [ {
    "activateable" : false,
    "createable" : false,
    "custom" : false,
    "customSetting" : false,
    "deletable" : false,
    "deprecatedAndHidden" : false,
    "feedEnabled" : false,
    "keyPrefix" : null,
    "label" : "History: ACC_ATTRIBUTE",
    "labelPlural" : "History: ACC_ATTRIBUTE",
    "layoutable" : false,
    "mergeable" : false,
    "name" : "ACC_ATTRIBUTES__History",
    "queryable" : true,
    "replicateable" : true,
    "retrieveable" : true,
    "searchable" : false,
    "triggerable" : false,
    "undeletable" : false,
    "updateable" : false,
    "urls" : {
      "rowTemplate" : "/services/data/v20.0/sobjects/ACC_ATTRIBUTES__History/{ID}",
      "describe" : "/services/data/v20.0/sobjects/ACC_ATTRIBUTES__History/describe",
      "sobject" : "/services/data/v20.0/sobjects/ACC_ATTRIBUTES__History"
    }
  }
}

Step3 :
-------
curl https://eu10.salesforce.com/services/data/v20.0/sobjects/Account -H "Authorization:Bearer 00D0X000000uTD0!AQwAQCkbfDBhPM0gDej6hlPQGz6PROmeye0SOaFKnMl6iZmqpvraRPokhDoMN1eHIguvF3lqjkOeko_Te8Dvbj9pnbHf7HAa" -H "X-PrettyPrint:1"
{
  "objectDescribe" : {
    "activateable" : false,
    "createable" : true,
    "custom" : false,
    "customSetting" : false,
    "deletable" : true,
    "deprecatedAndHidden" : false,
    "feedEnabled" : true,
    "keyPrefix" : "001",
    "label" : "Account",
    "labelPlural" : "Accounts",
    "layoutable" : true,
    "mergeable" : true,
    "name" : "Account",
    "queryable" : true,
    "replicateable" : true,
    "retrieveable" : true,
    "searchable" : true,
    "triggerable" : true,
    "undeletable" : true,
    "updateable" : true,
    "urls" : {
      "rowTemplate" : "/services/data/v20.0/sobjects/Account/{ID}",
      "describe" : "/services/data/v20.0/sobjects/Account/describe",
      "sobject" : "/services/data/v20.0/sobjects/Account"
    }
  },
  "recentItems" : [ ]
}

Step4 :
-------

curl https://eu10.salesforce.com/services/data/v20.0/sobjects/Cisco_FY__c/describe -H "Authorization:Bearer 00D0X000000uTD0!AQwAQCkbfDBhPM0gDej6hlPQGz6PROmeye0SOaFKnMl6iZmqpvraRPokhDoMN1eHIguvF3lqjkOeko_Te8Dvbj9pnbHf7HAa" -H "X-PrettyPrint:1"
{
  "activateable" : false,
  "childRelationships" : [ {
    "cascadeDelete" : true,
    "childSObject" : "Attachment",
    "deprecatedAndHidden" : false,
    "field" : "ParentId",
    "relationshipName" : "Attachments"
  }, {
    "cascadeDelete" : true,
    "childSObject" : "Cisco_Team__c",
    "deprecatedAndHidden" : false,
    "field" : "Cisco_FY__c",
    "relationshipName" : "Tracks__r"
  }, {
    "cascadeDelete" : false,
    "childSObject" : "ContentVersion",
    "deprecatedAndHidden" : false,
    "field" : "FirstPublishLocationId",
    "relationshipName" : null
  }, {
    "cascadeDelete" : true,
    "childSObject" : "EntitySubscription",
    "deprecatedAndHidden" : false,
    "field" : "ParentId",
    "relationshipName" : "FeedSubscriptionsForEntity"
  }, {
    "cascadeDelete" : false,
    "childSObject" : "FeedComment",
    "deprecatedAndHidden" : false,
    "field" : "ParentId",
    "relationshipName" : null
  }, {
    "cascadeDelete" : true,
    "childSObject" : "FeedPost",
    "deprecatedAndHidden" : false,
    "field" : "ParentId",
    "relationshipName" : null
  }, {
    "cascadeDelete" : true,
    "childSObject" : "NewsFeed",
    "deprecatedAndHidden" : false,
    "field" : "ParentId",
    "relationshipName" : null
  }, {
    "cascadeDelete" : true,
    "childSObject" : "Note",
    "deprecatedAndHidden" : false,
    "field" : "ParentId",
    "relationshipName" : "Notes"
  }, {
    "cascadeDelete" : true,
    "childSObject" : "NoteAndAttachment",
    "deprecatedAndHidden" : false,
    "field" : "ParentId",
    "relationshipName" : "NotesAndAttachments"
  }, {
    "cascadeDelete" : true,
    "childSObject" : "ProcessInstance",
    "deprecatedAndHidden" : false,
    "field" : "TargetObjectId",
    "relationshipName" : "ProcessInstances"
  }, {
    "cascadeDelete" : false,
    "childSObject" : "ProcessInstanceHistory",
    "deprecatedAndHidden" : false,
    "field" : "TargetObjectId",
    "relationshipName" : "ProcessSteps"
  }, {
    "cascadeDelete" : true,
    "childSObject" : "UserProfileFeed",
    "deprecatedAndHidden" : false,
    "field" : "ParentId",
    "relationshipName" : null
  } ],
  "createable" : true,
  "custom" : true,
  "customSetting" : false,
  "deletable" : true,
  "deprecatedAndHidden" : false,
  "feedEnabled" : false,
  "fields" : [ {
    "autoNumber" : false,
    "byteLength" : 18,
    "calculated" : false,
    "calculatedFormula" : null,
    "caseSensitive" : false,
    "controllerName" : null,
    "createable" : false,
    "custom" : false,
    "defaultValue" : null,
    "defaultValueFormula" : null,
    "defaultedOnCreate" : true,
    "dependentPicklist" : false,
    "deprecatedAndHidden" : false,
    "digits" : 0,
    "externalId" : false,
    "filterable" : true,
    "groupable" : true,
    "htmlFormatted" : false,
    "idLookup" : true,
    "inlineHelpText" : null,
    "label" : "Record ID",
    "length" : 18,
    "name" : "Id",
    "nameField" : false,
    "namePointing" : false,
    "nillable" : false,
    "picklistValues" : [ ],
    "precision" : 0,
    "referenceTo" : [ ],
    "relationshipName" : null,
    "relationshipOrder" : null,
    "restrictedPicklist" : false,
    "scale" : 0,
    "soapType" : "tns:ID",
    "sortable" : true,
    "type" : "id",
    "unique" : false,
    "updateable" : false,
    "writeRequiresMasterRead" : false
  }, {
    "autoNumber" : false,
    "byteLength" : 18,
    "calculated" : false,
    "calculatedFormula" : null,
    "caseSensitive" : false,
    "controllerName" : null,
    "createable" : true,
    "custom" : false,
    "defaultValue" : null,
    "defaultValueFormula" : null,
    "defaultedOnCreate" : true,
    "dependentPicklist" : false,
    "deprecatedAndHidden" : false,
    "digits" : 0,
    "externalId" : false,
    "filterable" : true,
    "groupable" : true,
    "htmlFormatted" : false,
    "idLookup" : false,
    "inlineHelpText" : null,
    "label" : "Owner ID",
    "length" : 18,
    "name" : "OwnerId",
    "nameField" : false,
    "namePointing" : true,
    "nillable" : false,
    "picklistValues" : [ ],
    "precision" : 0,
    "referenceTo" : [ "Group", "User" ],
    "relationshipName" : "Owner",
    "relationshipOrder" : null,
    "restrictedPicklist" : false,
    "scale" : 0,
    "soapType" : "tns:ID",
    "sortable" : true,
    "type" : "reference",
    "unique" : false,
    "updateable" : true,
    "writeRequiresMasterRead" : false
  }, {
    "autoNumber" : false,
    "byteLength" : 0,
    "calculated" : false,
    "calculatedFormula" : null,
    "caseSensitive" : false,
    "controllerName" : null,
    "createable" : false,
    "custom" : false,
    "defaultValue" : null,
    "defaultValueFormula" : null,
    "defaultedOnCreate" : true,
    "dependentPicklist" : false,
    "deprecatedAndHidden" : false,
    "digits" : 0,
    "externalId" : false,
    "filterable" : true,
    "groupable" : true,
    "htmlFormatted" : false,
    "idLookup" : false,
    "inlineHelpText" : null,
    "label" : "Deleted",
    "length" : 0,
    "name" : "IsDeleted",
    "nameField" : false,
    "namePointing" : false,
    "nillable" : false,
    "picklistValues" : [ ],
    "precision" : 0,
    "referenceTo" : [ ],
    "relationshipName" : null,
    "relationshipOrder" : null,
    "restrictedPicklist" : false,
    "scale" : 0,
    "soapType" : "xsd:boolean",
    "sortable" : true,
    "type" : "boolean",
    "unique" : false,
    "updateable" : false,
    "writeRequiresMasterRead" : false
  }, {
    "autoNumber" : false,
    "byteLength" : 240,
    "calculated" : false,
    "calculatedFormula" : null,
    "caseSensitive" : false,
    "controllerName" : null,
    "createable" : true,
    "custom" : false,
    "defaultValue" : null,
    "defaultValueFormula" : null,
    "defaultedOnCreate" : true,
    "dependentPicklist" : false,
    "deprecatedAndHidden" : false,
    "digits" : 0,
    "externalId" : false,
    "filterable" : true,
    "groupable" : true,
    "htmlFormatted" : false,
    "idLookup" : true,
    "inlineHelpText" : null,
    "label" : "FY Name",
    "length" : 80,
    "name" : "Name",
    "nameField" : true,
    "namePointing" : false,
    "nillable" : true,
    "picklistValues" : [ ],
    "precision" : 0,
    "referenceTo" : [ ],
    "relationshipName" : null,
    "relationshipOrder" : null,
    "restrictedPicklist" : false,
    "scale" : 0,
    "soapType" : "xsd:string",
    "sortable" : true,
    "type" : "string",
    "unique" : false,
    "updateable" : true,
    "writeRequiresMasterRead" : false
  }, {
    "autoNumber" : false,
    "byteLength" : 0,
    "calculated" : false,
    "calculatedFormula" : null,
    "caseSensitive" : false,
    "controllerName" : null,
    "createable" : false,
    "custom" : false,
    "defaultValue" : null,
    "defaultValueFormula" : null,
    "defaultedOnCreate" : true,
    "dependentPicklist" : false,
    "deprecatedAndHidden" : false,
    "digits" : 0,
    "externalId" : false,
    "filterable" : true,
    "groupable" : false,
    "htmlFormatted" : false,
    "idLookup" : false,
    "inlineHelpText" : null,
    "label" : "Created Date",
    "length" : 0,
    "name" : "CreatedDate",
    "nameField" : false,
    "namePointing" : false,
    "nillable" : false,
    "picklistValues" : [ ],
    "precision" : 0,
    "referenceTo" : [ ],
    "relationshipName" : null,
    "relationshipOrder" : null,
    "restrictedPicklist" : false,
    "scale" : 0,
    "soapType" : "xsd:dateTime",
    "sortable" : true,
    "type" : "datetime",
    "unique" : false,
    "updateable" : false,
    "writeRequiresMasterRead" : false
  }, {
    "autoNumber" : false,
    "byteLength" : 18,
    "calculated" : false,
    "calculatedFormula" : null,
    "caseSensitive" : false,
    "controllerName" : null,
    "createable" : false,
    "custom" : false,
    "defaultValue" : null,
    "defaultValueFormula" : null,
    "defaultedOnCreate" : true,
    "dependentPicklist" : false,
    "deprecatedAndHidden" : false,
    "digits" : 0,
    "externalId" : false,
    "filterable" : true,
    "groupable" : true,
    "htmlFormatted" : false,
    "idLookup" : false,
    "inlineHelpText" : null,
    "label" : "Created By ID",
    "length" : 18,
    "name" : "CreatedById",
    "nameField" : false,
    "namePointing" : false,
    "nillable" : false,
    "picklistValues" : [ ],
    "precision" : 0,
    "referenceTo" : [ "User" ],
    "relationshipName" : "CreatedBy",
    "relationshipOrder" : null,
    "restrictedPicklist" : false,
    "scale" : 0,
    "soapType" : "tns:ID",
    "sortable" : true,
    "type" : "reference",
    "unique" : false,
    "updateable" : false,
    "writeRequiresMasterRead" : false
  }, {
    "autoNumber" : false,
    "byteLength" : 0,
    "calculated" : false,
    "calculatedFormula" : null,
    "caseSensitive" : false,
    "controllerName" : null,
    "createable" : false,
    "custom" : false,
    "defaultValue" : null,
    "defaultValueFormula" : null,
    "defaultedOnCreate" : true,
    "dependentPicklist" : false,
    "deprecatedAndHidden" : false,
    "digits" : 0,
    "externalId" : false,
    "filterable" : true,
    "groupable" : false,
    "htmlFormatted" : false,
    "idLookup" : false,
    "inlineHelpText" : null,
    "label" : "Last Modified Date",
    "length" : 0,
    "name" : "LastModifiedDate",
    "nameField" : false,
    "namePointing" : false,
    "nillable" : false,
    "picklistValues" : [ ],
    "precision" : 0,
    "referenceTo" : [ ],
    "relationshipName" : null,
    "relationshipOrder" : null,
    "restrictedPicklist" : false,
    "scale" : 0,
    "soapType" : "xsd:dateTime",
    "sortable" : true,
    "type" : "datetime",
    "unique" : false,
    "updateable" : false,
    "writeRequiresMasterRead" : false
  }, {
    "autoNumber" : false,
    "byteLength" : 18,
    "calculated" : false,
    "calculatedFormula" : null,
    "caseSensitive" : false,
    "controllerName" : null,
    "createable" : false,
    "custom" : false,
    "defaultValue" : null,
    "defaultValueFormula" : null,
    "defaultedOnCreate" : true,
    "dependentPicklist" : false,
    "deprecatedAndHidden" : false,
    "digits" : 0,
    "externalId" : false,
    "filterable" : true,
    "groupable" : true,
    "htmlFormatted" : false,
    "idLookup" : false,
    "inlineHelpText" : null,
    "label" : "Last Modified By ID",
    "length" : 18,
    "name" : "LastModifiedById",
    "nameField" : false,
    "namePointing" : false,
    "nillable" : false,
    "picklistValues" : [ ],
    "precision" : 0,
    "referenceTo" : [ "User" ],
    "relationshipName" : "LastModifiedBy",
    "relationshipOrder" : null,
    "restrictedPicklist" : false,
    "scale" : 0,
    "soapType" : "tns:ID",
    "sortable" : true,
    "type" : "reference",
    "unique" : false,
    "updateable" : false,
    "writeRequiresMasterRead" : false
  }, {
    "autoNumber" : false,
    "byteLength" : 0,
    "calculated" : false,
    "calculatedFormula" : null,
    "caseSensitive" : false,
    "controllerName" : null,
    "createable" : false,
    "custom" : false,
    "defaultValue" : null,
    "defaultValueFormula" : null,
    "defaultedOnCreate" : true,
    "dependentPicklist" : false,
    "deprecatedAndHidden" : false,
    "digits" : 0,
    "externalId" : false,
    "filterable" : true,
    "groupable" : false,
    "htmlFormatted" : false,
    "idLookup" : false,
    "inlineHelpText" : null,
    "label" : "System Modstamp",
    "length" : 0,
    "name" : "SystemModstamp",
    "nameField" : false,
    "namePointing" : false,
    "nillable" : false,
    "picklistValues" : [ ],
    "precision" : 0,
    "referenceTo" : [ ],
    "relationshipName" : null,
    "relationshipOrder" : null,
    "restrictedPicklist" : false,
    "scale" : 0,
    "soapType" : "xsd:dateTime",
    "sortable" : true,
    "type" : "datetime",
    "unique" : false,
    "updateable" : false,
    "writeRequiresMasterRead" : false
  }, {
    "autoNumber" : false,
    "byteLength" : 765,
    "calculated" : false,
    "calculatedFormula" : null,
    "caseSensitive" : false,
    "controllerName" : null,
    "createable" : true,
    "custom" : true,
    "defaultValue" : null,
    "defaultValueFormula" : null,
    "defaultedOnCreate" : false,
    "dependentPicklist" : false,
    "deprecatedAndHidden" : false,
    "digits" : 0,
    "externalId" : false,
    "filterable" : true,
    "groupable" : true,
    "htmlFormatted" : false,
    "idLookup" : false,
    "inlineHelpText" : null,
    "label" : "Main Track",
    "length" : 255,
    "name" : "Main_Track__c",
    "nameField" : false,
    "namePointing" : false,
    "nillable" : true,
    "picklistValues" : [ {
      "active" : true,
      "defaultValue" : true,
      "label" : "RTB",
      "validFor" : null,
      "value" : "RTB"
    } ],
    "precision" : 0,
    "referenceTo" : [ ],
    "relationshipName" : null,
    "relationshipOrder" : null,
    "restrictedPicklist" : true,
    "scale" : 0,
    "soapType" : "xsd:string",
    "sortable" : true,
    "type" : "picklist",
    "unique" : false,
    "updateable" : true,
    "writeRequiresMasterRead" : false
  } ],
  "keyPrefix" : "a06",
  "label" : "Cisco FY",
  "labelPlural" : "Cisco FY",
  "layoutable" : true,
  "listviewable" : null,
  "lookupLayoutable" : null,
  "mergeable" : false,
  "name" : "Cisco_FY__c",
  "queryable" : true,
  "recordTypeInfos" : [ {
    "available" : true,
    "defaultRecordTypeMapping" : true,
    "name" : "Master",
    "recordTypeId" : "012000000000000AAA"
  } ],
  "replicateable" : true,
  "retrieveable" : true,
  "searchLayoutable" : null,
  "searchable" : true,
  "triggerable" : true,
  "undeletable" : true,
  "updateable" : true,
  "urls" : {
    "rowTemplate" : "/services/data/v20.0/sobjects/Cisco_FY__c/{ID}",
    "uiDetailTemplate" : "https://eu10.salesforce.com/{ID}",
    "uiEditTemplate" : "https://eu10.salesforce.com/{ID}/e",
    "describe" : "/services/data/v20.0/sobjects/Cisco_FY__c/describe",
    "uiNewRecord" : "https://eu10.salesforce.com/a06/e",
    "sobject" : "/services/data/v20.0/sobjects/Cisco_FY__c"
  }
}

Step5 :
-------
curl https://eu10.salesforce.com/services/data/v20.0/query?q=SELECT+name+from+Cisco_FY__c -H "Authorization:Bearer 00D0X000000uTD0!AQwAQCkbfDBhPM0gDej6hlPQGz6PROmeye0SOaFKnMl6iZmqpvraRPokhDoMN1eHIguvF3lqjkOeko_Te8Dvbj9pnbHf7HAa" -H "X-PrettyPrint:1"
{
  "totalSize" : 1,
  "done" : true,
  "records" : [ {
    "attributes" : {
      "type" : "Cisco_FY__c",
      "url" : "/services/data/v20.0/sobjects/Cisco_FY__c/a060X00002XNYY1QAP"
    },
    "Name" : "FY2018"
  } ]
}

Step6 :
-------

curl https://eu10.salesforce.com/services/data/v28.0/recent/  -H "Authorization:Bearer 00D0X000000uTD0!AQwAQCkbfDBhPM0gDej6hlPQGz6PROmeye0SOaFKnMl6iZmqpvraRPokhDoMN1eHIguvF3lqjkOeko_Te8Dvbj9pnbHf7HAa" -H "X-PrettyPrint:1"
[ {
  "attributes" : {
    "type" : "Cisco_Team__c",
    "url" : "/services/data/v28.0/sobjects/Cisco_Team__c/a070X00001FTP8LQAX"
  },
  "Id" : "a070X00001FTP8LQAX",
  "Name" : "Marketing"
}, {
  "attributes" : {
    "type" : "Cisco_Track_Leads__c",
    "url" : "/services/data/v28.0/sobjects/Cisco_Track_Leads__c/a0H0X00001OWD3IUAX"
  },
  "Id" : "a0H0X00001OWD3IUAX",
  "Name" : "Abhishek"
}, {
  "attributes" : {
    "type" : "Cisco_Quarter_Details__c",
    "url" : "/services/data/v28.0/sobjects/Cisco_Quarter_Details__c/a080X00005EfMXxQAN"
  },
  "Id" : "a080X00005EfMXxQAN",
  "Name" : "Q1"
}, {
  "attributes" : {
    "type" : "Cisco_FY__c",
    "url" : "/services/data/v28.0/sobjects/Cisco_FY__c/a060X00002XNYY1QAP"
  },
  "Id" : "a060X00002XNYY1QAP",
  "Name" : "FY2018"
}, {
  "attributes" : {
    "type" : "Cisco_User__c",
    "url" : "/services/data/v28.0/sobjects/Cisco_User__c/a0E0X00002UAtI5UAL"
  },
  "Id" : "a0E0X00002UAtI5UAL",
  "Name" : "Fazurulla Ganganapalli"
}, {
  "attributes" : {
    "type" : "Cisco_User_Session__c",
    "url" : "/services/data/v28.0/sobjects/Cisco_User_Session__c/a0F0X00000cu6BIUAY"
  },
  "Id" : "a0F0X00000cu6BIUAY",
  "Name" : "0000"
}, {
  "attributes" : {
    "type" : "Cisco_Appllications__c",
    "url" : "/services/data/v28.0/sobjects/Cisco_Appllications__c/a0C0X00000qGQ0DUAW"
  },
  "Id" : "a0C0X00000qGQ0DUAW",
  "Name" : "NGCC"
}, {
  "attributes" : {
    "type" : "Cisco_Quarter_Details__c",
    "url" : "/services/data/v28.0/sobjects/Cisco_Quarter_Details__c/a080X00005EfMY2QAN"
  },
  "Id" : "a080X00005EfMY2QAN",
  "Name" : "Q2"
}, {
  "attributes" : {
    "type" : "Contact",
    "url" : "/services/data/v28.0/sobjects/Contact/0030X00002CWDfMQAX"
  },
  "Id" : "0030X00002CWDfMQAX",
  "Name" : "Andy faz Young"
}, {
  "attributes" : {
    "type" : "ContentDocument",
    "url" : "/services/data/v28.0/sobjects/ContentDocument/0690X0000060Oh3QAE"
  },
  "Id" : "0690X0000060Oh3QAE",
  "Title" : "ACFrOgAo0rdnou-_D2OTEVtviwkLK1b55Mg78bUvplkr5y8KH90fT0ASyrI3aT2dDkZCAJFkWCrryWwZHdIE0uJUy7f0-6qUCOESOM4CfcgLKOZ6ovTEvLmE5-VEAew="
} ]

Step 7 :
--------

curl https://eu10.salesforce.com/services/data/v20.0/query?q=SELECT+Id+,+Main_Track__c+,+name+from+Cisco_FY__c -H "Authorization:Bearer 00D0X000000uTD0!AQwAQCkbfDBhPM0gDej6hlPQGz6PROmeye0SOaFKnMl6iZmqpvraRPokhDoMN1eHIguvF3lqjkOeko_Te8Dvbj9pnbHf7HAa" -H "X-PrettyPrint:1"
{
  "totalSize" : 1,
  "done" : true,
  "records" : [ {
    "attributes" : {
      "type" : "Cisco_FY__c",
      "url" : "/services/data/v20.0/sobjects/Cisco_FY__c/a060X00002XNYY1QAP"
    },
    "Id" : "a060X00002XNYY1QAP",
    "Main_Track__c" : "RTB",
    "Name" : "FY2018"
  } ]
}

Step 8 :
--------

curl https://eu10.salesforce.com/services/data/v20.0/sobjects/Account/ -H "Authorization: Bearer 00D0X000000uTD0!AQwAQCkbfDBhPM0gDej6hlPQGz6PROmeye0SOaFKnMl6iZmqpvraRPokhDoMN1eHIguvF3lqjkOeko_Te8Dvbj9pnbHf7HAa" -H "Content-Type: application/json" -d "@newaccount.json" -X POST  -H "X-PrettyPrint:1"
{
  "id" : "0010X00004DZMDJQA5",
  "success" : true,
  "errors" : [ ]
}

Step 9 :
========
Prepare the JSON data like the below :

{
  "records": [
    {
      "attributes": {
        "type": "Account",
        "referenceId": "ref1"
      },
      "name": "SampleAccount1",
      "phone": "1234567890",
      "website": "www.salesforce.com",
      "numberOfEmployees": "100",
      "industry": "Banking",
      "Contacts": {
        "records": [
          {
            "attributes": {
              "type": "Contact",
              "referenceId": "ref2"
            },
            "lastname": "Smith",
            "Title": "President",
            "email": "sample@salesforce.com"
          },
          {
            "attributes": {
              "type": "Contact",
              "referenceId": "ref3"
            },
            "lastname": "Evans",
            "title": "Vice President",
            "email": "sample@salesforce.com"
          }
        ]
      }
    },
    {
      "attributes": {
        "type": "Account",
        "referenceId": "ref4"
      },
      "name": "SampleAccount2",
      "phone": "1234567890",
      "website": "www.salesforce.com",
      "numberOfEmployees": "52000",
      "industry": "Banking",
      "childAccounts": {
        "records": [
          {
            "attributes": {
              "type": "Account",
              "referenceId": "ref5"
            },
            "name": "SampleChildAccount1",
            "phone": "1234567890",
            "website": "www.salesforce.com",
            "numberOfEmployees": "100",
            "industry": "Banking"
          }
        ]
      },
      "Contacts": {
        "records": [
          {
            "attributes": {
              "type": "Contact",
              "referenceId": "ref6"
            },
            "lastname": "Jones",
            "title": "President",
            "email": "sample@salesforce.com"
          }
        ]
      }
    }
  ]
}

Input :
=======
curl https://eu10.salesforce.com/services/data/v34.0/composite/tree/Account/ -H "Authorization: Bearer 00D0X000000uTD0!AQwAQCkbfDBhPM0gDej6hlPQGz6PROmeye0SOaFKnMl6iZmqpvraRPokhDoMN1eHIguvF3lqjkOeko_Te8Dvbj9pnbHf7HAa" -H "Content-Type: application/json" -d "@newrecords.json" -X POST  -H "X-PrettyPrint:1"

Output :
========
{
  "hasErrors" : false,
  "results" : [ {
    "referenceId" : "ref1",
    "id" : "0010X00004DZMDxQAP"
  }, {
    "referenceId" : "ref2",
    "id" : "0010X00004DZMDyQAP"
  }, {
    "referenceId" : "ref3",
    "id" : "0010X00004DZMDzQAP"
  }, {
    "referenceId" : "ref4",
    "id" : "0010X00004DZME0QAP"
  } ]
}

Step 10 : Getting the user complete information
---------

curl https://eu10.salesforce.com/services/data/v20.0/sobjects/User/0050X000007a0ZeQAI -H "Authorization:Bearer 00D0X000000uTD0!AQwAQCkbfDBhPM0gDej6hlPQGz6PROmeye0SOaFKnMl6iZmqpvraRPokhDoMN1eHIguvF3lqjkOeko_Te8Dvbj9pnbHf7HAa" -X GET -H "X-PrettyPrint:1"
{
  "attributes" : {
    "type" : "User",
    "url" : "/services/data/v20.0/sobjects/User/0050X000007a0ZeQAI"
  },
  "Id" : "0050X000007a0ZeQAI",
  "Username" : "cisco.systems@yopmail.com",
  "LastName" : "Systems",
  "FirstName" : "Cisco",
  "Name" : "Cisco Systems",
  "CompanyName" : "Cisco",
  "Division" : null,
  "Department" : null,
  "Title" : null,
  "Street" : null,
  "City" : null,
  "State" : null,
  "PostalCode" : null,
  "Country" : "UM",
  "Email" : "cisco.systems@yopmail.com",
  "Phone" : null,
  "Fax" : null,
  "MobilePhone" : null,
  "Alias" : "CSyst",
  "CommunityNickname" : "cisco.systems",
  "IsActive" : true,
  "TimeZoneSidKey" : "Europe/Dublin",
  "UserRoleId" : null,
  "LocaleSidKey" : "en_IE_EURO",
  "ReceivesInfoEmails" : false,
  "ReceivesAdminInfoEmails" : true,
  "EmailEncodingKey" : "ISO-8859-1",
  "ProfileId" : "00e0X000001LevTQAS",
  "UserType" : "Standard",
  "LanguageLocaleKey" : "en_US",
  "EmployeeNumber" : null,
  "DelegatedApproverId" : null,
  "ManagerId" : null,
  "LastLoginDate" : "2018-07-28T06:03:03.000+0000",
  "LastPasswordChangeDate" : "2018-07-02T14:30:44.000+0000",
  "CreatedDate" : "2018-07-02T14:29:08.000+0000",
  "CreatedById" : "0050X000007a0ZeQAI",
  "LastModifiedDate" : "2018-07-28T08:33:49.000+0000",
  "LastModifiedById" : "0050X000007a0ZeQAI",
  "SystemModstamp" : "2018-07-28T08:33:50.000+0000",
  "OfflineTrialExpirationDate" : null,
  "OfflinePdaTrialExpirationDate" : null,
  "UserPermissionsMarketingUser" : true,
  "UserPermissionsOfflineUser" : true,
  "UserPermissionsCallCenterAutoLogin" : false,
  "UserPermissionsMobileUser" : false,
  "UserPermissionsSFContentUser" : true,
  "UserPermissionsKnowledgeUser" : false,
  "UserPermissionsInteractionUser" : false,
  "UserPermissionsSupportUser" : true,
  "ForecastEnabled" : true,
  "UserPreferencesActivityRemindersPopup" : true,
  "UserPreferencesEventRemindersCheckboxDefault" : true,
  "UserPreferencesTaskRemindersCheckboxDefault" : true,
  "UserPreferencesReminderSoundOff" : false,
  "UserPreferencesDisableAutoSubForFeeds" : false,
  "UserPreferencesApexPagesDeveloperMode" : true,
  "UserPreferencesHideCSNGetChatterMobileTask" : false,
  "UserPreferencesHideCSNDesktopTask" : false,
  "UserPreferencesSortFeedByComment" : false,
  "UserPreferencesOptOutOfTouch" : false,
  "UserPreferencesLightningExperiencePreferred" : false,
  "ContactId" : null,
  "AccountId" : null,
  "CallCenterId" : null,
  "Extension" : null,
  "FederationIdentifier" : null,
  "AboutMe" : null,
  "CurrentStatus" : null,
  "FullPhotoUrl" : "https://c.eu10.content.force.com/profilephoto/7290X000000srob/F",
  "SmallPhotoUrl" : "https://c.eu10.content.force.com/profilephoto/7290X000000srob/T",
  "DigestFrequency" : "D",
  "Clone_Admin__c" : false
}

Step 11 :
=========

curl https://eu10.salesforce.com/services/data/ -H "Authorization:Bearer 00D0X000000uTD0!AQwAQCkbfDBhPM0gDej6hlPQGz6PROmeye0SOaFKnMl6iZmqpvraRPokhDoMN1eHIguvF3lqjkOeko_Te8Dvbj9pnbHf7HAa" -X GET -H "X-PrettyPrint:1"
[ {
  "label" : "Winter '11",
  "url" : "/services/data/v20.0",
  "version" : "20.0"
}, {
  "label" : "Spring '11",
  "url" : "/services/data/v21.0",
  "version" : "21.0"
}, {
  "label" : "Summer '11",
  "url" : "/services/data/v22.0",
  "version" : "22.0"
}, {
  "label" : "Winter '12",
  "url" : "/services/data/v23.0",
  "version" : "23.0"
}, {
  "label" : "Spring '12",
  "url" : "/services/data/v24.0",
  "version" : "24.0"
}, {
  "label" : "Summer '12",
  "url" : "/services/data/v25.0",
  "version" : "25.0"
}, {
  "label" : "Winter '13",
  "url" : "/services/data/v26.0",
  "version" : "26.0"
}, {
  "label" : "Spring '13",
  "url" : "/services/data/v27.0",
  "version" : "27.0"
}, {
  "label" : "Summer '13",
  "url" : "/services/data/v28.0",
  "version" : "28.0"
}, {
  "label" : "Winter '14",
  "url" : "/services/data/v29.0",
  "version" : "29.0"
}, {
  "label" : "Spring '14",
  "url" : "/services/data/v30.0",
  "version" : "30.0"
}, {
  "label" : "Summer '14",
  "url" : "/services/data/v31.0",
  "version" : "31.0"
}, {
  "label" : "Winter '15",
  "url" : "/services/data/v32.0",
  "version" : "32.0"
}, {
  "label" : "Spring '15",
  "url" : "/services/data/v33.0",
  "version" : "33.0"
}, {
  "label" : "Summer '15",
  "url" : "/services/data/v34.0",
  "version" : "34.0"
}, {
  "label" : "Winter '16",
  "url" : "/services/data/v35.0",
  "version" : "35.0"
}, {
  "label" : "Spring '16",
  "url" : "/services/data/v36.0",
  "version" : "36.0"
}, {
  "label" : "Summer '16",
  "url" : "/services/data/v37.0",
  "version" : "37.0"
}, {
  "label" : "Winter '17",
  "url" : "/services/data/v38.0",
  "version" : "38.0"
}, {
  "label" : "Spring '17",
  "url" : "/services/data/v39.0",
  "version" : "39.0"
}, {
  "label" : "Summer '17",
  "url" : "/services/data/v40.0",
  "version" : "40.0"
}, {
  "label" : "Winter '18",
  "url" : "/services/data/v41.0",
  "version" : "41.0"
}, {
  "label" : "Spring ΓÇÖ18",
  "url" : "/services/data/v42.0",
  "version" : "42.0"
}, {
  "label" : "Summer '18",
  "url" : "/services/data/v43.0",
  "version" : "43.0"
} ]

Step 12 :
=========
curl https://eu10.salesforce.com/services/data/v43.0 -H "Authorization:Bearer 00D0X000000uTD0!AQwAQCkbfDBhPM0gDej6hlPQGz6PROmeye0SOaFKnMl6iZmqpvraRPokhDoMN1eHIguvF3lqjkOeko_Te8Dvbj9pnbHf7HAa" -X GET -H "X-PrettyPrint:1"
{
  "tooling" : "/services/data/v43.0/tooling",
  "metadata" : "/services/data/v43.0/metadata",
  "folders" : "/services/data/v43.0/folders",
  "eclair" : "/services/data/v43.0/eclair",
  "prechatForms" : "/services/data/v43.0/prechatForms",
  "chatter" : "/services/data/v43.0/chatter",
  "tabs" : "/services/data/v43.0/tabs",
  "appMenu" : "/services/data/v43.0/appMenu",
  "quickActions" : "/services/data/v43.0/quickActions",
  "queryAll" : "/services/data/v43.0/queryAll",
  "commerce" : "/services/data/v43.0/commerce",
  "wave" : "/services/data/v43.0/wave",
  "iot" : "/services/data/v43.0/iot",
  "analytics" : "/services/data/v43.0/analytics",
  "search" : "/services/data/v43.0/search",
  "identity" : "https://login.salesforce.com/id/00D0X000000uTD0UAM/0050X000007a0ZeQAI",
  "composite" : "/services/data/v43.0/composite",
  "parameterizedSearch" : "/services/data/v43.0/parameterizedSearch",
  "fingerprint" : "/services/data/v43.0/fingerprint",
  "theme" : "/services/data/v43.0/theme",
  "nouns" : "/services/data/v43.0/nouns",
  "event" : "/services/data/v43.0/event",
  "serviceTemplates" : "/services/data/v43.0/serviceTemplates",
  "recent" : "/services/data/v43.0/recent",
  "connect" : "/services/data/v43.0/connect",
  "licensing" : "/services/data/v43.0/licensing",
  "limits" : "/services/data/v43.0/limits",
  "process" : "/services/data/v43.0/process",
  "async-queries" : "/services/data/v43.0/async-queries",
  "dedupe" : "/services/data/v43.0/dedupe",
  "query" : "/services/data/v43.0/query",
  "jobs" : "/services/data/v43.0/jobs",
  "match" : "/services/data/v43.0/match",
  "emailConnect" : "/services/data/v43.0/emailConnect",
  "compactLayouts" : "/services/data/v43.0/compactLayouts",
  "knowledgeManagement" : "/services/data/v43.0/knowledgeManagement",
  "sobjects" : "/services/data/v43.0/sobjects",
  "actions" : "/services/data/v43.0/actions",
  "support" : "/services/data/v43.0/support"
}





Anonymous Rest API using Force.com Salesforce

Apex :

@RestResource(urlMapping = '/agentInfor/*')
global class AgentInformationCls {
    @HttpGet
    global static List < InboundAgentInfomation > getAgentInfomation() {
        List < InboundAgentInfomation > agentInfo = new List < InboundAgentInfomation > ();
       
        RestRequest req = RestContext.request;
        String agentEmailAddress = req.params.get('emailId');
        String primarySkill = req.params.get('primarySkill');
        String secondarySkill = req.params.get('secondarySkill');
        String firstName = req.params.get('firstName');
        String lastName = req.params.get('lastName');
        String locationName = req.params.get('locationName');
       
        try {
            //dynamic query formation
            String wherequery = 'select  id, Client__c, Confirm_Password1__c, Contact__c, Email_Address__c, Experience_in_Primary_Skill__c,'
            +' Experience_in_Secondary_Skill__c, First_Name__c, Last_Name__c, Location__c, Password1__c, Primary_Skill__c, Secondary_Skill__c,'
            +'Primar_Skill_Proficiency1__c, Secondary_Skill_Proficiency1__c, Career_Level__c from Base_Data__c  where (';
            if (String.isNotBlank(agentEmailAddress)) {
                wherequery = wherequery + 'Email_Address__c = \'' + agentEmailAddress + '\'' + ' and ';
            }
            if (String.isNotBlank(primarySkill)) {
                wherequery = wherequery + 'Primary_Skill__c= \'' + primarySkill + '\'' + ' and ';
            }
            if (String.isNotBlank(secondarySkill)) {
                wherequery = wherequery + 'Secondary_Skill__c = \'' + secondarySkill + '\'' + ' and ';
            }
            if (String.isNotBlank(firstName)) {
                wherequery = wherequery + 'First_Name__c = \'' + firstName + '\'' + ' and ';
            }
            if (String.isNotBlank(lastName)) {
                wherequery = wherequery + 'Last_Name__c = \'' + lastName + '\'' + ' and ';
            }
            if (String.isNotBlank(locationName)) {
                wherequery = wherequery + 'Location__c = \'' + locationName + '\'' + ' and ';
            }
            if (wherequery.substring(wherequery.length() - 4) == 'and ') {
                wherequery = wherequery.substring(0, wherequery.length() - 4);
            }
           
            wherequery = wherequery + ') order by Primar_Skill_Proficiency1__c desc';
            system.debug(wherequery);
            //Adding dynamic query to list
            List < Base_Data__c > acc = Database.query(wherequery);
            if (!acc.isEmpty()) {
                for (Base_Data__c b: acc) {
                    agentInfo.add(new InboundAgentInfomation(b, acc.size()));
                }
                return agentInfo;
            } else {
                agentInfo.add(new InboundAgentInfomation('No Results Found'));
                return agentInfo;
            }
        } catch (exception e) {
            agentInfo.add(new InboundAgentInfomation(e.getMessage()));
            return agentInfo;
        }

    }
    global class InboundAgentInfomation {
        global Integer recordCount;
        global Base_Data__c agentList;
        global String errorMessage;

        global InboundAgentInfomation(Base_Data__c agentList, Integer recordCount) {
            this.agentList = agentList;
            this.recordCount = recordCount;
        }
        global InboundAgentInfomation(String errorMessage) {
            this.errorMessage = errorMessage;
            this.agentList = agentList;
            this.recordCount = 0;
        }
    }
}



Featured

What is Cryptography in salesforce and what are all the algorithms provided by them ?

A). It is a security protocal between two systems. Lets say we are integration two systems without any encrytion mechanism then hackers wil...

Popular