Quintiq file version 2.0 
 | 
#parent: #root 
 | 
MethodOverride Synchronize ( 
 | 
  LibCal_StagingParticipation stagingParticipation_i 
 | 
) 
 | 
{ 
 | 
  TextBody: 
 | 
  [* 
 | 
    stagEvent := stagingParticipation_i.StagingEvent(); 
 | 
     
 | 
    // Don't update in case of IsAllDay. 
 | 
    // In that case the StartDate and EndDate will be updated by SetIsAllDay. 
 | 
    // Unless the participation has just been created; in that case it must be updated to initialize it. 
 | 
    // Or unless the StartDate has changed. 
 | 
    if( not stagEvent.IsAllDay() 
 | 
        or this.StartDate().IsInfinite() 
 | 
        or this.StartDate() <> stagingParticipation_i.StartDate() ) 
 | 
    { 
 | 
      // Calculate startTime and endTime, taking timezone and DSL into account. 
 | 
      timezone  := this.Calendar().GetTimeZone(); 
 | 
      startTime := LibCal_Util::CalculateStartTime( timezone, stagingParticipation_i.StartDate(), stagEvent.StartTimeOfDay() ); 
 | 
      endTime   := LibCal_Util::CalculateEndTime(   timezone, stagingParticipation_i.StartDate(), stagEvent.StartTimeOfDay(), stagEvent.Duration() ); 
 | 
      this.Update( startTime.Date( timezone ), endTime.Date( timezone ) ); 
 | 
    } 
 | 
     
 | 
    // Also synchronize the RecurrencePeriod. 
 | 
    super.Synchronize( stagingParticipation_i ); 
 | 
  *] 
 | 
} 
 |