From 290e66e2ed986ae5c6fe3f78f7203a0988657e21 Mon Sep 17 00:00:00 2001 From: rislai <risheng.lai@capgemini.com> Date: 星期四, 25 七月 2024 10:32:36 +0800 Subject: [PATCH] Merge branch 'dev' of http://47.101.211.7:10101/r/VWED into dev --- _Main/BL/Type_LibCal_Event/StaticMethod_CreateUpdateFromUI.qbl | 80 +++++++++++++++++----------------------- 1 files changed, 34 insertions(+), 46 deletions(-) diff --git a/_Main/BL/Type_LibCal_Event/StaticMethod_CreateUpdateFromUI.qbl b/_Main/BL/Type_LibCal_Event/StaticMethod_CreateUpdateFromUI.qbl index 76e31f8..0c5d133 100644 --- a/_Main/BL/Type_LibCal_Event/StaticMethod_CreateUpdateFromUI.qbl +++ b/_Main/BL/Type_LibCal_Event/StaticMethod_CreateUpdateFromUI.qbl @@ -41,55 +41,41 @@ TextBody: [* //浜嬩欢鍒涘缓浜屽紑鏂规硶 - //info( startDate_i, startTimeOfDay_i, endDate_i, endTimeOfDay_i, isAllDay_i, recurrenceInterval_i, patternType_i - // , patternDaily_IsEveryWeekday_i, periodType_i, periodStartDate_i, nrOfOccurrences_i, periodEndDate_i ); - //鏌ヨ鏄惁宸叉湁鍚屽悕浜嬩欢 + //鏌ヨ鏄惁宸叉湁鍚屽悕鍦ㄦ壒閲忕晫闈㈠垱寤虹殑浜嬩欢s event := selectobject( owner_i, Event, event, event.Subject() = subject_i - and event.StartTimeOfDay() = startTimeOfDay_i - and event.EndTimeOfDay() = endTimeOfDay_i - and event.EventType() = eventtype_i ); + and event.EventType() = eventtype_i ); + info( '-------------', not isnull( event ), ismultiple ); //鍙湁閫氳繃鎵归噺鍒涘缓鐣岄潰涓斿凡鏈夊悓鍚嶄簨浠惰繘鍏ヤ笅闈㈡搷浣� if( ismultiple and not isnull( event ) ){ - startdate := startDate_i; - enddate := startDate_i; - dates := construct( Dates ); - dates.Add( startDate_i ); - //鑾峰彇鏃т簨浠剁殑寮�濮嬩簨浠跺拰缁撴潫浜嬩欢锛屼互鍙婃墍鏈夋椂闂寸偣 - traverse( event, Participation.ExplicitTimeInterval, eti ){ - if( startdate > eti.Start().Date() ){ - startdate := eti.Start().Date(); - } - if( enddate < eti.Start().Date() ) { - enddate := eti.Start().Date(); - } - if( not exists( dates, Elements, e, e = eti.Start().Date() ) ){ - dates.Add( eti.Start().Date() ); - } + 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 ); + // startDate := starttime.Date( timezone ); + // endDate := endtime.Date( timezone ) - ifexpr( endtime = endtime.StartOfDay( timezone ), 1, 0 ); + lp.AddSubscribers( subscribers_i, true );; + leadingETI := selectobject( lp, ExplicitTimeInterval, eti, eti.Start() = starttime and eti.End() = endtime ); + if( isnull( leadingETI ) ){ + leadingETI := lp.CreateTimeInterval( starttime, endtime, event.Capacity() ); } - //淇敼鏃т簨浠剁殑闂撮殧 - nrOfOccurrences_i := enddate - startdate + 1; - startDate_i := startdate; - endDate_i := startdate; - periodStartDate_i := startdate; - periodEndDate_i := enddate; - // info( startDate_i, startTimeOfDay_i, endDate_i, endTimeOfDay_i, isAllDay_i, recurrenceInterval_i, patternType_i - // , patternDaily_IsEveryWeekday_i, periodType_i, periodStartDate_i, nrOfOccurrences_i, periodEndDate_i ); - event := LibCal_Event::CreateUpdateFromUI( owner_i, event.LeadingParticipation(), 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 ); - //鍒犳帀涓嶉渶瑕佺殑鏃堕棿鐐� - timeIntervals := construct( LibCal_ExplicitTimeIntervals ); - traverse( event, Participation.ExplicitTimeInterval, eti ){ - // info( '------------------------------', eti.Start(), eti.End(), exists( dates, Elements, e, e = eti.Start().Date() ), '------------------', dates.Find( eti.Start().Date() ) ); - if( dates.Find( eti.Start().Date() ) < 0 ){ - timeIntervals.Add( eti ); - } - } - LibCal_ExplicitTimeInterval::Delete( timeIntervals, true ); + // info( '-----------------------2-----------------', lp.ExplicitTimeInterval( relsize ) ); + // if( not isnull( leadingETI ) ){ + // traverse( lp, Subscription, subscription, subscribers_i.Find( subscription.Calendar() ) >= 0 and + // startDate <= subscription.Calendar().EndDate() and + // endDate >= subscription.Calendar().StartDate() and + // ( isnull( subscription.RecurrencePeriod() ) or + // ( startDate <= subscription.RecurrencePeriod().EndDate() and + // endDate >= subscription.RecurrencePeriod().StartDate() ) ) ){ + // info( '-----------------------1-----------------', subscription.ExplicitTimeInterval( relsize ) ); + // subscribingETI := subscription.CreateTimeInterval( starttime, endtime, event.Capacity() ); + // + // if( not isnull( subscribingETI ) ){ + // subscribingETI.LeadingETI( relset, leadingETI ); + // } + // info( '-----------------------4-----------------', subscription.ExplicitTimeInterval( relsize ) ); + // } + // } + // info( '-----------------------3-----------------', lp.ExplicitTimeInterval( relsize ) ); } 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, @@ -102,7 +88,9 @@ if( not isnull( event ) ){ event.EventType( relset, eventtype_i ); } - + if( ismultiple ){ + event.IsMultiple( ismultiple ); + } return event; *] } -- Gitblit v1.9.3