public async Task <ActionResult> _Create() { var model = new CreateCourseDiscussionModel(); model.Post = new CreateCourseDiscussionPostModel(); model.DiscussionVisibilities = new SelectList(await GetViewCategories(), "Id", "Name", 0); model.Groups = new SelectList(await GetGroups(), "Id", "Name", 0); return(View(model)); }
public async Task <ActionResult> _Create(CreateCourseDiscussionModel model) { var nameResponse = await WepApiMethod.SendApiAsync <bool>(HttpVerbs.Get, $"eLearning/CourseDiscussion/IsNameExist?id={null}&name={model.Name}"); if (nameResponse.isSuccess) { TempData["ErrorMessage"] = Language.eLearning.CourseCategory.ValidExistName; return(RedirectToAction("List")); } if (ModelState.IsValid) { DateTime _now = DateTime.Now; model.Post.UserId = model.UserId = CurrentUser.UserId.Value; if (!Directory.Exists(StorageRoot)) { Directory.CreateDirectory(StorageRoot); } int _attachmentId = 0; var r = new List <CreateCourseDiscussionAttachmentModel>(); foreach (string file in Request.Files)// set 1 only { var headers = Request.Headers; if (string.IsNullOrEmpty(headers["X-File-Name"])) { //UploadWholeFile(Request, statuses); for (int i = 0; i < Request.Files.Count; i++) { var filex = Request.Files[i]; if (!String.IsNullOrEmpty(filex.FileName)) { if (filex.ContentLength < RequestLimit) { var fileName = Path.GetFileName(filex.FileName); var fileId = _now.Ticks.ToString() + "_" + fileName; var fullPath = Path.Combine(StorageRoot, fileId); try { System.IO.Directory.CreateDirectory(StorageRoot); filex.SaveAs(fullPath); } catch { TempData["ErrorMessage"] = "Error save attachment"; return(RedirectToAction("List")); } var attachment = new CreateCourseDiscussionAttachmentModel() { Id = 0, FileName = fileName, FileSize = filex.ContentLength, FileType = filex.ContentType, FilePath = @"~\App_Data\DiscussionAttachment\" + fileId, FileTag = model.Name, FileNameOnStorage = fileId, CreatedBy = model.UserId, CreatedDate = _now, }; var attachmentresponse = await WepApiMethod.SendApiAsync <int>(HttpVerbs.Post, $"eLearning/CourseDiscussion/CreateAttachment", attachment); if (attachmentresponse.isSuccess) { _attachmentId = attachmentresponse.Data; model.Post.GotAttachment = true; } } else { TempData["ErrorMessage"] = "Attachment uploaded is too big"; return(RedirectToAction("List")); } } else { model.Post.GotAttachment = false; } } } } if (model.Post.GotAttachment.HasValue) { if (_attachmentId > 0 && model.Post.GotAttachment.Value) { model.AttachmentId = _attachmentId; } } var response = await WepApiMethod.SendApiAsync <string>(HttpVerbs.Post, $"eLearning/CourseDiscussion", model); if (response.isSuccess) { TempData["SuccessMessage"] = "Create New Discussion Completed"; LogActivity(Modules.Learning, "Create Discussion Topic", model); } else { TempData["ErrorMessage"] = "Failed Create New Discussion"; } } return(RedirectToAction("List")); }
public IHttpActionResult Post([FromBody] CreateCourseDiscussionModel model) { // create new entry for discussion // create new entry for post // create new link from post to attachment if any try { using (DbEntities _db = new DbEntities()) { DateTime _now = DateTime.Now; Discussion _discussion = new Discussion() { Name = model.Name, CreatedBy = model.UserId, UpdatedBy = model.UserId, UserId = model.UserId, CreatedDate = _now, DiscussionVisibility = model.DiscussionVisibility, Pinned = false, IsDeleted = false, FirstPost = 0, }; if (model.DiscussionVisibility == DiscussionVisibility.Everybody) { } else if (model.DiscussionVisibility == DiscussionVisibility.GroupOnly) { _discussion.GroupId = model.GroupId; } _db.Discussions.Add(_discussion); _db.SaveChanges(); DiscussionPost _post = new DiscussionPost() { DiscussionId = _discussion.Id, ParentId = null, Topic = model.Name, Message = model.Post.Message, IsDeleted = false, UserId = model.Post.UserId.Value, CreatedBy = model.Post.UserId.Value, CreatedDate = _now, UpdatedBy = model.Post.UserId.Value, UpdatedDate = _now }; _db.DiscussionPosts.Add(_post); _db.SaveChanges(); if (model.Post.GotAttachment.HasValue) { if (model.Post.GotAttachment.Value && (model.AttachmentId != null)) { DiscussionAttachment _attachment = new DiscussionAttachment() { AttachmentId = model.AttachmentId.Value, PostId = _post.Id, }; _db.DiscussionAttachment.Add(_attachment); _db.SaveChanges(); } } //var updateFirstPost var _toUpdateFirstPost = _db.Discussions.Find(_discussion.Id); if (_toUpdateFirstPost != null) { _toUpdateFirstPost.FirstPost = _post.Id; db.Discussions.Attach(_toUpdateFirstPost); db.Entry(_toUpdateFirstPost).Property(m => m.FirstPost).IsModified = true; db.Configuration.ValidateOnSaveEnabled = false; db.SaveChanges(); } return(Ok(_discussion.Id)); } } catch (Exception ex) { Debug.WriteLine(ex.Message); return(Ok()); //return ex.InnerException.Message.ToString(); } }