示例#1
0
        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));
        }
示例#2
0
 private Task DoUpdateCourse(CourseExporter exporter, Course course, CourseUpdateOptions updateOptions)
 {
     return(DoExport(exporter, course, updateOptions, false));
 }