Ejemplo n.º 1
0
        private void simpleButton6_Click(object sender, EventArgs e)
        {
            listBoxControl1.Items.Clear();
            MonthlyRecurrenceSettings mo;

            if (comboBoxEdit1.SelectedIndex == 0)
            {
                mo = new MonthlyRecurrenceSettings(dateEdit1.DateTime, dtEndDate.DateTime);
            }
            else
            {
                mo = new MonthlyRecurrenceSettings(dateEdit1.DateTime, trackBarControl1.Value);
            }


            RecurrenceValues values = mo.GetValues(MonthlySpecificDatePartOne.First, MonthlySpecificDatePartTwo.Day, Convert.ToInt32(txtEveryXMonths.Text));

            foreach (DateTime dt in values.Values)
            {
                listBoxControl1.Items.Add(dt.ToString("d MMM, yyyy   ddd"));
            }
            textEdit1.Text = values.Values.Count.ToString();
            txtStart.Text  = values.StartDate.ToString();
            txtEnd.Text    = values.EndDate.ToString();
        }
        public static DateTime CalculateDailyRecurrence(RecurrenceValues myRecurrenceValues)
        {
            double minutesBetweenMinDateAndStartDate = myRecurrenceValues.startDate.Subtract(minDateGregorian).TotalMinutes;

            DateTime myRecurrence;

            // We can use FirstDateTime to find a valid date given a "clip start date" that falls close to dates in our series
            // For daily recurrences, FirstDateTime will always be a multiple of 1440 (the number of minutes in a day).
            // We calculate FirstDateTime by taking the start date (as expressed in minutes between minimum date and start date)  and modulo the period in minutes.
            double FirstDateTime = minutesBetweenMinDateAndStartDate % myRecurrenceValues.Period;

            // Finding a valid recurrence date given a clip start date:
            Random   myRnd     = new Random();
            DateTime inputDate = myRecurrenceValues.startDate.AddDays(myRnd.Next(1, 28));

            double clipStartDateInMinutes = inputDate.Subtract(minDateGregorian).TotalMinutes;
            double dateOffsetInMinutes    = (clipStartDateInMinutes - FirstDateTime) % myRecurrenceValues.Period;

            if (dateOffsetInMinutes == 0)
            {
                myRecurrence = inputDate;
            }
            else
            {
                myRecurrence = inputDate.AddMinutes(-dateOffsetInMinutes);
            }

            return(myRecurrence);
        }
 public static void DisplayValues(Calendar myCal, DateTime myDT, RecurrenceValues myRecurrenceValues, DateTime validRecurrence)
 {
     Console.WriteLine("Start Date: {0}/{1}/{2}", myCal.GetMonth(myDT), myCal.GetDayOfMonth(myDT), myCal.GetYear(myDT));
     Console.WriteLine("Recurrence Frequency: {0}", myRecurrenceValues.recurrenceFrequency);
     Console.WriteLine("Period: Every {0} " + "(" + myRecurrenceValues.recurrenceFrequency + ")", myRecurrenceValues.Period);
     Console.WriteLine("{0}/{1}/{2} is a valid recurrence date in the series.", myCal.GetMonth(validRecurrence), myCal.GetDayOfMonth(validRecurrence), myCal.GetYear(validRecurrence));
     Console.WriteLine();
 }
Ejemplo n.º 4
0
        private void simpleButton2_Click(object sender, EventArgs e)
        {
            listBoxControl1.Items.Clear();
            YearlyRecurrenceSettings yr     = new YearlyRecurrenceSettings(DateTime.Today, dtEndDate.DateTime);
            RecurrenceValues         values = yr.GetValues(dateEdit1.DateTime.Day, dateEdit1.DateTime.Month);

            foreach (DateTime dt in values.Values)
            {
                listBoxControl1.Items.Add(dt);
            }
            textEdit1.Text = values.Values.Count.ToString();
            txtStart.Text  = values.StartDate.ToString();
            txtEnd.Text    = values.EndDate.ToString();
        }
