Version

OwnerRecurringDateSettings Class

Enables customization of workdays, working hours, and time range appearances for a recurring pattern of dates as displayed for a specific Owner.
Syntax
'Declaration
 
Public Class OwnerRecurringDateSettings 
   Inherits OwnerTimeSlotSettings
public class OwnerRecurringDateSettings : OwnerTimeSlotSettings 
Remarks

The OwnerRecurringDateSettings class makes it possible to specify workdays, working hours, and time range appearances, for a regularly recurring pattern of dates. It uses the same recurrence engine as that which controls Appointment recurrences. The OwnerRecurringDateSettings class inherits a WorkingHours and TimeRangeAppearances collection, as well as an IsWorkDay property, from the OwnerTimeSlotSettings class, and exposes one additional property, Recurrence. The Recurrence property is of type DateRecurrence (from which the AppointmentRecurrence class derives), which provides a general mechanism through which a date pattern can be defined. With this combination of properties, time-slot settings can be controlled for a recurring pattern of dates, allowing the developer to define, for example, working hours for "Monday, Wednesday, and Friday of every other week", "the second Tuesday of November", or "the first weekday of every month".

Example
The following code sample demonstrates how to use the Owner's RecurringDateSettings collection to define different working hours for the first weekday of each month, every other Friday, and every weekday, by defining the working hours on three different recurrent bases:

Imports System.Collections.Generic
Imports Infragistics.Win
Imports Infragistics.Win.UltraWinSchedule
Imports System.Diagnostics

        '  Add a new Owner to the Owners collection
        Dim myOwner As Owner = Me.calendarInfo.Owners.Add("myCalendar")

        '  Create a DateRecurrence object for the first weekday of each month,
        '  beginning on the first day of the current year.
        Dim firstOfMonth As DateRecurrence = New DateRecurrence(New DateTime(DateTime.Today.Year, 1, 1))

        '  Make the recurrence only span the current year.
        firstOfMonth.RangeEndDate = New DateTime(DateTime.Today.Year, 12, 31)

        '  Set the pattern properties for the recurrence.
        firstOfMonth.PatternFrequency = RecurrencePatternFrequency.Monthly
        firstOfMonth.PatternType = RecurrencePatternType.Calculated
        firstOfMonth.PatternOccurrenceOfDayInMonth = RecurrencePatternOccurrenceOfDayInMonth.First
        firstOfMonth.PatternDaysOfWeek = RecurrencePatternDaysOfWeek.AllWeekdays

        '  Create an OwnerRecurringDateSettings object using the new recurrence.
        Dim firstOfMonthSettings As OwnerRecurringDateSettings = New OwnerRecurringDateSettings(firstOfMonth)

        '  Specify the working hours for the first weekday of each month
        '  as 8AM to 4:30PM.
        firstOfMonthSettings.WorkingHours.Add(New TimeRange(TimeSpan.FromHours(8), TimeSpan.FromHours(16.5)))

        '  Now create a DateRecurrence object that will occur on every other Friday
        Dim everyOtherFriday As DateRecurrence = New DateRecurrence(New DateTime(DateTime.Today.Year, 1, 1))

        '  Make the recurrence only span the current year.
        everyOtherFriday.RangeEndDate = New DateTime(DateTime.Today.Year, 12, 31)

        '  Set the pattern properties for the recurrence.
        everyOtherFriday.PatternFrequency = RecurrencePatternFrequency.Weekly
        everyOtherFriday.PatternInterval = 2
        everyOtherFriday.PatternDaysOfWeek = RecurrencePatternDaysOfWeek.Friday

        '  Create an OwnerRecurringDateSettings object using the new recurrence.
        Dim everyOtherFridaySettings As OwnerRecurringDateSettings = New OwnerRecurringDateSettings(everyOtherFriday)

        '  Specify the working hours for every other Friday as 9AM to 3PM.
        everyOtherFridaySettings.WorkingHours.Add(New TimeRange(TimeSpan.FromHours(9), TimeSpan.FromHours(15)))

        '  Now create a DateRecurrence object that will occur every weekday
        Dim everyWeekday As DateRecurrence = New DateRecurrence(New DateTime(DateTime.Today.Year, 1, 1))

        '  Make the recurrence only span the current year.
        everyWeekday.RangeEndDate = New DateTime(DateTime.Today.Year, 12, 31)

        '  Set the pattern properties for the recurrence.
        everyWeekday.PatternFrequency = RecurrencePatternFrequency.Daily
        everyWeekday.PatternDaysOfWeek = RecurrencePatternDaysOfWeek.AllWeekdays

        '  Create an OwnerRecurringDateSettings object using the new recurrence.
        Dim everyWeekdaySettings As OwnerRecurringDateSettings = New OwnerRecurringDateSettings(everyWeekday)

        '  Specify the working hours for every weekday as 9AM to 5:30PM
        everyWeekdaySettings.WorkingHours.Add(New TimeRange(TimeSpan.FromHours(9), TimeSpan.FromHours(17.5)))

        '  Now add each of the three OwnerRecurringDateSettings objects to the Owner's
        '  RecurringDateSettings collection. Note that the order in which they are added
        '  is important; as a rule, the one that generates the fewest occurences should
        '  be added first. This is because when the working hours are defined by the
        '  WorkingHours collection, any range of time that does not appear in the collection
        '  is considered to fall within the non-working hour range, i.e., the resolution
        '  process ends there.
        '
        '  In this example, If we don't add the monthly and weekly recurrences before
        '  the daily one, the daily one will generate occurrences on the first weekday
        '  of every month and every other Friday, superceding the monthly and weekly recurrences.
        myOwner.RecurringDateSettings.Add(firstOfMonthSettings)
        myOwner.RecurringDateSettings.Add(everyOtherFridaySettings)
        myOwner.RecurringDateSettings.Add(everyWeekdaySettings)
