Quintiq file version 2.0
|
#parent: #root
|
StaticMethod Participation_RecurrencePeriod (
|
String participationID_i,
|
Boolean isRecurring_i,
|
Boolean isLeading_i,
|
Boolean hasSpecificPeriod_i,
|
Date startDate_i,
|
String periodType_i,
|
Date startOfPeriod_i,
|
Number nrOfOccurrences_i,
|
Date endOfPeriod_i,
|
String eventInfo_i
|
) as owning FeedbackObject
|
{
|
TextBody:
|
[*
|
// Use a FeedbackObject to collect the validation feedback.
|
feedback := LibCal_Validate::FeedbackObject();
|
|
// Prepare the additional information that will be logged when an error is encountered.
|
baseInfo := "ParticipationID = " + participationID_i
|
+ ", " + ifexpr( isLeading_i, "LeadingParticipation of", "Subscription to" ) + " Event " + eventInfo_i
|
+ ", PeriodType = " + periodType_i;
|
|
periodStart := "PeriodStartDate = " + startOfPeriod_i.Format( Translations::DateFormat() );
|
periodEnd := "PeriodEndDate = " + endOfPeriod_i. Format( Translations::DateFormat() );
|
|
// Show the end of the period as part of the additional information, if applicable.
|
moreInfo := baseInfo + ", " + periodStart + ifexpr( periodType_i = LibCal_RecurrencePeriod::TYPE_WITHENDDATE(), ", " + periodEnd, "" );
|
|
// RecurrencePeriod-related data is only applicable for participations in recurring events,
|
// and when it concerns the LeadingParticipation or a Subscription with HasSpecificPeriod = TRUE.
|
if( isRecurring_i and
|
( isLeading_i or hasSpecificPeriod_i ) )
|
{
|
// PeriodType
|
LibCal_Validate::RegisterError( LibCal_Validate::Participation_PeriodType( periodType_i ), moreInfo );
|
|
// PeriodStartDate
|
LibCal_Validate::RegisterError( LibCal_Validate::Participation_PeriodStartDate( startOfPeriod_i ), moreInfo );
|
|
// NrOfOccurrences is only applicable for type NrOfOccurrences.
|
if( periodType_i = LibCal_RecurrencePeriod::TYPE_NROFOCCURRENCES() )
|
{
|
LibCal_Validate::RegisterError( LibCal_Validate::Participation_PeriodNrOfOccurrences( nrOfOccurrences_i ), moreInfo );
|
}
|
|
// PeriodEndDate is only applicable for type WithEndDate.
|
else if( periodType_i = LibCal_RecurrencePeriod::TYPE_WITHENDDATE() )
|
{
|
// PeriodEndDate
|
LibCal_Validate::RegisterError( LibCal_Validate::Participation_PeriodEndDate( endOfPeriod_i ), moreInfo );
|
|
// Do the rest of the validation only if everyting is ok so far.
|
if( feedback.IsAllowed() )
|
{
|
// PeriodEndDate vs PeriodStartDate
|
LibCal_Validate::RegisterError( LibCal_Validate::Participation_PeriodEndDate_PeriodStartDate( endOfPeriod_i, startOfPeriod_i ), moreInfo );
|
}
|
}
|
}
|
|
return &feedback;
|
*]
|
InterfaceProperties { Accessibility: 'Module' }
|
}
|