function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
AbhishekJAbhishekJ 

I need to show an alert message on a VF page when there are duplicate team members added to an account.

How can I alert users that they have added duplicate team members on an account.
Logic to dedupe the team members is already there, just need to let the users know that the duplicate that they added has been removed
<apex:page standardController="Account" extensions="ManageCompanyTeamMember" lightningStylesheets="true" showQuickActionVfHeader="false">
    <apex:slds />
    
    <script>
        function showLoading(){
            document.getElementById('loading-div').style.display = "block";
        }
    </script>
    
    <apex:sectionHeader title="Team Members" subtitle="{!Account.Name}"/>
    
    <apex:form id="teammemberPanel" >
        
        <div class="slds-scope" id="loading-div" style="display:none;">
            <div id="spinner" class="slds-spinner_container slds-is-absolute" >
                <div role="status" class="slds-spinner slds-spinner--large slds-spinner--brand">
                    <div class="slds-spinner__dot-a"></div>
                    <div class="slds-spinner__dot-b"></div>
                </div>
            </div>
        </div>
        
        <apex:variable value="{!0}" var="row"/>
        
        <apex:pageBlock title="">
            <apex:pageBlockButtons >
                <div align="center">
                    <apex:commandButton value="Add" action="{!add}" reRender="teammemberPanel" immediate="true"  style="margin:3px; background-color: #1b5297; color: white"/>
                    <apex:commandButton value="Save" action="{!save}" disabled="{!teammember.empty}" onclick="showLoading()"
                                        style="margin:3px; background-color: #1b5297; color: white"/>
                    <apex:commandButton value="Cancel" action="{!cancel}" immediate="true"  style="margin:3px; background-color: #1b5297; color: white"/>
                </div>
            </apex:pageBlockButtons>
            
            <apex:panelGrid styleClass="list" cellspacing="0" cellpadding="0" border="0" rendered="{!teammember.empty}">
                <apex:outputText value="No records to display"/>
            </apex:panelGrid>
            
            <apex:pageBlockTable value="{!teammember}" var="f" rendered="{!NOT(teammember.empty)}">
                <apex:column headerValue="Action" styleClass="actionColumn">
                    <apex:commandLink value="X" action="{!remove}" styleClass="actionLink" reRender="teammemberPanel">
                        <apex:param name="row" value="{!row}" />
                    </apex:commandLink>
                    <apex:variable value="{!row+1}" var="row"/>
                </apex:column>
                
                
                <apex:column headerValue="Team Member">
                    <apex:inputField value="{!f.Team_Member__c}" style="width: 0px;"/>
                </apex:column>
                
                
                <apex:column headerValue="Sort Order">
                    <apex:inputField value="{!f.Weekly_Update_Sort_Order__c}" style="width: 80px;"/>
                </apex:column>
                
            </apex:pageBlockTable>  
            
        </apex:pageBlock>
        <!--
    <c:Typeahead object="User" placeHolder="Search For User" searchScope="NAME" styleClass="search"  />  -->
    </apex:form>
</apex:page>
 
public class ManageCompanyTeamMember {
    public transient String dmessage { get; set; }
    public List<Company_Team_Member__c> teammember { get; private set; }
    public List<Company_Team_Member__c> deleteTeammember { get; private set; }
    private Id accountId;

    public ManageCompanyTeamMember(ApexPages.StandardController controller) {
        accountId = controller.getRecord().Id;
        refresh();
        
    }

    public void refresh() {
        teammember = new List<Company_Team_Member__c>();
        deleteTeammember = new List<Company_Team_Member__c>();
        for (Company_Team_Member__c f : [SELECT Id, Name, Company__c, Team_Member__c, Weekly_Update_Sort_Order__c FROM Company_Team_Member__c WHERE Company__c=:accountId]) {
            teammember.add(f);
        }
        for (Integer i = 0; i < 1; i++) {
            add();
        }
    }

    public void add() {
        teammember.add(new Company_Team_Member__c(
            Company__c = accountId
        ));
    }
    
    public void remove() {
        try {
            Integer row = Decimal.valueOf(ApexPages.currentPage().getParameters().get('row')).intValue();
            Company_Team_Member__c cf = teammember.remove(row);            
            if (cf.Id != null) {
                deleteTeammember.add(cf);                
            }
        } catch (Exception e) {
        }        
    }
    
    public PageReference save() {
        
        Set<Id> uniqueMemberId = new Set<Id>();
        
        PageReference ref = null;
        List<Company_Team_Member__c> teammemberList = new List<Company_Team_Member__c>();
        for (Company_Team_Member__c t : teammember) {
              if (t.Team_Member__c != null && uniqueMemberId.add( t.Team_Member__c  )) {
                teammemberList.add(t);
            }            
        } 
        if (!deleteTeammember.isEmpty()) {
            Database.delete(deleteTeammember, false);
        }   
         if (!teammemberList.isEmpty()) {           
            teammember = teammemberList;            
            upsert teammember;
            refresh();
        } 
        return new PageReference('/' + accountId);
    }
}

 
ANUTEJANUTEJ (Salesforce Developers) 
Hi Abhishek,

I think you can make sure only unique values are passed by using a set, also you could add the values to a set and if there are any values that are previously added then you can throw an error.

I hope this helps, do let me know in case if this comes handy.

Regards,
Anutej
AbhishekJAbhishekJ
Thanks for taking a look Anutej, 
I am fairly new to coding in Salesforce. Would you be able to help me update the above VF page/Apex Class to send an alert?