public bool SaveReply(ReplyBindingModel model)
        {
            var isPermitted = this.db.Questions
                              .Any(q => q.Id == model.QuestionId && q.EventId == model.EventId &&
                                   q.Event.IsClosed == false && q.Event.IsDeleted == false);

            if (!isPermitted)
            {
                return(false);
            }

            var reply = new Reply()
            {
                QuestionId = model.QuestionId,
                Content    = model.ReplyContent
            };

            if (model.ReplyAuthor == null)
            {
                reply.AuthorName = VoteConstants.Anonymous;
            }
            else
            {
                reply.AuthorName = model.ReplyAuthor;
            }

            this.db.Replies.Add(reply);

            this.db.SaveChanges();

            return(true);
        }
Пример #2
0
        public async Task <ActionResult> SendReply(ReplyBindingModel reply)
        {
            var returnUrl = this.Request.UrlReferrer?.AbsolutePath;

            if (!this.User.Identity.IsAuthenticated)
            {
                return(await Task.FromResult(
                           this.RedirectToAction(
                               "Login",
                               "Account",
                               new
                {
                    returnUrl
                })));
            }

            if (!this.ModelState.IsValid)
            {
                return(await Task.FromResult(this.Redirect(returnUrl)));
            }

            await this.dataService.CreateReply(reply);

            return(await Task.FromResult(this.Redirect(returnUrl)));
        }
Пример #3
0
        public HttpResponseMessage GetReply(int replyId)
        {
            // http://localhost:49578/api/webcontent/reply?replyid=5
            var reply = BlogDbContext.Create().Replies.Find(replyId);

            if (reply == null)
            {
                ModelState.AddModelError(
                    "replyId",
                    new ArgumentException("Reply with this id is not found"));
                return(Request.CreateErrorResponse(HttpStatusCode.NotFound, ModelState));
            }

            var replyBM = new ReplyBindingModel
            {
                ReplyId         = replyId,
                Text            = reply.ReplayText,
                TopicId         = reply.TopicId,
                ReplierId       = reply.UserId,
                ReplyDateString = reply.ReplayDate.ToShortDateString()
            };

            var request = Request.CreateResponse(HttpStatusCode.OK);

            request.Content = new StringContent(
                System.Web.Helpers.Json.Encode(replyBM),
                Encoding.UTF8,
                "application/json");
            return(request);
        }
Пример #4
0
        public ActionResult Edit(ReplyBindingModel rbm)
        {
            if (!this.ModelState.IsValid)
            {
                return(this.View(rbm));
            }

            this.dataService.UpdateModel(rbm);
            return(this.RedirectToAction("Index", "Home"));
        }
Пример #5
0
        public void WithValidModelAndWrongQuestionId_ReturnsFalse()
        {
            var model = new ReplyBindingModel()
            {
                QuestionId   = 101,
                ReplyContent = "My reply"
            };

            var result = this.service.SaveReply(model);

            Assert.AreEqual(false, result);
        }
Пример #6
0
        public Task CreateReply(ReplyBindingModel reply)
        {
            var newReply = new Reply
            {
                ReplayDate = DateTime.Now,
                ReplayText = reply.Text,
                UserId     = reply.ReplierId,
                TopicId    = reply.TopicId
            };

            var context = this.GetDbContext;

            context.Replies.Add(newReply);
            return(context.SaveChangesAsync());
        }
Пример #7
0
        public void UpdateModel(ReplyBindingModel rbm)
        {
            var date     = this.GetDbContext.Replies.Find(rbm.ReplyId).ReplayDate;
            var newReply = new Reply
            {
                Id         = rbm.ReplyId,
                UserId     = rbm.ReplierId,
                ReplayText = rbm.Text,
                TopicId    = rbm.TopicId,
                ReplayDate = date
            };

            using (var context = this.GetDbContext)
            {
                context.Replies.AddOrUpdate(newReply);
                context.SaveChanges();
            }
        }
Пример #8
0
        public void WithValidModel_ReplyIsAdded()
        {
            var repliesBefore = this.db.Questions.Find(1).Replies.Count;

            var model = new ReplyBindingModel()
            {
                EventId      = 1,
                EventCode    = "001",
                QuestionId   = 1,
                ReplyContent = "My reply"
            };

            this.service.SaveReply(model);

            var repliesAfter = this.db.Questions.Find(1).Replies.Count;

            Assert.AreEqual(0, repliesBefore);
            Assert.AreEqual(1, repliesAfter);
        }
Пример #9
0
        public async Task <IActionResult> Post(ReplyBindingModel model)
        {
            if (!this.ModelState.IsValid)
            {
                return(RedirectToAction("Join", "Events", new { code = model.EventCode }));
            }

            var saved = this.service.SaveReply(model);

            if (!saved)
            {
                return(RedirectToAction("Join", "Events", new { code = model.EventCode }));
            }

            await this.hubContext.Clients.Group(model.EventCode)
            .SendAsync("AddReply", new { model.QuestionId, model.ReplyContent, model.ReplyAuthor });

            return(RedirectToAction("Join", "Events", new { code = model.EventCode }));
        }
Пример #10
0
        public async Task <ActionResult> Edit(int replyId)
        {
            var requestedReply = await this.dataService.GetReplyById(replyId);

            if (requestedReply == null)
            {
                return(await Task.FromResult(new HttpStatusCodeResult(HttpStatusCode.NotFound)));
            }

            if (requestedReply.User.UserName != this.User.Identity.Name)
            {
                return(await Task.FromResult(new HttpStatusCodeResult(HttpStatusCode.Forbidden)));
            }

            var newBindingModel = new ReplyBindingModel
            {
                ReplyId   = requestedReply.Id,
                TopicId   = requestedReply.TopicId,
                Text      = requestedReply.ReplayText,
                ReplierId = requestedReply.UserId
            };

            return(await Task.FromResult(this.View(newBindingModel)));
        }