public ActionResult _DiscussionReply()
        {
            var model = new DiscussionView();

            ModelState.Clear();
            return(PartialView(model));
        }
示例#2
0
            DiscussionView EnsureView(View convertView)
            {
                DiscussionView view = convertView as DiscussionView;

                if (view == null)
                {
                    view = new DiscussionView(context);
                }
                return(view);
            }
        public async Task <ActionResult> View(int id)
        {
            var model = new DiscussionView();

            model.NewDiscussionReply = new CreateCourseDiscussionPostModel();
            model.Post       = new List <DiscussionPostModel>();
            model.Attachment = new List <DiscussionAttachment>();

            model.Discussion = new Discussion();
            var DiscussionResponse = await WepApiMethod.SendApiAsync <Discussion>(HttpVerbs.Get, $"eLearning/CourseDiscussion/GetDiscussion?id={id}");

            if (DiscussionResponse.isSuccess)
            {
                model.Discussion = DiscussionResponse.Data;

                var PostResponse = await WepApiMethod.SendApiAsync <List <DiscussionPostModel> >(HttpVerbs.Get, $"eLearning/CourseDiscussion/GetPost?id={id}");

                if (PostResponse.isSuccess)
                {
                    model.Post = PostResponse.Data;
                }
                else
                {
                    TempData["ErrorMessage"] = "Failed Load Discussion Thread";
                    return(RedirectToAction("List"));
                }

                var AttachmentResponse = await WepApiMethod.SendApiAsync <List <DiscussionAttachment> >(HttpVerbs.Get, $"eLearning/CourseDiscussion/GetAttachment?id={id}");

                if (AttachmentResponse.isSuccess)
                {
                    model.Attachment = AttachmentResponse.Data;
                }
                else
                {
                    TempData["ErrorMessage"] = "Failed Load Discussion Thread";
                    return(RedirectToAction("List"));
                }

                model.NewDiscussionReply.DiscussionId = id;
                model.NewDiscussionReply.IsDeleted    = false;
                model.NewDiscussionReply.Message      = "";
                model.NewDiscussionReply.UserId       = CurrentUser.UserId;

                return(View(model));
            }
            else
            {
                TempData["ErrorMessage"] = "Failed Load Discussion Thread";
                return(RedirectToAction("List"));
            }
        }
        public async Task <ActionResult> CreateNewComment(DiscussionView NewPost)
        {
            if (NewPost != null)
            {
                if (NewPost.NewDiscussionReply != null)
                {
                    var DiscussionResponse = await WepApiMethod.SendApiAsync <DiscussionPost>(HttpVerbs.Get, $"eLearning/CourseDiscussion/GetParentPost?id={NewPost.NewDiscussionReply.ParentId}");

                    if (DiscussionResponse.isSuccess)
                    {
                        var parentPost = DiscussionResponse.Data;

                        if (NewPost.NewDiscussionReply != null)
                        {
                            DateTime _now = DateTime.Now;

                            DiscussionPost _post = new DiscussionPost();
                            _post.DiscussionId = parentPost.DiscussionId;
                            _post.ParentId     = parentPost.Id;
                            _post.Topic        = parentPost.Topic;
                            _post.Message      = NewPost.NewDiscussionReply.Message;
                            _post.IsDeleted    = false;
                            _post.UserId       = CurrentUser.UserId.Value;
                            _post.CreatedBy    = CurrentUser.UserId.Value;
                            _post.CreatedDate  = _now;
                            _post.UpdatedBy    = CurrentUser.UserId.Value;

                            db.DiscussionPosts.Add(_post);
                            db.SaveChanges();

                            return(RedirectToAction("View", new { id = parentPost.DiscussionId }));
                        }
                    }
                    else
                    {
                    }
                }
            }
            return(RedirectToAction("List"));
        }