Ejemplo n.º 5
0
        private void simpleButton5_Click(object sender, EventArgs e)
        {
            listBoxControl1.Items.Clear();
            MonthlyRecurrenceSettings mo     = new MonthlyRecurrenceSettings(dateEdit1.DateTime, dtEndDate.DateTime);
            RecurrenceValues          values = mo.GetValues(Convert.ToInt32(txtDayofMonth.Text), Convert.ToInt32(txtEveryXMonths.Text));

            foreach (DateTime dt in values.Values)
            {
                listBoxControl1.Items.Add(dt);
            }
            textEdit1.Text = values.Values.Count.ToString();
            txtStart.Text  = values.StartDate.ToString();
            txtEnd.Text    = values.EndDate.ToString();
        }
Ejemplo n.º 6
0
        private void simpleButton3_Click(object sender, EventArgs e)
        {
            listBoxControl1.Items.Clear();
            YearlyRecurrenceSettings yr     = new YearlyRecurrenceSettings(dateEdit1.DateTime, dtEndDate.DateTime);
            RecurrenceValues         values = yr.GetValues(YearlySpecificDatePartOne.Last, YearlySpecificDatePartTwo.Wednesday, YearlySpecificDatePartThree.August);

            foreach (DateTime dt in values.Values)
            {
                listBoxControl1.Items.Add(dt.ToString("d MMM, yyyy   ddd"));
            }
            textEdit1.Text = values.Values.Count.ToString();
            txtStart.Text  = values.StartDate.ToString();
            txtEnd.Text    = values.EndDate.ToString();
        }
        private void btnGetRecurrenceValues_Click(object sender, EventArgs e)
        {
            RecurrenceValues values = RecurrenceHelper.GetRecurrenceValues(txtGetRecurrenceValues.Text);

            lstRecurrenceValues.Items.Clear();
            foreach (DateTime dt in values.Values)
            {
                lstRecurrenceValues.Items.Add(new DateItem(dt));
            }
            if (lstRecurrenceValues.Items.Count > 0)
            {
                lstRecurrenceValues.SelectedIndex = 0;
            }
            txtAdjustedTotal.Text = lstRecurrenceValues.Items.Count.ToString();
        }
        private void button1_Click_2(object sender, EventArgs e)
        {
            RecurrenceValues values = RecurrenceHelper.GetPostRecurrenceValues(txtGetRecurrenceValues.Text, dateTimePicker1.Value);

            txtGetRecurrenceValues.Text = values.GetSeriesInfo();
            lstRecurrenceValues.Items.Clear();
            foreach (DateTime dt in values.Values)
            {
                lstRecurrenceValues.Items.Add(new DateItem(dt));
            }
            if (lstRecurrenceValues.Items.Count > 0)
            {
                lstRecurrenceValues.SelectedIndex = 0;
            }
            txtAdjustedTotal.Text = lstRecurrenceValues.Items.Count.ToString();
        }
        public static DateTime CalculateValidRecurrence(RecurrenceValues myRecurrenceValues, DateTime myRecurrence)
        {
            switch (myRecurrenceValues.recurrenceFrequency)    // This will be daily, weekly, or monthly/yearly.
            {
            case RECUR_FREQUENCY.DAYS_IN_MINUTES:
                return(CalculateDailyRecurrence(myRecurrenceValues));

            case RECUR_FREQUENCY.WEEKS:
                return(CalculateWeeklyRecurrence(myRecurrenceValues));

            case RECUR_FREQUENCY.MONTHS:
                return(CalculateMonthlyOrYearlyRecurrence(myRecurrenceValues));

            default:
                return(new DateTime());
            }
        }
        private static DateTime CalculateWeeklyRecurrence(RecurrenceValues myRecurrenceValues)
        {
            // Find the date of the first day of the week prior to the start date.
            DateTime modifiedStartDate = myRecurrenceValues.startDate.AddDays(-(int)myRecurrenceValues.startDate.DayOfWeek);

            // Calculate the number of minutes between midnight that day and midnight January 1, 1601.
            double modifiedStartDateInMinutes = modifiedStartDate.Subtract(minDateGregorian).TotalMinutes;

            // Take that value modulo the value of the Period field x 10080 (# of minutes in a week) to get the value of FirstDateTime.
            double FirstDateTime = modifiedStartDateInMinutes % (myRecurrenceValues.Period * 10080);

            // Get an input date close to the start date. (Add 3 to 7 weeks in days to the start date.)
            Random   myRnd     = new Random();
            DateTime inputDate = myRecurrenceValues.startDate.AddDays(myRnd.Next(21, 49));

            // Adjust to the start of the week since we're only looking for a valid week...
            inputDate = inputDate.AddDays(-(int)inputDate.DayOfWeek);

            // Get the input date in minutes
            double inputDateInMinutes = inputDate.Subtract(minDateGregorian).TotalMinutes;

            DateTime myRecurrence;

            // If the date offset is zero, the week is valid. Otherwise we subtract the offset from the input date
            // to find a valid week.

            double dateOffsetInMinutes = (inputDateInMinutes - FirstDateTime) % (myRecurrenceValues.Period * 10080);

            if (dateOffsetInMinutes == 0)
            {
                // if zero, the week is valid
                myRecurrence = inputDate;
            }
            else
            {
                // If non-zero, this is not a valid week. This value must be subtracted from the input date to return a valid week.
                myRecurrence = inputDate.AddMinutes(-dateOffsetInMinutes);
            }

            // Note that finding a valid day in a multi-days/week pattern requires using the PatternTypeSpecific value.
            // We're just assuming a 1x / week pattern based on the start date.
            myRecurrence = myRecurrence.AddDays((int)myRecurrenceValues.startDate.DayOfWeek);

            return(myRecurrence);
        }
        public static void Main()
        {
            DateTime myStartDate;
            int      myPeriod;

            for (RECUR_FREQUENCY myRecurrenceFrequency = RECUR_FREQUENCY.DAYS_IN_MINUTES; myRecurrenceFrequency <= RECUR_FREQUENCY.MONTHS; myRecurrenceFrequency++)
            {
                switch (myRecurrenceFrequency)
                {
                case RECUR_FREQUENCY.DAYS_IN_MINUTES:
                    myPeriod    = 4320;                             // every 3 days
                    myStartDate = DateTime.Today;                   // Use today's date
                    break;

                case RECUR_FREQUENCY.WEEKS:
                    myPeriod    = 2;                                // every 2 weeks
                    myStartDate = DateTime.Today.AddYears(-1);      // Use a year ago from today
                    break;

                case RECUR_FREQUENCY.MONTHS:
                    myPeriod    = 12;                               // every 12 months
                    myStartDate = new DateTime(2008, 4, 6);         // Use April 6, 2008
                    break;

                default:
                    myPeriod    = 1;
                    myStartDate = DateTime.Today;
                    break;
                }

                RecurrenceValues myRecurrenceValues = new RecurrenceValues(myStartDate, myPeriod, myRecurrenceFrequency);

                DateTime validRecurrence = CalculateValidRecurrence(myRecurrenceValues, myRecurrenceValues.startDate);

                if (myRecurrenceFrequency == RECUR_FREQUENCY.MONTHS)
                {
                    break;
                }
                else
                {
                    DisplayValues(myCal, myRecurrenceValues.startDate, myRecurrenceValues, validRecurrence);
                }
            }
        }
        public static DateTime CalculateMonthlyOrYearlyRecurrence(RecurrenceValues myRecurrenceValues)
        {
            // Find the first day of the month of the start date
            DateTime modifiedStartDate = myRecurrenceValues.startDate.AddDays(-myHebrewCal.GetDayOfMonth(myRecurrenceValues.startDate) + 1);

            // Find the number of months between 9/27/1601 and our start date
            int monthsBetweenTwoDates = CalculateNumberOfMonthsBetweenTwoDates(minDateHebrew, modifiedStartDate);

            // Take that number of months and modulo the period to get an offset to add to the minimum Hebrew Calendar date (9/27/1601)
            int offsetInMonths = monthsBetweenTwoDates % (myRecurrenceValues.Period);

            // Add that number of Hebrew Lunar months to 9/27/1601.
            DateTime recurrenceOffsetDate = new DateTime();

            recurrenceOffsetDate = myHebrewCal.AddMonths(minDateHebrew, offsetInMonths);

            // Calculate the number of minutes between midnight that day and midnight, January 1, 1601. This is our recurrence offset (FirstDateTime), in minutes.
            double FirstDateTime = new TimeSpan(recurrenceOffsetDate.Ticks - minDateGregorian.Ticks).TotalMinutes;

            // Since we're just calculating FirstDateTime, just return the start date

            return(myRecurrenceValues.startDate);
        }
        /// <summary>
        /// Get a Generic List of IRecurrenceItem objects
        /// </summary>
        /// <param name="recurrenceSettings"></param>
        /// <returns>List<IRecurrenceItem></returns>
        public RecurrenceValues GetRecurrenceItems(RecurrenceSettings recurrenceSettings)
        {
            RecurrenceValues returnValues = recurrenceSettings.GetValues();

            return(returnValues);
        }
