Development questions

Write a trigger to prevent an Employee__c record from being inserted if the parent Department__c already has 10 active employees.

DevelopmentMediumInfosysCapgeminiMindtree

Use before insert (and optionally before update for reparenting). Count active employees per Department in the DB plus new ones in the batch.

apex
trigger EmployeeTrigger on Employee__c (before insert) {
    Set<Id> deptIds = new Set<Id>();
    for (Employee__c e : Trigger.new) if (e.Department__c != null) deptIds.add(e.Department__c);
    Map<Id, Integer> counts = new Map<Id, Integer>();
    for (AggregateResult ar : [SELECT Department__c d, COUNT(Id) c FROM Employee__c
                               WHERE Department__c IN :deptIds AND Active__c = true GROUP BY Department__c]) {
        counts.put((Id) ar.get('d'), (Integer) ar.get('c'));
    }
    for (Employee__c e : Trigger.new) {
        if (e.Department__c == null || !e.Active__c) continue;
        Integer n = counts.containsKey(e.Department__c) ? counts.get(e.Department__c) : 0;
        if (n >= 10) e.addError('Department already has 10 active employees.');
        else counts.put(e.Department__c, n + 1);
    }
}
apex-triggertriggercodingscenariovalidation