• Alexandre Santos 8
  • NEWBIE
  • 10 Points
  • Member since 2019

  • Chatter
    Feed
  • 0
    Best Answers
  • 0
    Likes Received
  • 0
    Likes Given
  • 3
    Questions
  • 3
    Replies
My trigger dont get "a.Reserva__r.Data_de_inicio__c" and "a.Reserva__r.Data_de_terminio__c" !





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


trigger RegraDeInscricao on Contactos_inscritos__c (before insert) {

    

    
    List<Reserva__c> lista1=new List<reserva__c>([Select ID,Orador__c,Data_De_inicio__c,Data_De_terminio__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.Orador__c,Reserva__r.Data_de_terminio__c from Contactos_inscritos__c WHERE Reserva__c IN :lista1 LIMIT 25000]);
    
    
        
        for(Contactos_inscritos__c  a:Trigger.new){
            
            
            
            
    
     for(Contactos_inscritos__c O:lista2){
         
         
       
         
     
         }
             
             if(a.Colaborador__c == O.reserva__r.Orador__c && a.Reserva__r.Data_de_inicio__c >= O.Reserva__r.Data_De_Inicio__c &&

               a.Reserva__r.Data_de_terminio__c <= O.Reserva__r.Data_de_terminio__c) {

                a.adderror('teste');

            }

             

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

               a.Reserva__r.Data_de_terminio__c <= O.Reserva__r.Data_de_terminio__c && a.Reserva__r.Data_de_terminio__c >= O.Reserva__r.Data_De_Inicio__c ) {

                a.adderror('teste');

            }

 

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

               a.Reserva__r.Data_de_terminio__c >= O.Reserva__r.Data_de_terminio__c && a.Reserva__r.Data_de_inicio__c <= O.Reserva__r.Data_de_terminio__c) {

                a.adderror('teste');

            }

            

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

               a.Reserva__r.Data_de_terminio__c >= O.Reserva__r.Data_de_terminio__c ) {

                a.adderror('teste');


            }
         
   
}
    
}
}

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.');

                            

            }
            
        }
        
        

    }


}

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

The code is with before insert, and I need tb before updating the code run. But when I use the Before update the code works incorrectly, it blocks everything.


trigger ReservDuplicateDate on Reserva__c (before insert) {
    
    for(Reserva__c a:Trigger.new)
    {
        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]);
        for(Reserva__c existentes:lista){
            if(a.sala__c == existentes.sala__c && a.Data_de_inicio__c >= existentes.Data_de_inicio__c &&
               a.Data_de_terminio__c <= existentes.Data_de_terminio__c) {
                a.adderror('Reserva Ja existente na sala com a mesma data!');
            }
            if(a.sala__c == existentes.sala__c && a.Data_de_inicio__c <= existentes.Data_de_inicio__c && 
               a.Data_de_terminio__c <= existentes.Data_de_terminio__c && a.Data_de_terminio__c >= existentes.Data_de_inicio__c ) {
                a.adderror('Reserva Ja existente na sala com a mesma data!');
            }
            if(a.sala__c == existentes.sala__c && a.Data_de_inicio__c >= existentes.Data_de_inicio__c && 
               a.Data_de_terminio__c >= existentes.Data_de_terminio__c && a.Data_de_inicio__c <= existentes.Data_de_terminio__c) {
                a.adderror('Reserva Ja existente na sala com a mesma data!');
            }
           
            if(a.sala__c == existentes.sala__c && a.Data_de_inicio__c <= existentes.Data_de_inicio__c && 
               a.Data_de_terminio__c >= existentes.Data_de_terminio__c ) {
                a.adderror('Reserva Ja existente na sala com a mesma data!');
                           
            }
            if(a.Orador__c == existentes.Orador__c && a.Data_de_inicio__c >= existentes.Data_de_inicio__c &&
               a.Data_de_terminio__c <= existentes.Data_de_terminio__c) {
                a.adderror('Esse Orador ja esta em cargo de uma reserva!');
            }
            if(a.Orador__c == existentes.Orador__c && a.Data_de_inicio__c <= existentes.Data_de_inicio__c && 
               a.Data_de_terminio__c <= existentes.Data_de_terminio__c && a.Data_de_terminio__c >= existentes.Data_de_inicio__c ) {
                a.adderror('Esse Orador ja esta em cargo de uma reserva!');
            }
            if(a.Orador__c == existentes.Orador__c && a.Data_de_inicio__c >= existentes.Data_de_inicio__c && 
               a.Data_de_terminio__c >= existentes.Data_de_terminio__c && a.Data_de_inicio__c <= existentes.Data_de_terminio__c) {
                a.adderror('Esse Orador ja esta em cargo de uma reserva!');
            }
           
            if(a.Orador__c == existentes.Orador__c && a.Data_de_inicio__c <= existentes.Data_de_inicio__c && 
               a.Data_de_terminio__c >= existentes.Data_de_terminio__c ) {
                a.adderror('Esse Orador ja esta em cargo de uma reserva!');
            }

        }
    }
    
}
 

