コード例 #1
0
        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));
                        }
                    }
            }
        }
コード例 #2
0
        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);
                }
            }
        }