How to Avoid Duplicate Name Record Simply Using a Apex Controller Method and Validating a Lightning Input Form with Email Regex Pattern Checked and Submit Form on Click Button in Salesforce Lightning | How to prevent duplicate name record simply using a apex controller method

1,817 views

Hey guys, today in this post we are going to learn about How to Avoid Duplicate Name Record Simply Using a Apex Controller Method and Validating a Lightning Input Form with Email Regex Pattern Checked and Submit on Click Button in Salesforce Lightning.

Files we used in this post example:-

preventDuplicateApp.app Lightning Application It is used for call the component to preview on browser.

preventDuplicateCmp.cmp

Lightning Component It is used for create a Score Card form  on lightning component .

preventDuplicateCmpController.js

JavaScript Controller File It is used for click function for submit the Input field Value into Database.
preventDuplicateCmpHelper.js JavaScript Helper Controller File It is used for fetch the dropdown picklist value from server and it’s call on Javascript doInit function.
preventDuplicateCmp.css Component Style CSS It is used for create custom Style CSS for alignment the form input field and Validation Error.
preventDuplicateController.apxc Apex Controller File It is used for insert input value into database server.

Live Demo

How to Avoid Duplicate Name Record Simply Using a Apex Controller Method -- w3web.net

 

You can download file directly from github by Click Here.

Note:: – You will get an email, so put correct email and mobile number and BEGIN YOUR JOURNEY from Today!

 

 

 

Other related post that would you like to learn in Salesforce

 

Step 1:- Create Lightning Application : preventDuplicateApp.app

From Developer Console >> File >> New >> Lightning Application

preventDuplicateApp.app [Component Application File]

  1.    <aura:application extends="force:slds">
  2.     <c:preventDuplicateCmp/>
  3.   </aura:application>

Step 2:- Create Lightning Component : preventDuplicateCmp.cmp

Note:: – You will get an email, so put correct email and mobile number and BEGIN YOUR JOURNEY from Today!
 
 

From Developer Console >> File >> New >> Lightning Component

