# Overview

**RadScheduler** provides the functionality to configure repeating appointments. The user has the ability to apply recurring scheduling patterns such as daily, weekly, monthly or set a range of recurrence from date to date. The flexible rule mechanism covers all possible recurrence scenarios. Furthermore, you also have the option to handle the exceptions from this rule.

**RadScheduler** includes support for recurring events on daily, weekly, monthly and yearly basis. Exceptions to the recurrence rules are also permitted. To support this recurrence behavior, the **IAppointment** interface includes the **RecurrenceRule** property. When an appointment is promoted into a recurring event its **RecurrenceRule** is set with correct **RecurrencePattern**.

> If the user modifies an individual appointment occurrence, an exception is created. This exception is added to the **RecurrenceRule** of the master appointment along with its specific date.

Consider the following example:

* Create a sample appointment that starts at 11/05/2021 10:00 AM and lasts half an hour:

#### **Example 1: Creating an Appointment**

```C#
var startDate = new DateTime(2021, 05, 11, 10, 0, 0);
var appointment = new Appointment() {
	Start = startDate,
	End = startDate.AddMinutes(30),
	Subject = "Daily appointment"
};
```

* Create a daily recurrence pattern, that specifies a limit of 4 occurrences for the appointment:

#### **Example 2: Creating a RecurrencePattern**

```C#
var pattern = new RecurrencePattern() {
	Frequency = RecurrenceFrequency.Daily,
	DaysOfWeekMask = RecurrenceDays.EveryDay,
	MaxOccurrences = 4
};
```

* Set the recurrence rule to appointment:

#### **Example 3: Setting the RecurrenceRule**

```C#
appointment.RecurrenceRule = new RecurrenceRule(pattern);
```

* Add exception date to the recurrence rule:

#### **Example 4: Adding an exception**

```C#
appointment.RecurrenceRule.AddException(new DateTime(2021, 05, 14, 10, 0, 0));
```

* Create an exception appointment:

#### **Example 5: Creating an exception appointment**

```C#
var exceptionAppointment = (Appointment)appointment.Copy();
exceptionAppointment.Start = new DateTime(2021, 05, 18, 11, 0, 0);
exceptionAppointment.End = exceptionAppointment.Start.AddMinutes(45);
appointment.RecurrenceRule.AddException(new DateTime(2021, 05, 15, 10, 0, 0), exceptionAppointment);
```

Finally when you add the created appointment to the collection bound to the **AppointmentsSource** property of the **RadScheduler**, you'll get four generated appointments.

#### **Figure 1: Recurrent Appointment**

![WinUI Recurrent Appointment Overview](https://www.telerik.com/winui/documentation/assets/d6168cd14cf2cc62965c628636d4f6a2/radscheduler_recurrencyoverview.png)
