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