preventDuplicateCmp.cmp [Lightning Component File]

  1.     <aura:component controller="preventDuplicateController" implements="force:appHostable,flexipage:availableForAllPageTypes,flexipage:availableForRecordHome,force:hasRecordId,forceCommunity:availableForAllPageTypes,force:lightningQuickAction" access="global" >
  2. 	 <aura:attribute name="scoreCardObj" type="scoreCard__c" default="{'sobjectType':'scoreCard__c'}"/>    
  3.      <aura:handler name="init" value="{!this}" action="{!c.doInit}"/>     
  4.      <aura:attribute name="statusListItems" type="string[]"/>
  5.     <aura:attribute name="dupItems" type="string"/>
  6.     <aura:attribute name="dupNameNull" type="boolean" default="false"/>
  7.  
  8.     <div class="slds slds-padding-around--medium">
  9.  
  10.         <div class="slds-grid slds-wrap">
  11.             <div class="slds-p-horizontal--medium slds-col slds-size_6-of-12 slds-m-bottom--medium">                
  12.                 <div class="slds-form-element">
  13.                     <label class="slds-form-element__label">Name</label>
  14.                     <div class="slds-form-element__controller">
  15.                         <ui:inputText class="slds-input" value="{!v.scoreCardObj.Name}" aura:id="userName"/> 
  16.                         <aura:if isTrue="{!v.dupNameNull}">
  17.                             <span class="dupName">{!v.dupItems}</span>
  18.                         </aura:if>
  19.                     </div>
  20.                 </div>
  21.             </div>
  22.  
  23.         </div>
  24.  
  25.         <div class="slds-grid slds-wrap">
  26.             <div class="slds-p-horizontal--medium slds-col slds-size_6-of-12 slds-m-bottom--medium">
  27.                 <div class="slds-form-element">
  28.                     <label class="slds-form-element__label">Email</label>
  29.                     <div class="slds-form-element__controller">
  30.                         <ui:inputEmail class="slds-input" value="{!v.scoreCardObj.Email__c}" aura:id="userEmail"/>
  31.                     </div>
  32.                 </div>
  33.             </div>
  34.  
  35.         </div>
  36.  
  37.         <div class="slds-grid slds-wrap">
  38.             <div class="slds-p-horizontal--medium slds-col slds-size_6-of-12 slds-m-bottom--medium">
  39.                 <div class="slds-form-element">
  40.                     <label class="slds-form-element__label">Phone</label>
  41.                     <div class="slds-form-element__controller">
  42.                         <ui:inputPhone class="slds-input" value="{!v.scoreCardObj.Phone_No__c}" aura:id="userPhone"/>
  43.                     </div>
  44.                 </div>
  45.             </div>
  46.  
  47.         </div>
  48.  
  49.         <div class="slds-p-horizontal--medium slds-col slds-size_6-of-12 slds-m-bottom--medium">
  50.                  <div class="slds-form-element">
  51.                      <label class="slds-form-element__label">Target Actuals</label>
  52.                      <div class="slds-form-element__controller">
  53.                          <ui:inputSelect class="slds-select" aura:id="targetId" value="{!v.scoreCardObj.targetVSActuals__c}">
  54.                              <ui:inputSelectOption text="--None--"/>
  55.                              <aura:iteration items="{!v.statusListItems}" var="statusVar">
  56.                                  <ui:inputSelectOption text="{!statusVar}"/>
  57.                              </aura:iteration>
  58.                          </ui:inputSelect>
  59.                      </div>
  60.                  </div>
  61.              </div>        
  62.  
  63.        <div class="slds-form--inline slds-p-horizontal--medium slds-col slds-size_6-of-12 slds-m-bottom--medium"> 
  64.         <div class="slds-text-align--center slds-m-top--medium">
  65.             <button class="slds-button slds-button--brand" onclick="{!c.scoreCardAction}">Submit</button>
  66.         </div>
  67.         </div> 
  68.         <br/><br/>
  69.  
  70.  <br/> <br/>
  71.    <!--Start RelatedTopics Section-->
  72. <div style="border:1px #ddd solid; padding:10px; background:#eee; margin:40px 0;">
  73.  
  74.             <p data-aura-rendered-by="435:0"><img src="https://www.w3web.net/wp-content/uploads/2021/05/thumbsUpLike.png" width="25" height="25" style="vertical-align:top; margin-right:10px;" data-aura-rendered-by="436:0"><strong data-aura-rendered-by="437:0"><span style="font-size:16px; font-style:italic; display:inline-block; margin-right:5px;">Don't forget to check out:-</span><a href="https://www.w3web.net/" target="_blank" rel="noopener noreferrer" style="text-decoration:none;" data-aura-rendered-by="440:0">An easy way to learn step-by-step online free Salesforce tutorial, To know more Click  <span style="color:#ff8000; font-size:18px;" data-aura-rendered-by="442:0">Here..</span></a></strong></p>
  75.  
  76.             <br/><br/>
  77.             <p data-aura-rendered-by="435:0"><img src="https://www.w3web.net/wp-content/uploads/2021/07/tickMarkIcon.png" width="25" height="25" style="vertical-align:top; margin-right:10px;" data-aura-rendered-by="436:0"><strong data-aura-rendered-by="437:0"><span style="font-size:17px; font-style:italic; display:inline-block; margin-right:5px; color:rgb(255 128 0);">You May Also Like →</span> </strong></p>
  78.             <div style="display:block; overflow:hidden;"> 
  79.                 <div style="width: 50%; float:left; display:inline-block">
  80.                     <ul style="list-style-type: square; font-size: 16px; margin: 0 0 0 54px; padding: 0;"> 
  81.                         <li><a href="https://www.w3web.net/lwc-get-set-lightning-checkbox-value/" target="_blank" rel="noopener noreferrer">How to get selected checkbox value in lwc</a></li>
  82.                         <li><a href="https://www.w3web.net/display-account-related-contacts-in-lwc/" target="_blank" rel="noopener noreferrer">how to display account related contacts based on AccountId in lwc</a></li>
  83.                         <li><a href="https://www.w3web.net/create-lightning-datatable-row-actions-in-lwc/" target="_blank" rel="noopener noreferrer">how to create lightning datatable row actions in lwc</a></li>
  84.                         <li><a href="https://www.w3web.net/if-and-else-condition-in-lwc/" target="_blank" rel="noopener noreferrer">how to use if and else condition in lwc</a></li>
  85.                         <li><a href="https://www.w3web.net/get-selected-radio-button-value-and-checked-default-in-lwc/" target="_blank" rel="noopener noreferrer">how to display selected radio button value in lwc</a></li>
  86.                     </ul>
  87.             </div>
  88.  
  89.             <div style="width: 50%; float:left; display:inline-block">
  90.                     <ul style="list-style-type: square; font-size: 16px; margin: 0 0 0 54px; padding: 0;"> 
  91.                         <li><a href="https://www.w3web.net/display-account-related-contacts-lwc/" target="_blank" rel="noopener noreferrer">display account related contacts based on account name in lwc</a></li>
  92.                         <li><a href="https://www.w3web.net/create-lightning-datatable-row-actions-in-lwc/" target="_blank" rel="noopener noreferrer">how to insert a record of account Using apex class in LWC</a></li>
  93.                         <li><a href="https://www.w3web.net/fetch-picklist-values-dynamic-in-lwc/" target="_blank" rel="noopener noreferrer">how to get picklist values dynamically in lwc</a></li>
  94.                         <li><a href="https://www.w3web.net/edit-save-and-remove-rows-dynamically-in-lightning-component/" target="_blank" rel="noopener noreferrer">how to edit/save row dynamically in lightning component</a></li>
  95.                         <li><a href="https://www.w3web.net/update-parent-object-from-child/" target="_blank" rel="noopener noreferrer">update parent field from child using apex trigger</a></li>
  96.                     </ul>
  97.                 </div>
  98.                <div style="clear:both;"></div> 
  99.                <br/>
  100.                 <div class="youtubeIcon">
  101.                     <a href="https://www.youtube.com/channel/UCW62gTen2zniILj9xE6LmOg" target="_blank" rel="noopener noreferrer"><img src="https://www.w3web.net/wp-content/uploads/2021/11/youtubeIcon.png" width="25" height="25" style="vertical-align:top; margin-right:10px;"/> <strong>TechW3web:-</strong> To know more, Use this <span style="color: #ff8000; font-weight: bold;">Link</span> </a>
  102.                 </div>
  103.     </div>
  104.  
  105. </div>
  106.  
  107.   <!--End RelatedTopics Section-->
  108.  
  109.     </div> 
  110. </aura:component>