示例#5
0
            void FetchAvatar(string url, DiscussionView view, long version)
            {
                var data = faceCache.GetOrAdd(url, u => Task.Run(() => {
                    u          = ResizeUrl(u);
                    var client = new WebClient();
                    try {
                        return(client.DownloadData(u));
                    } catch {
                        return(null);
                    }
                }));

                if (data.IsCompleted && data.Result != null)
                {
                    var avatar = view.FindViewById <ImageView> (Resource.Id.PostAvatar);
                    var bmp    = BitmapFactory.DecodeByteArray(data.Result, 0, data.Result.Length);
                    bmp = ResizeBitmap(bmp);
                    avatar.SetImageDrawable(new VignetteDrawable(bmp, withEffect: false));
                }
                else
                {
                    data.ContinueWith(t => {
                        if (t.Result != null && view.VersionNumber == version)
                        {
                            var bmp = BitmapFactory.DecodeByteArray(data.Result, 0, data.Result.Length);
                            bmp     = ResizeBitmap(bmp);
                            context.RunOnUiThread(() => {
                                if (view.VersionNumber == version)
                                {
                                    var avatar = view.FindViewById <ImageView> (Resource.Id.PostAvatar);
                                    avatar.SetImageDrawable(new VignetteDrawable(bmp, withEffect: false));
                                }
                            });
                        }
                    });
                }
            }
        public async Task <ActionResult> CreateNewReply(DiscussionView NewPost)
        {
            if (NewPost != null)
            {
                if (NewPost.NewDiscussionReply != null)
                {
                    DateTime _now          = DateTime.Now;
                    int      _attachmentId = 0;
                    //int attachmentId = SaveAttachment(_now, Request.Files).Result;
                    foreach (string file in Request.Files)// set 1 only
                    {
                        for (int i = 0; i < Request.Files.Count; i++)
                        {
                            var filex = Request.Files[i];
                            if (!String.IsNullOrEmpty(filex.FileName))
                            {
                                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);

                                    var attachment = new CreateCourseDiscussionAttachmentModel()
                                    {
                                        Id                = 0,
                                        FileName          = fileName,
                                        FileSize          = filex.ContentLength,
                                        FileType          = filex.ContentType,
                                        FilePath          = @"~\App_Data\DiscussionAttachment\" + fileId,
                                        FileTag           = "",
                                        FileNameOnStorage = fileId,
                                        CreatedBy         = CurrentUser.UserId.Value,
                                        CreatedDate       = _now,
                                    };

                                    var attachmentresponse = await WepApiMethod.SendApiAsync <int>(HttpVerbs.Post, $"eLearning/CourseDiscussion/CreateAttachment", attachment);

                                    if (attachmentresponse.isSuccess)
                                    {
                                        _attachmentId = attachmentresponse.Data;
                                    }
                                }
                                catch
                                {
                                    TempData["ErrorMessage"] = "Error save attachment";
                                    //return RedirectToAction("List");
                                }
                            }
                        }
                    }

                    // add attachment


                    // add reply (attach attachment id if any)

                    DiscussionPost _post = new DiscussionPost();
                    _post.DiscussionId = NewPost.NewDiscussionReply.DiscussionId;
                    _post.ParentId     = null;
                    _post.Topic        = "";
                    _post.Message      = NewPost.NewDiscussionReply.Message;
                    _post.IsDeleted    = false;
                    _post.UserId       = CurrentUser.UserId.Value;
                    _post.CreatedBy    = CurrentUser.UserId.Value;
                    _post.CreatedDate  = _now;
                    _post.UpdatedBy    = CurrentUser.UserId.Value;

                    //db.DiscussionPosts.Add(_post);
                    //db.SaveChanges();
                    var addNewReply = await WepApiMethod.SendApiAsync <DiscussionPost>(HttpVerbs.Post, $"eLearning/CourseDiscussion/AddDiscussionReply", _post);

                    if (addNewReply.isSuccess)
                    {
                        var addedReply = addNewReply.Data;

                        if (_attachmentId > 0)
                        {
                            var linkAttachment = await WepApiMethod.SendApiAsync <bool>(HttpVerbs.Post, $"eLearning/CourseDiscussion/AddAttachmentToDisccusion?pid={addedReply.Id}&aid={_attachmentId}");

                            if (linkAttachment.isSuccess)
                            {
                            }
                            else
                            {
                            }
                            //DiscussionAttachment _attachment = new DiscussionAttachment()
                            //{
                            //    AttachmentId = _attachmentId,
                            //    PostId = _post.Id,
                            //};

                            //db.DiscussionAttachment.Add(_attachment);
                            //db.SaveChanges();
                        }
                    }
                    else
                    {
                        //error
                    }
                }
            }
            return(RedirectToAction("View", new { id = NewPost.NewDiscussionReply.DiscussionId }));
        }
			void FetchAvatar (string url, DiscussionView view, long version)
			{
				var data = faceCache.GetOrAdd (url, u => Task.Run (() => {
					u = ResizeUrl (u);
					var client = new WebClient ();
					try {
						return client.DownloadData (u);
					} catch {
						return null;
					}
				}));

				if (data.IsCompleted && data.Result != null) {
					var avatar = view.FindViewById<ImageView> (Resource.Id.PostAvatar);
					var bmp = BitmapFactory.DecodeByteArray (data.Result, 0, data.Result.Length);
					bmp = ResizeBitmap (bmp);
					avatar.SetImageDrawable (new VignetteDrawable (bmp, withEffect: false));
				} else {
					data.ContinueWith (t => {
						if (t.Result != null && view.VersionNumber == version) {
							var bmp = BitmapFactory.DecodeByteArray (data.Result, 0, data.Result.Length);
							bmp = ResizeBitmap (bmp);
							context.RunOnUiThread (() => {
								if (view.VersionNumber == version) {
									var avatar = view.FindViewById<ImageView> (Resource.Id.PostAvatar);
									avatar.SetImageDrawable (new VignetteDrawable (bmp, withEffect: false));
								}
							});
						}
					});
				}
			}
			DiscussionView EnsureView (View convertView)
			{
				DiscussionView view = convertView as DiscussionView;
				if (view == null)
					view = new DiscussionView (context);
				return view;
			}