public IHttpActionResult GetDetails(GetAppointmentsRequest request) { var startDate = DateTime.Parse(request.Start); var endDate = DateTime.Parse(request.End); // Assuming 8 max per day * 5 (days/week) * 4 (weeks/month) const int NUM_APPTS = 160; var calendar = CalendarFolder.Bind(ExchangeServer.Open(), WellKnownFolderName.Calendar, new PropertySet()); var cView = new CalendarView(startDate, endDate, NUM_APPTS); cView.PropertySet = new PropertySet(AppointmentSchema.Subject, AppointmentSchema.Start, AppointmentSchema.End, AppointmentSchema.TimeZone); FindItemsResults<Appointment> appointments = calendar.FindAppointments(cView); var response = new GetAppointmentsResponse(); var list = new List<Interview>(); foreach(var app in appointments) { var appointment = Appointment.Bind(ExchangeServer.Open(), app.Id); var attendees = new List<RequiredAttendees>(); foreach (var required in appointment.RequiredAttendees) { attendees.Add(new RequiredAttendees { Name = required.Name, Email = required.Address, Response = required.ResponseType.ToString() }); } list.Add(new Interview { Start = app.Start, End = app.End, TimeZone = app.TimeZone, Attendees = attendees, Subject = app.Subject}); } response.Appointments = list; return Ok(response); }
public void GetAppointment() { var controller = new AppointmentsController(); var request = new GetAppointmentsRequest { Start = DateTime.UtcNow.ToString(), End = DateTime.UtcNow.AddDays(30).ToString() }; var result = controller.GetDetails(request) as OkNegotiatedContentResult<GetAppointmentsResponse>; Assert.IsNotNull(result.Content.Appointments); }