using System.Collections.Generic;
using Infragistics.Win;
using Infragistics.Win.UltraWinSchedule;
using System.Diagnostics;

    //  Create a DateRecurrence object for the first weekday of each month,
    //  beginning on the first day of the current year.
    DateRecurrence firstOfMonth = new DateRecurrence( new DateTime(DateTime.Today.Year, 1, 1) );

    //  Make the recurrence only span the current year.
    firstOfMonth.RangeEndDate = new DateTime(DateTime.Today.Year, 12, 31);

    //  Set the pattern properties for the recurrence.
    firstOfMonth.PatternFrequency = RecurrencePatternFrequency.Monthly;
    firstOfMonth.PatternType = RecurrencePatternType.Calculated;
    firstOfMonth.PatternOccurrenceOfDayInMonth = RecurrencePatternOccurrenceOfDayInMonth.First;
    firstOfMonth.PatternDaysOfWeek = RecurrencePatternDaysOfWeek.AllWeekdays;

    //  Create an OwnerRecurringDateSettings object using the new recurrence.
    OwnerRecurringDateSettings firstOfMonthSettings = new OwnerRecurringDateSettings( firstOfMonth );

    //  Specify the working hours for the first weekday of each month
    //  as 8AM to 4:30PM.
    firstOfMonthSettings.WorkingHours.Add( new TimeRange( TimeSpan.FromHours(8), TimeSpan.FromHours(16.5) ) );

    //  Now create a DateRecurrence object that will occur on every other Friday
    DateRecurrence everyOtherFriday = new DateRecurrence( new DateTime(DateTime.Today.Year, 1, 1) );

    //  Make the recurrence only span the current year.
    everyOtherFriday.RangeEndDate = new DateTime(DateTime.Today.Year, 12, 31);

    //  Set the pattern properties for the recurrence.
    everyOtherFriday.PatternFrequency = RecurrencePatternFrequency.Weekly;
    everyOtherFriday.PatternInterval = 2;
    everyOtherFriday.PatternDaysOfWeek = RecurrencePatternDaysOfWeek.Friday;

    //  Create an OwnerRecurringDateSettings object using the new recurrence.
    OwnerRecurringDateSettings everyOtherFridaySettings = new OwnerRecurringDateSettings( everyOtherFriday );

    //  Specify the working hours for every other Friday as 9AM to 3PM.
    everyOtherFridaySettings.WorkingHours.Add( new TimeRange( TimeSpan.FromHours(9), TimeSpan.FromHours(15) ) );

    //  Now create a DateRecurrence object that will occur every weekday
    DateRecurrence everyWeekday = new DateRecurrence( new DateTime(DateTime.Today.Year, 1, 1) );

    //  Make the recurrence only span the current year.
    everyWeekday.RangeEndDate = new DateTime(DateTime.Today.Year, 12, 31);

    //  Set the pattern properties for the recurrence.
    everyWeekday.PatternFrequency = RecurrencePatternFrequency.Daily;
    everyWeekday.PatternDaysOfWeek = RecurrencePatternDaysOfWeek.AllWeekdays;

    //  Create an OwnerRecurringDateSettings object using the new recurrence.
    OwnerRecurringDateSettings everyWeekdaySettings = new OwnerRecurringDateSettings( everyWeekday );

    //  Specify the working hours for every weekday as 9AM to 5:30PM
    everyWeekdaySettings.WorkingHours.Add( new TimeRange( TimeSpan.FromHours(9), TimeSpan.FromHours(17.5) ) );

    //  Now add each of the three OwnerRecurringDateSettings objects to the Owner's
    //  RecurringDateSettings collection. Note that the order in which they are added
    //  is important; as a rule, the one that generates the fewest occurences should
    //  be added first. This is because when the working hours are defined by the
    //  WorkingHours collection, any range of time that does not appear in the collection
    //  is considered to fall within the non-working hour range, i.e., the resolution
    //  process ends there.
    //
    //  In this example, If we don't add the monthly and weekly recurrences before
    //  the daily one, the daily one will generate occurrences on the first weekday
    //  of every month and every other Friday, superceding the monthly and weekly recurrences.
    myOwner.RecurringDateSettings.Add( firstOfMonthSettings );
    myOwner.RecurringDateSettings.Add( everyOtherFridaySettings );
    myOwner.RecurringDateSettings.Add( everyWeekdaySettings );
Requirements

Target Platforms: Windows 10, Windows 8.1, Windows 8, Windows 7, Windows Server 2012, Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

See Also