From 07b96c69aebc192eb13de6950c255ef4e3f1fcc4 Mon Sep 17 00:00:00 2001
From: lazhen <17772815105@139.com>
Date: 星期三, 24 七月 2024 14:04:19 +0800
Subject: [PATCH] 批量界面新增结果同标准功能有异

---
 _Main/BL/Type_LibCal_Event/StaticMethod_CreateUpdateFromUI.qbl |   81 +++++++++++++++-------------------------
 1 files changed, 30 insertions(+), 51 deletions(-)

diff --git a/_Main/BL/Type_LibCal_Event/StaticMethod_CreateUpdateFromUI.qbl b/_Main/BL/Type_LibCal_Event/StaticMethod_CreateUpdateFromUI.qbl
index 55d6ee0..91342d6 100644
--- a/_Main/BL/Type_LibCal_Event/StaticMethod_CreateUpdateFromUI.qbl
+++ b/_Main/BL/Type_LibCal_Event/StaticMethod_CreateUpdateFromUI.qbl
@@ -41,61 +41,40 @@
   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.EventType() = eventtype_i
-                           and ( event.LeadingParticipation().EndDate() - event.LeadingParticipation().StartDate() ) = ( endDate_i - startDate_i )
-                           and event.StartTimeOfDay() = startTimeOfDay_i 
-                           and event.EndTimeOfDay() = endTimeOfDay_i );
-    //event := selectobject( owner_i, Event.LeadingParticipation, lp, lp.Event().Subject() = subject_i 
-    //                       and lp.Event().EventType() = eventtype_i
-    //                       and ( lp.EndDate() - lp.StartDate() ) = ( endDate_i - startDate_i )
-    //                       and lp.Event().StartTimeOfDay() = startTimeOfDay_i 
-    //                       and lp.Event().EndTimeOfDay() = endTimeOfDay_i );
+                           and event.EventType() = eventtype_i );
     //鍙湁閫氳繃鎵归噺鍒涘缓鐣岄潰涓斿凡鏈夊悓鍚嶄簨浠惰繘鍏ヤ笅闈㈡搷浣�
     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 := ( event.LeadingParticipation().EndDate() - event.LeadingParticipation().StartDate() + startDate_i );
-      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, 

--
Gitblit v1.9.3