public async Task <ActionResult> LeadAppointment(string leadID)
        {
            var client = await GetExchangeClient();

            LeadAppointmentViewModel vm = new LeadAppointmentViewModel();

            vm.leadID = leadID;

            //look up lead information

            //get authorization token
            Authenticator authenticator = new Authenticator();
            var           authInfo      = await authenticator.AuthenticateAsync(ExchangeResourceId);

            HttpClient httpClient = new HttpClient();

            httpClient.BaseAddress = new Uri(ExchangeResourceId);
            httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", await authInfo.GetAccessToken());

            var response = httpClient.GetAsync("/ews/odata/Me/Inbox/Messages('" + leadID + "')").Result;

            if (response.StatusCode == HttpStatusCode.OK)
            {
                var responseContent = await response.Content.ReadAsStringAsync();

                var message = JObject.Parse(responseContent).ToObject <Message>();

                vm.appointmentMessage = message.BodyPreview;
            }

            return(View(vm));
        }
        public async Task <ActionResult> LeadAppointment(LeadAppointmentViewModel vm)
        {
            var client = await GetExchangeClient();

            Event appointment = new Event();

            appointment.Subject     = "Sales Lead Meeting";
            appointment.Start       = new DateTimeOffset(vm.appointmentDate);
            appointment.End         = new DateTimeOffset(vm.appointmentDate.AddMinutes(30));
            appointment.BodyPreview = vm.appointmentMessage;

            await client.Me.Events.AddEventAsync(appointment);

            return(RedirectToAction("Index"));
        }