public async Task <ActionResult> UpdateCourse(string courseId, int stepikCourseId, string updateSlidesIds, string xQueueName, string uploadVideo) { var exportSlideAfterKey = "stepik__course-update__export-slide-after__"; var returnUrl = Url.Action("UpdateOptions", "Stepik", new { courseId = courseId, stepikCourseId = stepikCourseId }); /* TODO (andgein): following 4 lines are copy-paste*/ var oauthAuthorizationUrl = OAuth.GetAuthorizationUrl(stepikClientId, GetStepikOAuthRedirectUri(), OAuth.EncryptState(returnUrl)); var client = await GetAuthenticatedStepikApiClient(); if (client == null) { return(Redirect(oauthAuthorizationUrl)); } var exporter = new CourseExporter(client.AccessToken); var course = courseManager.GetCourse(courseId); var updateSlidesGuids = ConvertStringToGuidList(updateSlidesIds).ToList(); var slidesUpdateOptions = new List <SlideUpdateOptions>(); foreach (var slideId in updateSlidesGuids) { var stepsIdsForSlide = stepikRepo.GetStepsExportedFromSlide(courseId, stepikCourseId, slideId) .Select(m => m.StepId) .ToList(); var insertSlideAfterStepId = int.Parse(Request.Form[exportSlideAfterKey + slideId.GetNormalizedGuid()]); slidesUpdateOptions.Add(new SlideUpdateOptions(slideId, insertSlideAfterStepId, stepsIdsForSlide)); } var updateOptions = new CourseUpdateOptions( stepikCourseId, xQueueName, slidesUpdateOptions, new List <Guid>() ) { VideoUploadOptions = (UploadVideoToStepikOption)Enum.Parse(typeof(UploadVideoToStepikOption), uploadVideo) }; var thread = new Thread(async() => await DoUpdateCourse(exporter, course, updateOptions)); thread.Start(); return(View("UpdateStarted", course)); }
private Task DoUpdateCourse(CourseExporter exporter, Course course, CourseUpdateOptions updateOptions) { return(DoExport(exporter, course, updateOptions, false)); }