コード例 #1
0
        // 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));
        }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
        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);
            }
        }
コード例 #4
0
        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));
        }