| Quintiq file version 2.0 | 
| #parent: #root | 
| Method GetDateOfFirstRecurrence ( | 
|   Date startOfPeriod_i | 
| ) as Date id:Method_LibCal_dlgEvent_GetDateOfFirstRecurrence | 
| { | 
|   #keys: '[131092.1.1290429]' | 
|   Accessibility: 'Public' | 
|   Body: | 
|   [* | 
|     date          := Date::MinDate(); | 
|     earliestStart := startOfPeriod_i; | 
|     patternType   := this.GetPatternType(); | 
|     timezone      := this.GetCalendarTimeZone(); | 
|      | 
|     if( patternType = LibCal_RecurrencePattern::TYPE_DAILY() ) | 
|     { | 
|       date := LibCal_RecurrencePatternDaily::GetDateOfFirstRecurrence( startOfPeriod_i, earliestStart, | 
|                                                                        [Number]edtEveryNrOfDays.Text(), | 
|                                                                        ckbEveryWeekday.Checked() ); | 
|     } | 
|      | 
|     else if( patternType = LibCal_RecurrencePattern::TYPE_WEEKLY() ) | 
|     { | 
|       date := LibCal_RecurrencePatternWeekly::GetDateOfFirstRecurrence( startOfPeriod_i, earliestStart,  | 
|                                                                         [Number]edtEveryNrOfWeeks.Text() ); | 
|     } | 
|      | 
|     else if( patternType = LibCal_RecurrencePattern::TYPE_MONTHLY() ) | 
|     { | 
|       // Make sure that the entered day of the month is valid. | 
|       day := guard( [Number]edtMonthlyDay.Text(), 0 ); | 
|        | 
|       if( day > 0 ) | 
|       { | 
|         everyNrOfMonths := ifexpr( ckbMonthlyDay.Checked(), edtMonthlyDayEveryNrOfMonths.Text(), | 
|                                                             edtMonthlyPatternEveryNrOfMonths.Text() ); | 
|      | 
|         /* BUG: referencing the DropDownStringLists results in an error in the TCE !!! | 
|         // As a WORKAROUND, the values are also set in a hidden label, which càn be used here. | 
|         weekOfMonth := ssMonthlyPatternWeekOfMonth.Text(); | 
|         dayOfWeek   := ssMonthlyPatternDayOfWeek.Text(); | 
|         */ | 
|      | 
|         weekOfMonth := lblMonthlyPatternWeekOfMonth.Text(); | 
|         dayOfWeek   := lblMonthlyPatternDayOfWeek.Text(); | 
|      | 
|         date := LibCal_RecurrencePatternMonthly::GetDateOfFirstRecurrence( timezone, startOfPeriod_i, durStartTimeOfDay.Duration(), durEndTimeOfDay.Duration(), dhDuration.Data(), | 
|                                                                            earliestStart, [Number]everyNrOfMonths, | 
|                                                                            ckbMonthlyDay.Checked(), day, weekOfMonth, dayOfWeek ); | 
|       } | 
|     } | 
|      | 
|     else if( patternType = LibCal_RecurrencePattern::TYPE_YEARLY() ) | 
|     { | 
|       /* BUG: referencing the DropDownStringLists results in an error in the TCE !!!  | 
|       // As a WORKAROUND, the values are also set in a hidden label, which càn be used here. | 
|       month       := ifexpr( ckbYearlyDate.Checked(), ssYearlyMonth.Text(), ssYearlyPatternMonth.Text() ); | 
|       nrOfMonth   := this.GetNrOfMonth( month ); | 
|       dayOfMonth  := [Number]ssYearlyDayOfMonth.Text(); | 
|       weekOfMonth := ssYearlyPatternWeekOfMonth.Text(); | 
|       dayOfWeek   := ssYearlyPatternDayOfWeek.Text(); | 
|       */ | 
|      | 
|       month       := ifexpr( ckbYearlyDay.Checked(), lblYearlyMonth.Text(), lblYearlyPatternMonth.Text() ); | 
|       nrOfMonth   := this.GetNrOfMonth( month ); | 
|       dayOfMonth  := [Number]lblYearlyDayOfMonth.Text(); | 
|       weekOfMonth := lblYearlyPatternWeekOfMonth.Text(); | 
|       dayOfWeek   := lblYearlyPatternDayOfWeek.Text(); | 
|        | 
|       date := LibCal_RecurrencePatternYearly::GetDateOfFirstRecurrence( timezone, startOfPeriod_i, durStartTimeOfDay.Duration(), durEndTimeOfDay.Duration(), dhDuration.Data(), | 
|                                                                         earliestStart, [Number]edtEveryNrOfYears.Text(), | 
|                                                                         nrOfMonth, ckbYearlyDay.Checked(), dayOfMonth, weekOfMonth, dayOfWeek ); | 
|     } | 
|      | 
|     return date; | 
|   *] | 
|   UseInheritedAccessibility: false | 
| } |