Example #1
0
        public async Task <GetAppointmentsResponse> GetAppointments(GetAppointmentsRequest request)
        {
            var response = new GetAppointmentsResponse();

            using (var client = new HttpClient())
            {
                client.BaseAddress = new Uri(_url);
                client.DefaultRequestHeaders.Accept.Clear();
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

                HttpResponseMessage resp = await client.PostAsJsonAsync("/api/appointments/details", request);

                if (resp.IsSuccessStatusCode)
                {
                    response = await resp.Content.ReadAsAsync <GetAppointmentsResponse>();

                    return(response);
                }
            }
            return(response);
        }
Example #2
0
        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));
        }