Ejemplo n.º 14
0
        public List <TemplateEvents> getEvents(T_Schedule task)//mahesh
        {
            ApplicationContext dbschedule = new ApplicationContext(new SystemUser());

            List <TemplateEvents> result = new List <TemplateEvents>();

            //var ScheduledStartTime = task.T_StartTime.Value.ToLongTimeString();
            //var ScheduledEndTime = task.T_EndTime.Value.ToLongTimeString();
            var ScheduledStartTime = TimeZoneInfo.ConvertTimeFromUtc(task.T_StartTime.Value, task.m_Timezone).ToLongTimeString(); //mahesh
            var ScheduledEndTime   = TimeZoneInfo.ConvertTimeFromUtc(task.T_EndTime.Value, task.m_Timezone).ToLongTimeString();   //mahesh

            //task.T_StartDateTime = Convert.ToDateTime(task.T_StartDateTime.ToLongDateString() + " " + task.T_StartTime.Value.ToLongTimeString());
            task.T_StartDateTime = Convert.ToDateTime(task.T_StartDateTime.ToLongDateString() + " " + ScheduledStartTime);//mahesh

            var ScheduledDateTimeEnd = DateTime.UtcNow.AddYears(1);
            var occurrences          = task.T_OccurrenceLimitCount != null ? task.T_OccurrenceLimitCount : 0;
            var skip = task.T_RecurringRepeatFrequencyID != null?Convert.ToInt32(task.T_RecurringRepeatFrequencyID) : 0;

            if (task.T_AssociatedScheduleTypeID == 1)
            {
                TemplateEvents obj = new TemplateEvents();
                obj.EventDate = task.T_StartDateTime;
                obj.StartTime = task.T_StartDateTime;
                obj.Title     = task.T_Name;
                obj.EndTime   = Convert.ToDateTime(task.T_StartDateTime.ToShortDateString() + " " + ScheduledEndTime);
                result.Add(obj);
                return(result);
            }

            if (task.T_RecurringTaskEndTypeID == 3)
            {
                //ScheduledDateTimeEnd = task.T_EndDate.Value;
                task.T_EndDate = TimeZoneInfo.ConvertTimeFromUtc(task.T_EndDate.Value, task.m_Timezone);//mahesh
                try
                {
                    ScheduledDateTimeEnd = AbsoluteEnd(task.T_EndDate.Value);
                }
                catch { ScheduledDateTimeEnd = task.T_EndDate.Value; }
            }

            if (task.T_AssociatedRecurringScheduleDetailsTypeID == 1)
            {
                DailyRecurrenceSettings we;
                if (task.T_RecurringTaskEndTypeID == 2)
                {
                    we = new DailyRecurrenceSettings(task.T_StartDateTime, occurrences.Value);
                }
                else
                {
                    we = new DailyRecurrenceSettings(task.T_StartDateTime, ScheduledDateTimeEnd);
                }
                var values = we.GetValues(skip);
                foreach (var evt in values.Values)
                {
                    TemplateEvents obj = new TemplateEvents();
                    obj.EventDate = evt;
                    obj.StartTime = evt;
                    obj.Title     = task.T_Name;
                    obj.EndTime   = Convert.ToDateTime(evt.ToShortDateString() + " " + ScheduledEndTime);
                    result.Add(obj);
                }
            }
            if (task.T_AssociatedRecurringScheduleDetailsTypeID == 2)
            {
                WeeklyRecurrenceSettings we;
                SelectedDayOfWeekValues  selectedValues = new SelectedDayOfWeekValues();
                if (task.T_RecurringTaskEndTypeID == 2)
                {
                    we = new WeeklyRecurrenceSettings(task.T_StartDateTime, occurrences.Value);
                }
                else
                {
                    we = new WeeklyRecurrenceSettings(task.T_StartDateTime, ScheduledDateTimeEnd);
                }
                selectedValues.Sunday    = task.SelectedT_RecurrenceDays_T_RepeatOn.ToList().Contains(1);
                selectedValues.Monday    = task.SelectedT_RecurrenceDays_T_RepeatOn.ToList().Contains(2);
                selectedValues.Tuesday   = task.SelectedT_RecurrenceDays_T_RepeatOn.ToList().Contains(3);
                selectedValues.Wednesday = task.SelectedT_RecurrenceDays_T_RepeatOn.ToList().Contains(4);
                selectedValues.Thursday  = task.SelectedT_RecurrenceDays_T_RepeatOn.ToList().Contains(5);
                selectedValues.Friday    = task.SelectedT_RecurrenceDays_T_RepeatOn.ToList().Contains(6);
                selectedValues.Saturday  = task.SelectedT_RecurrenceDays_T_RepeatOn.ToList().Contains(7);
                var values = we.GetValues(skip, selectedValues);
                foreach (var evt in values.Values)
                {
                    TemplateEvents obj = new TemplateEvents();
                    obj.EventDate = evt;
                    obj.StartTime = evt;
                    obj.Title     = task.T_Name;
                    obj.EndTime   = Convert.ToDateTime(evt.ToShortDateString() + " " + ScheduledEndTime);
                    result.Add(obj);
                }
            }
            if (task.T_AssociatedRecurringScheduleDetailsTypeID == 3)
            {
                MonthlyRecurrenceSettings we;


                if (task.T_RecurringTaskEndTypeID == 2)
                {
                    we = new MonthlyRecurrenceSettings(task.T_StartDateTime, occurrences.Value);
                }
                else
                {
                    we = new MonthlyRecurrenceSettings(task.T_StartDateTime, ScheduledDateTimeEnd);
                }
                we.AdjustmentValue = 0;
                skip = skip++;
                RecurrenceValues value = new RecurrenceValues();
                if (task.T_RepeatByID == 3)
                {
                    value = we.GetValues(MonthlySpecificDatePartOne.Last, MonthlySpecificDatePartTwo.Day, skip);
                }
                if (task.T_RepeatByID == 4)
                {
                    value = we.GetValues(MonthlySpecificDatePartOne.First, MonthlySpecificDatePartTwo.Day, skip);
                }
                if (task.T_RepeatByID == 1)
                {
                    value = we.GetValues(task.T_StartDateTime.Day, skip);
                }
                if (task.T_RepeatByID == 2)
                {
                    value = we.GetValues(MonthlySpecificDatePartOne.Last, MonthlySpecificDatePartTwo.WeekendDay, skip);
                }
                foreach (var evt in value.Values)
                {
                    TemplateEvents obj = new TemplateEvents();
                    obj.EventDate = evt;
                    obj.StartTime = evt;
                    obj.Title     = task.T_Name;
                    obj.EndTime   = Convert.ToDateTime(evt.ToShortDateString() + " " + ScheduledEndTime);
                    result.Add(obj);
                }
            }
            if (task.T_AssociatedRecurringScheduleDetailsTypeID == 4)
            {
                YearlyRecurrenceSettings we;
                if (task.T_RecurringTaskEndTypeID == 2)
                {
                    we = new YearlyRecurrenceSettings(task.T_StartDateTime, occurrences.Value);
                }
                else
                {
                    we = new YearlyRecurrenceSettings(task.T_StartDateTime, ScheduledDateTimeEnd);
                }
                var values = we.GetValues(task.T_StartDateTime.Day, task.T_StartDateTime.Month);
                foreach (var evt in values.Values)
                {
                    TemplateEvents obj = new TemplateEvents();
                    obj.EventDate = evt;
                    obj.StartTime = evt;
                    obj.Title     = task.T_Name;
                    obj.EndTime   = Convert.ToDateTime(evt.ToShortDateString() + " " + ScheduledEndTime);
                    result.Add(obj);
                }
            }
            //return Json(result, "application/json", System.Text.Encoding.UTF8, JsonRequestBehavior.AllowGet);
            return(result);
        }
