bool IsRecurrenceValid()
    {
        DevExpress.XtraScheduler.UI.ValidationArgs args = new DevExpress.XtraScheduler.UI.ValidationArgs();
        RecurrenceRuleControlBase recurrenceRuleControl = GetCurrentRecurrenceRuleControl();

        recurrenceRuleControl.ValidateValues(args);
        if (args.Valid)
        {
            edtRecurrenceRangeControl.ValidateValues(args);
        }
        return(args.Valid);
    }
    protected virtual void AssignRecurrenceInfoProperties(AppointmentFormController controller, Appointment patternCopy, RecurrenceInfo rinfo, DateTime clientStart)
    {
        rinfo.Type = edtRecurrenceTypeEdit.Type;
        controller.AssignRecurrenceInfoRangeProperties(rinfo, edtRecurrenceRangeControl.ClientRange, clientStart, edtRecurrenceRangeControl.ClientEnd, edtRecurrenceRangeControl.ClientOccurrenceCount, patternCopy);
        RecurrenceRuleControlBase    ruleControl   = GetCurrentRecurrenceRuleControl();
        RecurrenceRuleValuesAccessor valueAccessor = ruleControl.ValuesAccessor;

        rinfo.DayNumber   = valueAccessor.GetDayNumber();
        rinfo.Periodicity = valueAccessor.GetPeriodicity();
        rinfo.Month       = valueAccessor.GetMonth();
        rinfo.WeekDays    = valueAccessor.GetWeekDays();
        rinfo.WeekOfMonth = valueAccessor.GetWeekOfMonth();
    }