Quintiq file version 2.0
|
#parent: #root
|
Method SetStart (
|
Date startDate_i,
|
Duration startTimeOfDay_i
|
) as LibCal_Event
|
{
|
Description:
|
[*
|
Set the start of the event.
|
This moves the event, i.e. the end of the event is changed accordingly.
|
*]
|
TextBody:
|
[*
|
timezone := this.Calendar().GetTimeZone();
|
|
// Ignore seconds.
|
startTimeOfDay := startTimeOfDay_i.Round( Duration::Minutes( 1 ) );
|
startTime := startDate_i.Add( timezone, startTimeOfDay );
|
|
// Use a FeedbackObject the collect the validation feedback.
|
feedback := LibCal_Validate::FeedbackObject();
|
|
moreInfo := this.GetEventInfo() + ", StartTimeOfDay = " + startTimeOfDay.Format( Translations::DurationFormat() );
|
LibCal_Validate::RegisterError( LibCal_Validate::Event_StartTimeOfDay( startTimeOfDay ), moreInfo );
|
|
if( feedback.IsAllowed() )
|
{
|
if( this.StartTimeOfDay() <> startTimeOfDay )
|
{
|
this.IsChanged( true );
|
}
|
|
// Set the new StartTimeOfDay of the Event...
|
this.StartTimeOfDay( startTimeOfDay );
|
|
endTime := startTime + this.Duration();
|
|
// ...and the StartDate of the LeadingParticicpation.
|
// Also update the EndDate of the LeadingParticipation, otherwise it may happen that StartDate > EndDate,
|
// which will result in a validation error.
|
this.LeadingParticipation().Update( startDate_i, endTime.Date( timezone ) );
|
|
// Update the EndTime.
|
this.SetEnd( endTime );
|
}
|
|
// Process the feedback that has been registered by the validation (if any).
|
LibCal_Util::ProcessFeedbackObject( feedback );
|
|
// Make the API fluent.
|
return this;
|
*]
|
}
|