示例#1
0
        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);
        }
示例#2
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);
        }
示例#3
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));
        }
示例#4
0
        private async Task <InterviewScheduleViewModel> CreateModel(string start, string end)
        {
            var request = new GetAppointmentsRequest
            {
                Start = start,
                End   = end
            };

            var response = await _client.GetAppointments(request);

            var events = new List <EventObject>();
            int i      = 0;

            foreach (var app in response.Appointments)
            {
                events.Add(new EventObject
                {
                    title           = app.Subject,
                    start           = app.Start.ToString("o"),
                    end             = app.End.ToString("o"),
                    allDay          = false,
                    backgroundColor = "green"
                });

                response.Appointments.ElementAt(i).StartViewTime = response.Appointments.ElementAt(i).Start.ToString("t");
                response.Appointments.ElementAt(i).EndViewTime   = response.Appointments.ElementAt(i).End.ToString("t");
                i++;
            }
            var model = new InterviewScheduleViewModel
            {
                Appointments = response.Appointments,
                Events       = events,
                Start        = start,
                End          = end
            };

            return(model);
        }