Exemple #1
0
        public string GetHasherString()
        {
            StringBuilder builder = new StringBuilder();

            builder.Append("Pattern Start Date: " + PatternStartDate);
            builder.Append("Pattern End Date: " + PatternEndDate);
            builder.Append("Duration: " + Duration);
            builder.Append("Occurrences: " + Occurrences);
            builder.Append("Interval: " + Interval);
            builder.Append("Instance: " + Instance);
            builder.Append("Start Time: " + StartTime);
            builder.Append("End Time: " + EndTime);
            builder.Append("Month of Year: " + MonthOfYear);
            builder.Append("Day of Month: " + DayOfMonth);
            builder.Append("No End Date: " + (NoEndDate ? "Yes" : "No"));

            if (Type == RecurrenceType.Daily)
            {
                builder.Append("Daily Recurrence");
            }
            else if (Type == RecurrenceType.MonthNth)
            {
                builder.Append("MonthNth Recurrence");
            }
            else if (Type == RecurrenceType.Monthly)
            {
                builder.Append("Monthly Recurrence");
            }
            else if (Type == RecurrenceType.Weekly)
            {
                builder.Append("Weekly Recurrence");
            }
            else if (Type == RecurrenceType.YearNth)
            {
                builder.Append("YearNth Recurrence");
            }
            else if (Type == RecurrenceType.Yearly)
            {
                builder.Append("Yearly Recurrence");
            }

            if (DaysOfTheWeekMask != 0)
            {
                if (DaysOfTheWeekMask.HasFlag(DaysOfWeek.Monday))
                {
                    builder.Append("Monday | ");
                }
                if (DaysOfTheWeekMask.HasFlag(DaysOfWeek.Tuesday))
                {
                    builder.Append("Tuesday | ");
                }
                if (DaysOfTheWeekMask.HasFlag(DaysOfWeek.Wednesday))
                {
                    builder.Append("Wednesday | ");
                }
                if (DaysOfTheWeekMask.HasFlag(DaysOfWeek.Thursday))
                {
                    builder.Append("Thursday | ");
                }
                if (DaysOfTheWeekMask.HasFlag(DaysOfWeek.Friday))
                {
                    builder.Append("Friday | ");
                }
                if (DaysOfTheWeekMask.HasFlag(DaysOfWeek.Saturday))
                {
                    builder.Append("Saturday | ");
                }
                if (DaysOfTheWeekMask.HasFlag(DaysOfWeek.Sunday))
                {
                    builder.Append("Sunday | ");
                }
                builder.Remove(builder.Length - 2, 2);
            }

            return(builder.ToString());
        }
Exemple #2
0
        public string GetGoogleRecurrenceString()
        {
            var builder = new StringBuilder();

            // RRULE:FREQ=WEEKLY;UNTIL=20160415T200000Z;BYDAY=WE,FR
            builder.Append("RRULE:");

            builder.Append("FREQ=");

            switch (Type)
            {
            case RecurrenceType.Daily:
                builder.Append("DAILY;");
                break;

            case RecurrenceType.Weekly:
                builder.Append("WEEKLY;");
                break;

            case RecurrenceType.Monthly:
                builder.Append("MONTHLY;");
                break;

            case RecurrenceType.MonthNth:
                builder.Append("MONTHLY;");
                break;

            case RecurrenceType.Yearly:
                builder.Append("YEARLY;");
                break;

            case RecurrenceType.YearNth:
                builder.Append("YEARLY;");
                break;
            }

            if (PatternEndDate != null && !NoEndDate)
            {
                builder.Append("UNTIL=");
                var date = DateTime.ParseExact($"{PatternEndDate}T{EndTime}", "yyyy-MM-ddTHH:mm:sszzz", CultureInfo.InvariantCulture);
                builder.Append(date.ToUniversalTime().ToString("yyyyMMddTHHmmssZ") + ";");
            }

            if (DaysOfTheWeekMask != 0)
            {
                builder.Append("BYDAY=");

                if (Instance != 0)
                {
                    builder.Append(Instance);
                }

                if (DaysOfTheWeekMask.HasFlag(DaysOfWeek.Sunday))
                {
                    builder.Append("SU,");
                }

                if (DaysOfTheWeekMask.HasFlag(DaysOfWeek.Monday))
                {
                    builder.Append("MO,");
                }

                if (DaysOfTheWeekMask.HasFlag(DaysOfWeek.Tuesday))
                {
                    builder.Append("TU,");
                }

                if (DaysOfTheWeekMask.HasFlag(DaysOfWeek.Wednesday))
                {
                    builder.Append("WE,");
                }

                if (DaysOfTheWeekMask.HasFlag(DaysOfWeek.Thursday))
                {
                    builder.Append("TH,");
                }

                if (DaysOfTheWeekMask.HasFlag(DaysOfWeek.Friday))
                {
                    builder.Append("FR,");
                }

                if (DaysOfTheWeekMask.HasFlag(DaysOfWeek.Saturday))
                {
                    builder.Append("SA,");
                }

                builder.Remove(builder.Length - 1, 1);
                builder.Append(";");
            }

            if (Type == RecurrenceType.Yearly)
            {
                builder.Append("BYMONTH=");
                builder.Append(MonthOfYear + ";");
            }

            if (Interval > 1 && Type != RecurrenceType.Yearly)
            {
                builder.Append("INTERVAL=" + Interval + ";");
            }

            builder.Remove(builder.Length - 1, 1);
            return(builder.ToString());
        }