Ejemplo n.º 15
0
        private static void CalculateRecurrenceEnd(this Appointment appt)
        {
            Recurrence recur = appt.Recurrence;

            int      occurrences = recur.EndCount;
            DateTime start       = appt.StartDate;

            RecurrenceValues values = null;

            if (recur.Type == RepeatType.Daily)
            {
                DailyRecurrenceSettings daily = new DailyRecurrenceSettings(start, occurrences);

                if (recur.Day != "-1")
                {
                    values = daily.GetValues(int.Parse(recur.Day), DailyRegenType.OnEveryXDays);
                }
                else
                {
                    values = daily.GetValues(1, DailyRegenType.OnEveryWeekday);
                }

                recur.EndCount = daily.NumberOfOccurrences;
            }
            else if (recur.Type == RepeatType.Weekly)
            {
                WeeklyRecurrenceSettings weekly = new WeeklyRecurrenceSettings(start, occurrences);

                SelectedDayOfWeekValues sdwv = new SelectedDayOfWeekValues();
                sdwv.Sunday    = recur.Day.IndexOf('0') != -1;
                sdwv.Monday    = recur.Day.IndexOf('1') != -1;
                sdwv.Tuesday   = recur.Day.IndexOf('2') != -1;
                sdwv.Wednesday = recur.Day.IndexOf('3') != -1;
                sdwv.Thursday  = recur.Day.IndexOf('4') != -1;
                sdwv.Friday    = recur.Day.IndexOf('5') != -1;
                sdwv.Saturday  = recur.Day.IndexOf('6') != -1;

                values = weekly.GetValues(recur.Week, sdwv);

                recur.EndCount = weekly.NumberOfOccurrences;
            }
            else if (recur.Type == RepeatType.Monthly)
            {
                MonthlyRecurrenceSettings monthly = new MonthlyRecurrenceSettings(start, occurrences);

                if (recur.Week == -1)
                {
                    values = monthly.GetValues(int.Parse(recur.Day), recur.Month);
                }
                else
                {
                    values = monthly.GetValues((MonthlySpecificDatePartOne)recur.Week, (MonthlySpecificDatePartTwo)int.Parse(recur.Day), recur.Month);
                }

                recur.EndCount = monthly.NumberOfOccurrences;
            }
            else if (recur.Type == RepeatType.Yearly)
            {
                YearlyRecurrenceSettings yearly = new YearlyRecurrenceSettings(start, occurrences);

                if (recur.Week == -1)
                {
                    values = yearly.GetValues(int.Parse(recur.Day), recur.Month + 1, recur.Year);
                }
                else
                {
                    values = yearly.GetValues((YearlySpecificDatePartOne)recur.Week, (YearlySpecificDatePartTwo)int.Parse(recur.Day), (YearlySpecificDatePartThree)(recur.Month + 1), recur.Year);
                }

                recur.EndCount = yearly.NumberOfOccurrences;
            }

            recur.EndDate = values.EndDate;
        }
