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); }
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))); }
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); }
public ActionResult Edit(ReplyBindingModel rbm) { if (!this.ModelState.IsValid) { return(this.View(rbm)); } this.dataService.UpdateModel(rbm); return(this.RedirectToAction("Index", "Home")); }
public void WithValidModelAndWrongQuestionId_ReturnsFalse() { var model = new ReplyBindingModel() { QuestionId = 101, ReplyContent = "My reply" }; var result = this.service.SaveReply(model); Assert.AreEqual(false, result); }
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()); }
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(); } }
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); }
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 })); }
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))); }