public IActionResult Index0() { //RecurringRule recurringRule = new RecurringRule() { BaseTime = new DateTime(2020, 9, 3, 19, 30, 0, DateTimeKind.Local), Rule = "FREQ=WEEKLY;INTERVAL=3;BYDAY=TH,SU" }; //RecurringRule recurringRule = new RecurringRule() { BaseTime = new DateTime(2020, 9, 3, 19, 30, 0, DateTimeKind.Local), Rule = "FREQ=MONTHLY;INTERVAL=3;BYMONTHDAY=4,6;UNTIL=20200930T000000" }; //RecurringRule recurringRule = new RecurringRule() { BaseTime = new DateTime(2020, 9, 3, 19, 30, 0, DateTimeKind.Local), Rule = "FREQ=MONTHLY;INTERVAL=3;UNTIL=20200930T000000;BYDAY=TU;BYSETPOS=2" }; //RecurringRule recurringRule = new RecurringRule() { BaseTime = new DateTime(2020, 9, 3, 19, 30, 0, DateTimeKind.Local), Rule = "FREQ=YEARLY;COUNT=10;BYMONTH=2;BYMONTHDAY=2" }; //RecurringRule recurringRule = new RecurringRule() { BaseTime = new DateTime(2020, 9, 3, 19, 30, 0, DateTimeKind.Local), Rule = "FREQ=YEARLY;COUNT=10;BYMONTH=1,12" }; RecurringRule recurringRule = new RecurringRule() { BaseTime = new DateTime(2020, 9, 3, 19, 30, 0, DateTimeKind.Local), Rule = "FREQ=YEARLY;COUNT=10;BYDAY=WE;BYMONTH=3;BYSETPOS=3" }; var startTime = recurringRule.BaseTime; Tuple <RecurrencePattern, List <DateTime> > tuple = RecurringRuleProcessor.GetRecurrencePatternAppointments(startTime, startTime.AddYears(maxYears), recurringRule.Rule); recurringRule.JsonRecurrencePattern = JsonConvert.SerializeObject(tuple.Item1); recurringRule.Output = tuple.Item2; return(View(recurringRule)); }
public IActionResult CreateRRule([FromBody] RRuleWrapper RRuleWrapper) { if (RRuleWrapper == null) { var rRuleResultE = new RRuleResult() { ErrorText = "invalid data" }; return(new JsonResult(rRuleResultE)); } ; var recurrencePattern = new RecurrencePattern(RRuleWrapper.GetFrequencyType(), RRuleWrapper.Interval); switch (recurrencePattern.Frequency) { case FrequencyType.None: case FrequencyType.Secondly: case FrequencyType.Minutely: case FrequencyType.Hourly: case FrequencyType.Daily: break; case FrequencyType.Weekly: recurrencePattern.ByDay = RRuleWrapper.GetByDayList(); break; case FrequencyType.Monthly: recurrencePattern.ByDay = RRuleWrapper.GetByDayList(); recurrencePattern.ByMonthDay = RRuleWrapper.ByMonthDay; recurrencePattern.BySetPosition = RRuleWrapper.BySetPosition; break; case FrequencyType.Yearly: recurrencePattern.ByDay = RRuleWrapper.GetByDayList(); recurrencePattern.ByMonth = RRuleWrapper.ByMonth; recurrencePattern.ByMonthDay = RRuleWrapper.ByMonthDay; recurrencePattern.BySetPosition = RRuleWrapper.BySetPosition; break; default: break; } if (RRuleWrapper.Count > 0) { recurrencePattern.Count = RRuleWrapper.Count; } if (RRuleWrapper.Until.HasValue) { recurrencePattern.Until = RRuleWrapper.Until.Value; } //var rRuleResult = new RRuleResult() { RecurrencePatternString = recurrencePattern.ToString(), RecurrencePatternText = recurrencePattern.ToText() }; var browserLang = Request.Headers["Accept-Language"].ToString().Split(";").FirstOrDefault()?.Split(",").FirstOrDefault(); var rRuleResult = new RRuleResult() { RecurrencePatternString = recurrencePattern.ToString(), RecurrencePatternText = recurrencePattern.ToText(new CultureInfo(browserLang)) }; var startTime = RRuleWrapper.StartDate != null ? RRuleWrapper.StartDate : DateTime.Now; rRuleResult.RecurrencePatternList = RecurringRuleProcessor.GetAppointments(startTime, startTime.AddYears(maxYears), recurrencePattern.ToString()).Take(maxOccurences + 1).ToList(); if (rRuleResult.RecurrencePatternList.Count > maxOccurences) { rRuleResult.RecurrencePatternList.RemoveAt(maxOccurences); rRuleResult.HintText = $"there are more occurences, only first {maxOccurences} occurences in the next {maxYears} years at most are listed"; } return(new JsonResult(rRuleResult)); }
public IActionResult GetRecurrencePattern(string RRule) { RecurrencePattern recurrencePattern = RecurringRuleProcessor.GetRecurrencePattern(new DateTime(2020, 9, 3, 19, 30, 0, DateTimeKind.Local), RRule); return(new JsonResult(recurrencePattern)); }