Ejemplo n.º 16
0
        private void UpdateDisplay()
        {
            try
            {
                int      occurrences = int.Parse(rangeRadio2Text1.Text);
                DateTime start       = (DateTime)startDate.SelectedDate;
                DateTime?end         = rangeRadio3Picker1.SelectedDate;

                if (dailyTab.IsSelected)
                {
                    DailyRecurrenceSettings daily;

                    if (rangeRadio3.IsChecked == true)
                    {
                        daily = new DailyRecurrenceSettings(start, (DateTime)end);
                    }
                    else
                    {
                        daily = new DailyRecurrenceSettings(start, occurrences);
                    }

                    if (dailyRadio1.IsChecked == true)
                    {
                        values = daily.GetValues(int.Parse(dailyRadio1Text1.Text), DailyRegenType.OnEveryXDays);
                    }
                    else if (dailyRadio2.IsChecked == true)
                    {
                        values = daily.GetValues(1, DailyRegenType.OnEveryWeekday);
                    }

                    rangeRadio2Text1.Text = daily.NumberOfOccurrences.ToString();
                }
                else if (weeklyTab.IsSelected)
                {
                    WeeklyRecurrenceSettings weekly;

                    if (rangeRadio3.IsChecked == true)
                    {
                        weekly = new WeeklyRecurrenceSettings(start, (DateTime)end);
                    }
                    else
                    {
                        weekly = new WeeklyRecurrenceSettings(start, occurrences);
                    }

                    SelectedDayOfWeekValues sdwv = new SelectedDayOfWeekValues();
                    sdwv.Sunday    = (bool)weeklySunday.IsChecked;
                    sdwv.Monday    = (bool)weeklyMonday.IsChecked;
                    sdwv.Tuesday   = (bool)weeklyTuesday.IsChecked;
                    sdwv.Wednesday = (bool)weeklyWednesday.IsChecked;
                    sdwv.Thursday  = (bool)weeklyThursday.IsChecked;
                    sdwv.Friday    = (bool)weeklyFriday.IsChecked;
                    sdwv.Saturday  = (bool)weeklySaturday.IsChecked;

                    values = weekly.GetValues(int.Parse(weeklyText1.Text), sdwv);

                    rangeRadio2Text1.Text = weekly.NumberOfOccurrences.ToString();
                }
                else if (monthlyTab.IsSelected)
                {
                    MonthlyRecurrenceSettings monthly;

                    if (rangeRadio3.IsChecked == true)
                    {
                        monthly = new MonthlyRecurrenceSettings(start, (DateTime)end);
                    }
                    else
                    {
                        monthly = new MonthlyRecurrenceSettings(start, occurrences);
                    }

                    if (monthlyRadio1.IsChecked == true)
                    {
                        values = monthly.GetValues(int.Parse(monthlyRadio1Text1.Text), int.Parse(monthlyText1.Text));
                    }
                    else if (monthlyRadio2.IsChecked == true)
                    {
                        values = monthly.GetValues((MonthlySpecificDatePartOne)monthlyRadio2Combo1.SelectedIndex, (MonthlySpecificDatePartTwo)monthlyRadio2Combo2.SelectedIndex, int.Parse(monthlyText1.Text));
                    }

                    rangeRadio2Text1.Text = monthly.NumberOfOccurrences.ToString();
                }
                else if (yearlyTab.IsSelected)
                {
                    YearlyRecurrenceSettings yearly;

                    if (rangeRadio3.IsChecked == true)
                    {
                        yearly = new YearlyRecurrenceSettings(start, (DateTime)end);
                    }
                    else
                    {
                        yearly = new YearlyRecurrenceSettings(start, occurrences);
                    }

                    if (yearlyRadio1.IsChecked == true)
                    {
                        values = yearly.GetValues(int.Parse(yearlyRadio1Text1.Text), yearlyRadio1Combo1.SelectedIndex + 1, int.Parse(yearlyText1.Text));
                    }
                    else if (yearlyRadio2.IsChecked == true)
                    {
                        values = yearly.GetValues((YearlySpecificDatePartOne)yearlyRadio2Combo1.SelectedIndex, (YearlySpecificDatePartTwo)yearlyRadio2Combo2.SelectedIndex, (YearlySpecificDatePartThree)(yearlyRadio2Combo3.SelectedIndex + 1), int.Parse(yearlyText1.Text));
                    }

                    rangeRadio2Text1.Text = yearly.NumberOfOccurrences.ToString();
                }

                if (rangeRadio3.IsChecked == false)
                {
                    _suspendUpdateRangeRadio3Picker1 = true;
                    rangeRadio3Picker1.SelectedDate  = values.EndDate;
                }
            }
            catch { }
        }
        private void button1_Click(object sender, EventArgs e)
        {
            RecurrenceValues values = null;

            switch (tabControl1.SelectedIndex)
            {
            case 0:     // Daily
                DailyRecurrenceSettings da;
                if (radioOccurrences.Checked)
                {
                    da = new DailyRecurrenceSettings(dtStartDate.Value, Convert.ToInt32(txtOccurrences.Text));
                }
                else
                {
                    da = new DailyRecurrenceSettings(dtStartDate.Value, dtEndDate.Value);
                }

                if (radioButton1.Checked)
                {
                    values = da.GetValues(int.Parse(textBox1.Text));
                }
                else
                {
                    values = da.GetValues(1, DailyRegenType.OnEveryWeekday);
                }
                break;

            case 1:     // Weekly
                WeeklyRecurrenceSettings we;
                SelectedDayOfWeekValues  selectedValues = new SelectedDayOfWeekValues();

                if (radioOccurrences.Checked)
                {
                    we = new WeeklyRecurrenceSettings(dtStartDate.Value, Convert.ToInt32(txtOccurrences.Text));
                }
                else
                {
                    we = new WeeklyRecurrenceSettings(dtStartDate.Value, dtEndDate.Value);
                }

                selectedValues.Sunday    = chkSunday.Checked;
                selectedValues.Monday    = chkMonday.Checked;
                selectedValues.Tuesday   = chkTuesday.Checked;
                selectedValues.Wednesday = chkWednesday.Checked;
                selectedValues.Thursday  = chkThursday.Checked;
                selectedValues.Friday    = chkFriday.Checked;
                selectedValues.Saturday  = chkSaturday.Checked;

                values = we.GetValues(int.Parse(txtWeeklyRegenXWeeks.Text), selectedValues);
                break;

            case 2:     // Monthly
                MonthlyRecurrenceSettings mo;
                if (radioOccurrences.Checked)
                {
                    mo = new MonthlyRecurrenceSettings(dtStartDate.Value, Convert.ToInt32(txtOccurrences.Text));
                }
                else
                {
                    mo = new MonthlyRecurrenceSettings(dtStartDate.Value, dtEndDate.Value);
                }


                if (radioButton3.Checked)
                {
                    values = mo.GetValues(int.Parse(textBox4.Text), Convert.ToInt32(textBox2.Text));
                }
                else
                {
                    // Get the adjusted values
                    mo.AdjustmentValue = int.Parse(txtMonthlyAdjustedValue.Text);
                    values             = mo.GetValues((MonthlySpecificDatePartOne)comboBox2.SelectedIndex, (MonthlySpecificDatePartTwo)comboBox3.SelectedIndex, int.Parse(textBox3.Text));
                }
                break;

            case 3:     // Yearly
                YearlyRecurrenceSettings yr;
                if (radioOccurrences.Checked)
                {
                    yr = new YearlyRecurrenceSettings(dtStartDate.Value, Convert.ToInt32(txtOccurrences.Text));
                }
                else
                {
                    yr = new YearlyRecurrenceSettings(dtStartDate.Value, dtEndDate.Value);
                }


                if (radioYearlyEvery.Checked)
                {
                    values = yr.GetValues(int.Parse(txtYearEvery.Text), cboYearEveryMonth.SelectedIndex + 1);
                }
                else
                {
                    // Get the adjusted value
                    yr.AdjustmentValue = int.Parse(txtYearlyAdjustedValue.Text);
                    values             = yr.GetValues((YearlySpecificDatePartOne)comboBox5.SelectedIndex, (YearlySpecificDatePartTwo)comboBox4.SelectedIndex, (YearlySpecificDatePartThree)(comboBox6.SelectedIndex + 1));
                }
                break;
            }

            txtSeriesInfo.Text          = values.GetSeriesInfo();
            txtGetRecurrenceValues.Text = txtSeriesInfo.Text;

            lstResults.Items.Clear();
            DateTime[] bolded  = new DateTime[values.Values.Count];
            int        counter = 0;

            foreach (DateTime dt in values.Values)
            {
                bolded[counter] = dt;
                lstResults.Items.Add(new DateItem(dt));
                counter++;
            }
            monthCalendar1.BoldedDates = bolded;

            if (lstResults.Items.Count > 0)
            {
                lstResults.SelectedIndex = 0;
            }

            txtTotal.Text          = lstResults.Items.Count.ToString();
            txtEndDate.Text        = values.EndDate.ToShortDateString();
            txtStartDate.Text      = values.StartDate.ToShortDateString();
            btnGetNextDate.Enabled = lstResults.Items.Count > 0;
            txtNextDate.Text       = string.Empty;
            lstRecurrenceValues.Items.Clear();
            tabMain.SelectedTab   = tabSecond;
            txtAdjustedTotal.Text = lstRecurrenceValues.Items.Count.ToString();

            // Get reccurrence info object to use for setting controls
            RecurrenceInfo info = RecurrenceHelper.GetFriendlySeriesInfo(values.GetSeriesInfo());

            dateTimePickerStartDate.Value = info.StartDate;
            if (info.EndDate.HasValue)
            {
                dateTimePickerStartDateEndDate.Value = info.EndDate.Value;
                dtAdjustedDateTime.Value             = info.EndDate.Value;
                dateTimePicker1.Value = info.EndDate.Value;
            }
        }