public async Task <ActionResult> Edit(int id, LtiMeetingViewModel ltiMeetingViewModel) { var ltiRequest = GetLtiRequestFromClaim(); if (ltiRequest == null) { return(RedirectToAction("BadRequest", "Error", new { error = "Invalid LTI request" })); } var consumer = _providerContext.Consumers.SingleOrDefault(c => c.Key.Equals(ltiRequest.ConsumerKey)); if (consumer == null) { return(RedirectToAction("BadRequest", "Error", new { error = "Invalid Consumer" })); } var meeting = Mapper.MapLtiMeetingViewModelToMeeting(ltiMeetingViewModel); var ltiMeeting = _providerContext.LtiMeetings.Find(id); var email = User.Identity.GetUserName(); var appUser = _applicationUserManager.GetUsers().FirstOrDefault(x => x.Email == email); await _apiClient.GetToken(appUser); var response = await _apiClient.UpdateMeeting(ltiMeeting.MeetingId, meeting); var bjnMeeting = JsonConvert.DeserializeObject <Meeting>(await response.Content.ReadAsStringAsync()); ltiMeeting.Title = bjnMeeting.title; ltiMeeting.MeetingId = bjnMeeting.id; _providerContext.Entry(ltiMeeting).State = EntityState.Modified; _providerContext.SaveChanges(); return(RedirectToAction("Details", new { id })); }