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
Alexandre Santos 8Alexandre Santos 8 

Apex triger - Help


There is a reservation that has a speaker and his collaborators. a collaborator can not be speaker in another reservation while he is teaching at the same time.

The purpose is to block the enrollment of the collaborator if he or she is already a speaker in another reservation with the same time and date.


For that I created a triger. The problem is that he does not point out any mistakes but it does not work.



-------------------------------------------------------------------------------------

trigger RegraDeInscricao on Contactos_inscritos__c (before insert) {

    
    
    List<Reserva__c> lista=new List<Reserva__c>([Select ID,Data_de_terminio__c,Data_de_inicio__c,sala__c,Orador__c from Reserva__c LIMIT 25000]);
    List<Contactos_inscritos__c> lista2=new List<Contactos_inscritos__c>([Select ID,Colaborador__c, Reserva__c, Reserva__r.Data_De_Inicio__c, Reserva__r.Data_De_terminio__c,Reserva__r.Orador__c from Contactos_inscritos__c WHERE Reserva__c IN :lista LIMIT 25000]);
    
    for(Contactos_inscritos__c a:Trigger.new){

        
        for(Contactos_inscritos__c CI : lista2){
           
            
             if( a.Colaborador__c == CI.reserva__r.Orador__c && a.reserva__r.Data_de_inicio__c >= CI.reserva__r.Data_De_Inicio__c &&

               a.reserva__r.Data_de_terminio__c <= CI.reserva__r.Data_de_terminio__c) {

                a.adderror('Error the COLABORADOR__C is already a ORADOR__C at this time.');

            }

             

            if( a.Colaborador__c == CI.reserva__r.Orador__c && a.reserva__r.Data_de_inicio__c <=CI.reserva__r.Data_De_Inicio__c &&

               a.reserva__r.Data_de_terminio__c <= CI.reserva__r.Data_de_terminio__c && a.reserva__r.Data_de_terminio__c >= CI.reserva__r.Data_De_Inicio__c ) {

                a.adderror('Error the COLABORADOR__C is already a ORADOR__C at this time.');

            }

 

            if( a.Colaborador__c == CI.reserva__r.Orador__c && a.reserva__r.Data_de_inicio__c >= CI.reserva__r.Data_De_Inicio__c &&

               a.reserva__r.Data_de_terminio__c >= CI.reserva__r.Data_de_terminio__c && a.reserva__r.Data_de_inicio__c <= CI.reserva__r.Data_de_terminio__c) {

                a.adderror('Error the COLABORADOR__C is already a ORADOR__C at this time.');

            }

            

            if(a.Colaborador__c == CI.reserva__r.Orador__c && a.reserva__r.Data_de_inicio__c <= CI.reserva__r.Data_De_Inicio__c &&

              a.reserva__r.Data_de_terminio__c >= CI.reserva__r.Data_de_terminio__c ) {

                a.adderror('Error the COLABORADOR__C is already a ORADOR__C at this time.');

                            

            }
            
        }
        
        

    }


}

-----------------------------------------------------------------------------------------
Pratyush AnandPratyush Anand
Hey

Check if you are getting any values in the a.reserva__r variable. I dont think you would get any data in related fields without actually querying them.