Ejemplo n.º 1
0
        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 }));
        }