Quintiq file version 2.0
|
#parent: #root
|
StaticMethod CreateUpdateFromUI (
|
LibCal_Calendar owner_i,
|
LibCal_LeadingParticipation participation_i,
|
String subject_i,
|
String description_i,
|
String type_i,
|
LibCal_EventType eventtype_i,
|
Real capacity_i,
|
LibCal_EventCategory category_i,
|
Boolean isDefault_i,
|
Date startDate_i,
|
Duration startTimeOfDay_i,
|
Date endDate_i,
|
Duration endTimeOfDay_i,
|
Boolean isAllDay_i,
|
Boolean isRecurring_i,
|
Number recurrenceInterval_i,
|
String patternType_i,
|
Boolean patternDaily_IsEveryWeekday_i,
|
String patternWeekly_Weekdays_i,
|
Boolean patternMonthly_IsDay_i,
|
Number patternMonthly_Day_i,
|
String patternMonthly_WeekOfMonth_i,
|
String patternMonthly_DayOfWeek_i,
|
Boolean patternYearly_IsDate_i,
|
Number patternYearly_Month_i,
|
Number patternYearly_Day_i,
|
String patternYearly_WeekOfMonth_i,
|
String patternYearly_DayOfWeek_i,
|
String periodType_i,
|
Date periodStartDate_i,
|
Number nrOfOccurrences_i,
|
Date periodEndDate_i,
|
LibCal_Calendars subscribers_i,
|
Boolean ismultiple
|
) as LibCal_Event
|
{
|
Description: 'Create and/or update an Event and its LeadingParticipation, based on information from the UI.'
|
TextBody:
|
[*
|
//事件创建二开方法
|
//查询是否已有同名在批量界面创建的事件s
|
event := selectobject( owner_i, Event, event, event.Subject() = subject_i
|
and event.EventType() = eventtype_i );
|
|
//只有通过批量创建界面且已有同名事件进入下面操作
|
if( ismultiple and not isnull( event ) ){
|
event.IsMultiple( true );
|
lp := event.LeadingParticipation();
|
timezone := lp.Calendar().GetTimeZone();
|
starttime := startDate_i.DateTime( timezone ).AddAsPeriod( timezone, startTimeOfDay_i );
|
endtime := endDate_i.DateTime( timezone ).AddAsPeriod( timezone, endTimeOfDay_i );
|
etis := selectset( lp, Subscription.ExplicitTimeInterval, eti, true );
|
// startDate := starttime.Date( timezone );
|
// endDate := endtime.Date( timezone ) - ifexpr( endtime = endtime.StartOfDay( timezone ), 1, 0 );
|
leadingETI := selectobject( lp, ExplicitTimeInterval, eti, eti.Start() = starttime and eti.End() = endtime );
|
|
if( isnull( leadingETI ) ){
|
leadingETI := lp.CreateTimeInterval( starttime, endtime, event.Capacity() );
|
}
|
lp.AddSubscribers( subscribers_i, true );
|
|
if( not isnull( leadingETI ) ){
|
traverse( lp, Subscription, subscription, subscribers_i.Find( subscription.Calendar() ) >= 0 ){
|
|
traverse( subscription, ExplicitTimeInterval, eti, etis.Find( eti ) < 0 ){
|
eti.Delete();
|
}
|
subscribingETI := subscription.CreateTimeInterval( starttime, endtime, event.Capacity() );
|
if( not isnull( subscribingETI ) ){
|
subscribingETI.LeadingETI( relset, leadingETI );
|
}
|
}
|
}
|
} else {
|
event := LibCal_Event::CreateUpdateFromUI( owner_i, participation_i, subject_i, description_i, type_i, capacity_i, category_i, isDefault_i,
|
startDate_i, startTimeOfDay_i, endDate_i, endTimeOfDay_i, isAllDay_i,
|
isRecurring_i, recurrenceInterval_i,
|
patternType_i, patternDaily_IsEveryWeekday_i, patternWeekly_Weekdays_i,
|
patternMonthly_IsDay_i, patternMonthly_Day_i, patternMonthly_WeekOfMonth_i, patternMonthly_DayOfWeek_i,
|
patternYearly_IsDate_i, patternYearly_Month_i, patternYearly_Day_i, patternYearly_WeekOfMonth_i, patternYearly_DayOfWeek_i,
|
periodType_i, periodStartDate_i, nrOfOccurrences_i, periodEndDate_i, subscribers_i, ismultiple );
|
}
|
|
if( not isnull( event ) ){
|
event.EventType( relset, eventtype_i );
|
}
|
|
return event;
|
*]
|
}
|