public async Task <IActionResult> SendReply([FromBody] SendReplyModel model) { // post exist var postId = XUtils.ParseId(model.PostId); var post = await Context.Posts.FirstOrDefaultAsync(p => p.Id == postId); if (post == null) { return(new ApiError(MyErrorCode.IdNotFound, "Post id not found").Wrap()); } // user is a member of post.topic var member = await Context.TopicMembers.FirstOrDefaultAsync(p => p.UserId == AuthStore.UserId && p.TopicId == post.TopicId); if (member == null) { return(new ApiError(MyErrorCode.NotAMember, "You are not a member of the topic").Wrap()); } // send reply var reply = new Reply(AuthStore.UserId.Value, post.Id, model.Text); await Context.AddAsync(reply); await Context.GoAsync(); return(Ok(new IdResponse(reply.Id))); }
public JsonResult SendReply(SendReplyModel model) { try { Request request = DatabaseContext.Requests.FirstOrDefault(r => r.Id == model.RequestId); if (request == null) { throw new ArgumentException("Выбранной завявки не найдено"); } if (request.Status.Id == (int)RequestStatus.Waiting) { Status toStatus = DatabaseContext.Statuses.FirstOrDefault(s => s.Id == (int)RequestStatus.UnderConsideration); if (toStatus == null) { throw new ArgumentException("Статуса для изменения не найдено"); } request.Status = toStatus; DatabaseContext.SaveChanges(); } Reply reply = new Reply() { Body = model.Body, Date = DateTime.UtcNow, Employee = CurrentUser as Employee, Request = request }; DatabaseContext.Replies.Add(reply); DatabaseContext.SaveChanges(); if (model.Files != null) { string rootDirectory = Server.MapPath("~\\Files"); string currentReplyDirectory = "\\Reply_" + reply.Id; string replyDirectoryName = rootDirectory + currentReplyDirectory; DirectoryInfo directory = new DirectoryInfo(replyDirectoryName); if (!directory.Exists) { directory.Create(); reply.File = currentReplyDirectory; DatabaseContext.SaveChanges(); } foreach (var file in model.Files) { string fileName = Path.GetFileName(file.FileName); file.SaveAs(directory.FullName + "\\" + fileName); } } return(Json(new { result = true })); } catch (Exception e) { Logger.Error(e.Message); return(Json(new { result = false })); } }
public ActionResult RenderSendReply(int requestId) { try { Request request = DatabaseContext.Requests.FirstOrDefault(r => r.Id == requestId); if (request == null) { throw new ArgumentException("Выбранный запрос не найден"); } SendReplyModel model = new SendReplyModel() { RequestId = requestId }; return(PartialView("_SendReply", model)); } catch (Exception e) { Logger.Error(e.Message); return(new HttpNotFoundResult()); } }