internal async Task UpdateAppointmentsAsync() { List <Appointment> appointments = null; using (_controller = new AppointmentController()) await Task.Run(() => appointments = (List <Appointment>) _controller.GetAppointments()); if (appointments != null) { lock (_appointments) lock (AppointmentModels) { _appointments.Clear(); AppointmentModels.Clear(); foreach (var appointment in appointments) { _appointments.Add(appointment); AppointmentModels.Add(new AppointmentModel(appointment)); } } } }
public IcsClient(string url) { using (MemoryStream stream = new MemoryStream(Resource1.HugoCalender)) { calendar = Ical.Net.Calendar.Load(stream); } foreach (var calEvent in calendar.Events) { if ((calEvent.Start.Year == DateTime.Now.Year && calEvent.RecurrenceRules.Count > 0) || calEvent.Start.Year == DateTime.Now.Year) { IList <Ical.Net.DataTypes.Attendee> attendees = calEvent.Attendees; DateTime dateStart = new DateTime(calEvent.Start.Ticks); DateTime dateEnd; if (calEvent.End != null) { dateEnd = new DateTime(calEvent.End.Ticks); } else { dateEnd = new DateTime(calEvent.Start.Ticks); } ScheduleAppointment appointment; foreach (var a in attendees) { Attendee attender = new Attendee(); attender.Name = a.Value.UserInfo; attender.Email = a.CommonName; attending.Add(attender); } if (calEvent.RecurrenceRules != null && calEvent.RecurrenceRules.Count != 0) { var RecRule = new List <RecurrencePattern>(calEvent.RecurrenceRules.AsEnumerable()); var pattern = RecRule.FirstOrDefault(); string stringPattern = pattern?.ToString(); var ex = pattern?.Frequency; RecurrenceProperties recurrenceProperties = new RecurrenceProperties(); recurrenceProperties.RecurrenceType = (RecurrenceType)calEvent.RecurrenceRules[0].Frequency; int[] dayInts = new int[pattern.ByDay.Count]; for (int i = 0; i < pattern.ByDay.Count; i++) { recurrenceProperties.WeekDays = (WeekDays)pattern.ByDay[i].DayOfWeek; } appointment = new ScheduleAppointment() { StartTime = dateStart, EndTime = dateEnd, Subject = calEvent.Summary, IsRecursive = true, RecurrenceRule = stringPattern, Location = calEvent.Location }; AppointmentModels.Add(new AppointmentModel(new ScheduleAppointment() { StartTime = dateStart, EndTime = dateEnd, Subject = calEvent.Summary, IsRecursive = true, RecurrenceRule = stringPattern, Location = calEvent.Location }, attending, stringPattern)); } else { appointment = new ScheduleAppointment() { StartTime = dateStart, EndTime = dateEnd, Subject = calEvent.Summary, IsRecursive = true, Location = calEvent.Location }; AppointmentModels.Add(new AppointmentModel(new ScheduleAppointment() { StartTime = dateStart, EndTime = dateEnd, Subject = calEvent.Summary, IsRecursive = true, Location = calEvent.Location }, attending, null)); } ScheduleAppointments.Add(appointment); } } }