Step 3:- Create Lightning Component : preventDuplicateCmpController.js

From Developer Console >> File >> New >> Lightning Component >> JavaScript Controller

preventDuplicateCmpController.js [JavaScript Controller]

  1.    ({
  2.     doInit : function(component, event, helper) {
  3. 		helper.statusListItemsView(component,helper);
  4. 	},
  5.  
  6. 	scoreCardAction : function(component, event, helper) {
  7.         var regExpEmailformat = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
  8.         component.set('v.dupNameNull',false);
  9.          var action = component.get('c.insertScoreCardInfo');
  10.         var isValidate = true;
  11.  
  12.         var userName = component.find('userName');
  13.         var userEmail = component.find('userEmail');
  14.         var userPhone = component.find('userPhone');
  15.         var targetId = component.find('targetId');
  16.  
  17.  
  18.         var userNameVal = component.find('userName').get('v.value');        
  19.         var userEmailVal = component.find('userEmail').get('v.value');
  20.         var userPhoneVal = component.find('userPhone').get('v.value');
  21.         var targetIdVal = component.find('targetId').get('v.value');
  22.  
  23.         //alert('targetIdVal ' + targetIdVal);
  24.  
  25.  
  26.         if($A.util.isUndefinedOrNull(userNameVal) || $A.util.isUndefined(userNameVal) || $A.util.isEmpty(userNameVal)){
  27.             userName.set("v.errors",[{message:'Name is required'}]);
  28.             isValidate = false;
  29.         }else{
  30.             userName.set("v.errors",null);
  31.         } 
  32.  
  33.  
  34.  
  35.         if(!$A.util.isEmpty(userEmailVal)){
  36.  
  37.             if(userEmailVal.match(regExpEmailformat)){
  38.                 userEmail.set("v.errors", null);
  39.  
  40.             }else{
  41.  
  42.                 userEmail.set("v.errors", [{message: "Please Enter a Valid Email Address"}]);               
  43.             }
  44.         }else{
  45.              userEmail.set("v.errors",[{message:'Email is required'}]);
  46.             isValidate = false;
  47.         }
  48.  
  49.  
  50.  
  51.  
  52.       /*  
  53.         if($A.util.isUndefinedOrNull(userEmailVal) || $A.util.isUndefined(userEmailVal) || $A.util.isEmpty(userEmailVal)){
  54.             userEmail.set("v.errors",[{message:'Email is required'}]);
  55.             isValidate = false;
  56.         }else{
  57.             userEmail.set("v.errors",null);
  58.         }
  59.         */
  60.  
  61.         if($A.util.isUndefinedOrNull(userPhoneVal) || $A.util.isUndefined(userPhoneVal) || $A.util.isEmpty(userPhoneVal)){
  62.             userPhone.set("v.errors",[{message:'Phone is required'}]);
  63.             isValidate = false;
  64.         }else{
  65.             userPhone.set("v.errors",null);
  66.         }
  67.  
  68.         if(targetIdVal == '--None--'){
  69.             targetId.set("v.errors",[{message:'Please select target actuals option'}]);
  70.             isValidate = false;
  71.         }else{
  72.             targetId.set("v.errors",null);
  73.         }
  74.  
  75.         if(isValidate){            
  76.  
  77.  
  78.  
  79.         action.setParams({
  80.             'nameStr':userNameVal,
  81.             'emailStr':userEmailVal,
  82.             'phoneStr':userPhoneVal,
  83.             'targetStr':targetIdVal
  84.         });
  85.  
  86.         action.setCallback(this, function(response){
  87.             var state = response.getState();              
  88.             if(state == "SUCCESS"){
  89.                 var result = response.getReturnValue();
  90.                 component.set('v.scoreCardObj.Name','');
  91.                 component.set('v.scoreCardObj.Email__c','');
  92.                 component.set('v.scoreCardObj.Phone_No__c','');
  93.                 component.set('v.scoreCardObj.targetVSActuals__c','--None--');                
  94.                 component.set('v.dupItems', result);
  95.  
  96.                 //JSON.stringify(alert('result## ' + result));
  97.  
  98.                 if(result == 'Duplicate name Not Allow'){
  99.                     component.set('v.dupNameNull',true);
  100.                     //alert('duplicate does not allow11');
  101.                     var toastEvent = $A.get("e.force:showToast");
  102.                         toastEvent.setParams({
  103.                             "title":"Error",
  104.                             "type":"error",
  105.                             "message":"Do not allow duplicate name",                        
  106.                         });
  107.                         toastEvent.fire();
  108.  
  109.                 }else if(result == 'Inserted successfully'){
  110.                     component.set('v.dupNameNull',false);
  111.                      //alert('Form submitted successfully');
  112.                      var toastEvent = $A.get("e.force:showToast");
  113.                         toastEvent.setParams({
  114.                             "title":"Success",
  115.                             "type":"success",
  116.                             "message":"The record has been submitted successfully.",                        
  117.                         });
  118.                         toastEvent.fire();
  119.                         }
  120.  
  121.  
  122.             }
  123.         });
  124.             $A.enqueueAction(action);
  125.         }
  126.  
  127.  
  128. 	},    
  129.  
  130. })

