You are on page 1of 2

//Not Allow any teacher to insert/update if that teacher is teaching Hindi.

trigger TeacherTrigger on Teacher__c(Before inser,Before Update){


if(trigger.isBefore){
for(Teacher__c techRec : trigger.new){
if(String.isNotblank(techRec.Subject__c)){
if(techRec.Subject__c.contains('Hindi') &&
(trigger.isInsert || (trigger.isUpdate && techRec.Subject__c !=
trigger.oldMap.get(techRec.Id).Subject__c)){
rechRec.addError('Hindi subject not allowed.');
}
}
}
}
}
==============
//Not allow delete to class if there are more then one Female students
//1
trigger ClassTrigger on Class__c(Before delete){
if(trigger.isBefore && trigger.isDelete){
Set<Id> classIds = new Set<Id>();
for(Class__c clsRec : trigger.old){
classIds.add(clsRec.Id);
}
if(!classIds.isEmpty()){
List<Student__c> studentLst = [select id,Class__c from student__c
where class__c in : classIds and sex__c = 'Female'];
Map<Id,Integer> femalstudentsCount = new Map<Id,Integer>();
Integer count = 0;
for(Student__c stRec : studentLst){
count = 0;
if(femalstudentsCount.containsKey(stRec.Class__c)){
count = femalstudentsCount.get(stRec.Class__c);
}
count++;
femalstudentsCount.put(stRec.Class__c,count);
}
for(Class__c clsRec : trigger.old){
if(femalstudentsCount.containsKey(stRec.Class__c)){
if(femalstudentsCount.get(stRec.Class__c) > 1){
clsRec.addError('You can not delete class more
than 1 female student is present.');
}
}
}
}
}
}

=========
//2
trigger ClassTrigger on Class__c(Before delete){
if(trigger.isBefore && trigger.isDelete){
Set<Id> classIds = new Set<Id>();
for(Class__c clsRec : trigger.old){
classIds.add(clsRec.Id);
}
if(!classIds.isEmpty()){
List<AggregateResult> agLst = [select class__c,count(Id) cnt from
student__c where sex__C = 'Female' and class__c in : classIds group by class__c];
for(Class__c clsRec : trigger.old){
for(AggregateResult ag : agLSt){
if(ag.get('class__c') == clsRec.Class__c){
if(ag.get('expr0') > 1){
clsRec.AddError('You can not delete class
more than 1 female student is present.');
}
}
}
}
}
}
}

==========
//3

trigger ClassTrigger on Class__c(Before delete){


if(trigger.isBefore && trigger.isDelete){
Set<Id> classIds = new Set<Id>();
for(Class__c clsRec : trigger.old){
classIds.add(clsRec.Id);
}
if(!classIds.isEmpty()){
List<AggregateResult> agLst = [select class__c,count(Id) cnt from
student__c where sex__C = 'Female' and class__c in : classIds group by class__c];
Map<Id,Integer> classCountMap = new Map<Id,Integer>();
for(AggregateResult ag : agLSt){
classCountMap(ag.get('class__c'),ag.get('expr0'));
}
for(Class__c clsRec : trigger.old){
if(classCountMap.containsKey(stRec.Class__c)){
if(classCountMap.get(stRec.Class__c) > 1){
clsRec.addError('You can not delete class more
than 1 female student is present.');
}
}
}
}
}
}

Class1
female - 1
Class2
female - 0
Class3
female - 1
Class4
female - 0
Class5
female - 1

You might also like