// GET: eLearning/CourseContents/Create public async Task <ActionResult> Create(int?courseId, int?moduleId, CreateContentFrom createContentFrom, CourseContentType courseContentType, string courseTitle) { if (courseId == null) { TempData["ErrorMessage"] = "Could not find a course to create the content to."; return(Redirect(Request.UrlReferrer.ToString())); } CreateOrEditContentModel model = new CreateOrEditContentModel { ContentType = courseContentType, PageTitle = courseTitle, FileDocument = new FileDocument(), CreateContentFrom = createContentFrom, CourseId = courseId.Value, IsFeedbackOn = 0, }; if (createContentFrom == CreateContentFrom.Module) { model.CourseModuleId = moduleId.Value; } await GetAllQuestions(courseId.Value); if (courseContentType == CourseContentType.Audio) { await GetAllAudio(courseId.Value); } if (courseContentType == CourseContentType.Document) { await GetAllDocument(courseId.Value); } return(View(model)); }
public async Task<IHttpActionResult> Create([FromBody] CreateOrEditContentModel request) { if (ModelState.IsValid) { var content = _mapper.Map<CourseContent>(request); content.CompletionType = request.CompletionType; if (request.IsFeedbackOn > 0) { if (request.FeedbackId.HasValue) { content.FeedbackId = request.FeedbackId.Value; content.FeedbackEnable = true; } else { content.FeedbackEnable = false; } } else { content.FeedbackEnable = false; } if (request.CompletionType == ContentCompletionType.Timer) { content.Timer = request.Timer != null ? request.Timer.Value : 0; content.CompletionType = ContentCompletionType.Timer; content.QuestionId = null; content.Question = null; } else if (request.CompletionType == ContentCompletionType.ClickButton) { content.QuestionId = null; content.Question = null; content.Timer = 0; } else if (request.CompletionType == ContentCompletionType.AnswerQuestion) { content.Timer = 0; content.QuestionId = request.ContentQuestionId != null ? request.ContentQuestionId.Value : request.ContentQuestionId; } // check if the request come from front page, then create a new module then create the content. // if it comes from the module, then create the content there // differentiate by CreateContentFrom if (request.CreateContentFrom == CreateContentFrom.CourseFrontPage) { var course = await db.Courses .Include(x => x.Modules) .FirstOrDefaultAsync(x => x.Id.Equals(request.CourseId)); if (course == null) return BadRequest(); if (course.Modules == null) { course.Modules = new List<CourseModule>(); } var module = new CourseModule { CourseId = request.CourseId, Objectives = "Objective", Description = "Description", Title = request.Title, Order = course.Modules.Count() > 0 ? (course.Modules.Max(x => x.Order) + 1) : 1 }; content.Order = 1; module.ModuleContents = new List<CourseContent>(); module.ModuleContents.Add(content); course.Modules.Add(module); await db.SaveChangesAsync(); module.UpdateTotals(); db.SetModified(module); await db.SaveChangesAsync(); course.UpdateCourseStat(); db.SetModified(course); await db.SaveChangesAsync(); return Ok(content.Id); } else { var module = await db.CourseModules .Include(x => x.ModuleContents) .FirstOrDefaultAsync(x => x.Id.Equals(request.CourseModuleId)); if (module == null) return BadRequest(); if (module.ModuleContents == null) { module.ModuleContents = new List<CourseContent>(); } content.Order = module.ModuleContents.Count() > 0 ? module.ModuleContents.Max(x => x.Order) + 1 : 1; module.ModuleContents.Add(content); await db.SaveChangesAsync(); var course = await db.Courses.FindAsync(module.CourseId); if (course != null) { course.UpdateCourseStat(); db.SetModified(course); await db.SaveChangesAsync(); } return Ok(content.Id); } } else { return BadRequest(ModelState); } }
public async Task<IHttpActionResult> Edit([FromBody] CreateOrEditContentModel request) { if (ModelState.IsValid) { var content = await db.CourseContents .Include(x => x.ContentFile.FileDocument) .FirstOrDefaultAsync(x => x.Id.Equals(request.Id)); if (content == null) return BadRequest(); if (request.IsFeedbackOn == 0) { content.FeedbackEnable = false; } else { if (request.FeedbackId == null) { content.FeedbackEnable = false; } else { content.FeedbackId = request.FeedbackId; content.FeedbackEnable = true; } } content.CompletionType = request.CompletionType; content.ContentType = request.ContentType; content.Description = request.Description; content.ShowIFrameAs = request.ShowIFrameAs; content.Text = request.Text; content.Title = request.Title; content.Url = request.Url; content.VideoType = request.VideoType; content.AudioType = request.AudioType; content.DocumentType = request.DocumentType; content.Height = request.Height; content.Width = request.Width; if (request.ContentFileId != null) content.ContentFileId = request.ContentFileId; content.CompletionType = request.CompletionType; if (request.CompletionType == ContentCompletionType.Timer) { content.Timer = request.Timer != null ? request.Timer.Value : 0; content.CompletionType = ContentCompletionType.Timer; content.QuestionId = null; content.Question = null; } else if (request.CompletionType == ContentCompletionType.ClickButton) { content.QuestionId = null; content.Question = null; content.Timer = 0; } else if (request.CompletionType == ContentCompletionType.AnswerQuestion) { content.Timer = 0; content.QuestionId = request.ContentQuestionId != null ? request.ContentQuestionId.Value : request.ContentQuestionId; } try { await db.SaveChangesAsync(); return Ok(true); } catch (Exception e) { return BadRequest(e.Message); } } else { return BadRequest(ModelState); } }
public async Task <ActionResult> Edit(CreateOrEditContentModel model, string SubmitType = "Save") { if (ModelState.IsValid) { model.CreatedBy = CurrentUser.UserId.Value; var currentFileName = model.File; model.File = null; var modelFileDocument = model.FileDocument; // check slideshare url and change to embed code if (model.ContentType == CourseContentType.Document) { await GetAllDocument(model.CourseId, model.ContentFileId != null?model.ContentFileId.Value : -1); if (model.DocumentType == DocumentType.UseSlideshare) { if (!model.Url.Contains("embed_code")) { model.Url = await SlideshareHelper.GetEmbedCode(model.Url); } } } if (model.IsFeedbackOn > 0) { if (model.FeedbackId == null) { FeedbackCreateModel _new = new FeedbackCreateModel(); _new.CreatedBy = model.CreatedBy; _new.Created = model.CreatedDate; var _createFeedback = await WepApiMethod.SendApiAsync <int>(HttpVerbs.Post, ContentApiUrl.CreateFeedback, _new); if (_createFeedback.isSuccess) { model.FeedbackId = _createFeedback.Data; } } } var response = await WepApiMethod.SendApiAsync <bool>(HttpVerbs.Post, ContentApiUrl.Edit, model); if (response.isSuccess) { TempData["SuccessMessage"] = "Content successfully edited."; await LogActivity(Modules.Learning, "Edit content : " + model.Title); // Check if this creation include fileupload, which will require us to save the file model.File = currentFileName; if (((model.ContentType == CourseContentType.Video && model.VideoType == VideoType.UploadVideo) || (model.ContentType == CourseContentType.Audio && model.AudioType == AudioType.UploadAudio) || (model.ContentType == CourseContentType.Document && model.DocumentType == DocumentType.UploadDocument) || (model.ContentType == CourseContentType.Flash) || (model.ContentType == CourseContentType.Pdf) || (model.ContentType == CourseContentType.Powerpoint)) && model.File != null) { // upload the file var result = await new FileController().UploadToApi <List <FileDocumentModel> >(model.File); if (result.isSuccess) { var data = result.Data; var fileDocument = data[0]; fileDocument.FileType = model.ContentType.ToString(); fileDocument.CreatedBy = CurrentUser.UserId.Value; fileDocument.ContentFileType = model.FileType; fileDocument.CourseId = model.CourseId; fileDocument.ContentId = model.Id; if (model.ContentType == CourseContentType.Audio) { fileDocument.ContentFileType = FileType.Audio; } if (model.ContentType == CourseContentType.Video) { fileDocument.ContentFileType = FileType.Video; } if (model.ContentType == CourseContentType.Document) { fileDocument.ContentFileType = FileType.Document; } var resultUpload = await WepApiMethod.SendApiAsync <string>(HttpVerbs.Post, FileApiUrl.UploadInfo, fileDocument); if (resultUpload.isSuccess) { model.ContentFileId = int.Parse(resultUpload.Data); } else { TempData["ErrorMessage"] = "Cannot upload file"; } } } if (SubmitType.Equals("SaveAndView")) { return(RedirectToAction("View", "CourseContents", new { area = "eLearning", @id = model.Id })); } else { return(RedirectToAction("Content", "CourseModules", new { area = "eLearning", @id = model.CourseModuleId })); } } } TempData["ErrorMessage"] = "Cannot edit content."; await GetAllQuestions(model.CourseId); return(View(model)); }