The code is with before insert, and I need tb before updating the code run. But when I use the Before update the code works incorrectly, it blocks everything.


trigger ReservDuplicateDate on Reserva__c (before insert) {
    
    for(Reserva__c a:Trigger.new)
    {
        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]);
        for(Reserva__c existentes:lista){
            if(a.sala__c == existentes.sala__c && a.Data_de_inicio__c >= existentes.Data_de_inicio__c &&
               a.Data_de_terminio__c <= existentes.Data_de_terminio__c) {
                a.adderror('Reserva Ja existente na sala com a mesma data!');
            }
            if(a.sala__c == existentes.sala__c && a.Data_de_inicio__c <= existentes.Data_de_inicio__c && 
               a.Data_de_terminio__c <= existentes.Data_de_terminio__c && a.Data_de_terminio__c >= existentes.Data_de_inicio__c ) {
                a.adderror('Reserva Ja existente na sala com a mesma data!');
            }
            if(a.sala__c == existentes.sala__c && a.Data_de_inicio__c >= existentes.Data_de_inicio__c && 
               a.Data_de_terminio__c >= existentes.Data_de_terminio__c && a.Data_de_inicio__c <= existentes.Data_de_terminio__c) {
                a.adderror('Reserva Ja existente na sala com a mesma data!');
            }
           
            if(a.sala__c == existentes.sala__c && a.Data_de_inicio__c <= existentes.Data_de_inicio__c && 
               a.Data_de_terminio__c >= existentes.Data_de_terminio__c ) {
                a.adderror('Reserva Ja existente na sala com a mesma data!');
                           
            }
            if(a.Orador__c == existentes.Orador__c && a.Data_de_inicio__c >= existentes.Data_de_inicio__c &&
               a.Data_de_terminio__c <= existentes.Data_de_terminio__c) {
                a.adderror('Esse Orador ja esta em cargo de uma reserva!');
            }
            if(a.Orador__c == existentes.Orador__c && a.Data_de_inicio__c <= existentes.Data_de_inicio__c && 
               a.Data_de_terminio__c <= existentes.Data_de_terminio__c && a.Data_de_terminio__c >= existentes.Data_de_inicio__c ) {
                a.adderror('Esse Orador ja esta em cargo de uma reserva!');
            }
            if(a.Orador__c == existentes.Orador__c && a.Data_de_inicio__c >= existentes.Data_de_inicio__c && 
               a.Data_de_terminio__c >= existentes.Data_de_terminio__c && a.Data_de_inicio__c <= existentes.Data_de_terminio__c) {
                a.adderror('Esse Orador ja esta em cargo de uma reserva!');
            }
           
            if(a.Orador__c == existentes.Orador__c && a.Data_de_inicio__c <= existentes.Data_de_inicio__c && 
               a.Data_de_terminio__c >= existentes.Data_de_terminio__c ) {
                a.adderror('Esse Orador ja esta em cargo de uma reserva!');
            }

        }
    }
    
}