Step 4:- Create Lightning Component : preventDuplicateCmpHelper.js

From Developer Console >> File >> New >> Lightning Component >> JavaScript Helper

preventDuplicateCmpHelper.js [JavaScript Helper File]

How to Avoid Duplicate Name Record Simply Using a Apex Controller Method -- w3web.net

  1.   ({
  2.  
  3.     statusListItemsView : function(component, event, helper) {
  4. 		var action = component.get('c.pickList');
  5.         action.setParams({"obj":"scoreCard__c", "str":"targetVSActuals__c"});
  6.  
  7.         action.setCallback(this, function(response){
  8.             var state = response.getState();              
  9.             if(state == "SUCCESS"){
  10.                 var result = response.getReturnValue();
  11.                 JSON.stringify('result ' + result);
  12.                 component.set('v.statusListItems',result);
  13.             }
  14.         });
  15.         $A.enqueueAction(action);
  16. 	},
  17.  
  18.  
  19. })

Step 5:- Create Lightning Component Style: preventDuplicateCmp.css

From Developer Console >> File >> New >> Lightning Component >> Component Style CSS

preventDuplicateCmp.css [Style CSS]

  1.   .THIS {background:#fff !important;
  2. }
  3. .THIS .slds-input.has-error, .THIS .slds-select.has-error {
  4.     background-color: rgb(255, 255, 255);
  5.     border-color: rgb(194, 57, 52);
  6.     box-shadow: rgb(194, 57, 52) 0 0 0 1px inset;
  7.     background-clip: padding-box;
  8. }
  9.  
  10. .THIS .slds-input.has-error + ul.has-error, .THIS .slds-select.has-error + ul.has-error{border:2px #c23934 solid; border-radius: 3px;}
  11. .THIS .slds-input.has-error + ul.has-error, .THIS .slds-select.has-error + ul.has-error{position:relative; margin:0 0 10px 0; padding:0; list-style:none; display: inline-flex; top:11px; left:0;}
  12. .THIS ul.has-error li.form-element__help{margin:0; padding: 3px 5px; top:10px;}
  13. .THIS ul.has-error li.form-element__help:before{content: ''; width: 0; height: 0; border-left: 5px solid transparent; border-bottom: 10px solid #c23934;
  14.     border-right: 5px solid transparent; position: absolute; left: 0px; top:-11px; }
  15.  
  16. .THIS .dupName{color:#c23934; display:inline-block; margin:3px 0 0 0; border:2px #c23934 solid; padding:2px 3px; position:relative; top:7px;}
  17. .THIS .dupName:before{content: ''; width: 0; height: 0; border-left: 5px solid transparent; border-bottom: 10px solid #c23934;
  18.     border-right: 5px solid transparent; position: absolute; left: 0px; top:-11px;}

Step 6:- Create Apex Class : preventDuplicateController.apxc

From Developer Console >> File >> New >> Apex Class

preventDuplicateController.apxc [Apex Class Controller]

  1.    public class preventDuplicateController {
  2.  
  3.    @AuraEnabled
  4.     public static string insertScoreCardInfo(string nameStr, string emailStr, string phoneStr, string targetStr){
  5.         scoreCard__c scoreCardObj = NEW scoreCard__c();
  6.         List<scoreCard__c> scoreCardList=[SELECT id, Name FROM scoreCard__c WHERE Name =: nameStr];
  7.  
  8.         system.debug('scoreCardListLength ##2 ' + scoreCardList.size()); 
  9.  
  10.         IF(scoreCardList.size() > 0){
  11.            system.debug('Duplicate name Not Allow'); 
  12.             RETURN 'Duplicate name Not Allow';
  13.  
  14.         }ELSE{
  15.         scoreCardObj.Name=nameStr;
  16.         scoreCardObj.Email__c=emailStr;
  17.         scoreCardObj.Phone_No__c=phoneStr;
  18.         scoreCardObj.targetVSActuals__c=targetStr;    
  19.         INSERT scoreCardObj;
  20.           system.debug('Inserted successfully');    
  21.           RETURN 'Inserted successfully';  
  22.  
  23.         }    
  24.  
  25.     }
  26.  
  27.  
  28.     @AuraEnabled
  29.     public static List<String> pickList(String obj, String str) { 
  30.  
  31.          List<String> regList = NEW List<String>(); 
  32.             Schema.DescribeFieldResult plistvalues = Schema.getGlobalDescribe().get(obj).getDescribe().fields.getMap().get(str).getDescribe();
  33.             FOR(PicklistEntry ent:plistvalues.getpicklistvalues())     {
  34.                 regList.add(ent.getLabel());
  35.             }
  36.              RETURN regList;
  37.     }
  38.  
  39.  
  40. }

 

 

Further post that would you like to learn in Salesforce

 

 


 

FAQ (Frequently Asked Questions)

How do you prevent duplicate records in Salesforce Apex?

Preventing duplicate records in Salesforce based on a single field can be achieved using a Set that can store the values of that specific field from all existing records and compare it with the list of new records that are going to be inserted.

How do you prevent duplicate records in Salesforce using validation rule?

We'll check this field in our flow. Next, we need to create the validation rule that will prevent a user from creating the duplicate record. This rule only needs to look at our Prevent Save checkbox. Since validation rules fire when the criteria is true, we only have to add the API name of the field.

How do I bypass duplicates in Salesforce?

For a duplicate rule, when the Alert option is enabled, bypass alerts and save duplicate records by setting this property to true . Prevent duplicate records from being saved by setting this property to false.

Related Topics | You May Also Like

 
Note:: – You will get an email, so put correct email and mobile number and BEGIN YOUR JOURNEY from Today!
 
 
  

Our Free Courses →

👉 Get Free Course →

📌 Salesforce Administrators

📌 Salesforce Lightning Flow Builder

📌 Salesforce Record Trigger Flow Builder

👉 Get Free Course →

📌 Aura Lightning Framework

📌 Lightning Web Component (LWC)

📌 Rest APIs Integration



Hi, This is Vijay Kumar behind the admin and founder of w3web.net. I am a senior software developer and working in MNC company from more than 8 years. I am great fan of technology, configuration, customization & development. Apart of this, I love to write about Blogging in spare time, Working on Mobile & Web application development, Salesforce lightning, Salesforce LWC and Salesforce Integration development in full time. [Read full bio] | | The Sitemap where you can find all published post on w3web.net

Leave a Comment