Esempio n. 1
0
        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)));
        }
Esempio n. 2
0
        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 }));
            }
        }
Esempio n. 3
0
 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());
     }
 }