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();
            }
        }