public async Task <IActionResult> CreateNewMessage([FromRoute] int id, [FromBody] MessageTextViewModel model) { if (ModelState.IsValid) { var dialog = await _context.Dialogs .Include(d => d.Users) .FirstOrDefaultAsync(d => d.Id == id); if (dialog == null) { return(new JsonResult(new Response { Ok = false, StatusCode = 404, Description = "Запрашиваемый диалог не найден" })); } var currentUser = await _userManager.GetUserAsync(User); if (!dialog.Users.Exists(d => d.UserId == currentUser.Id)) // Пользователь не состоит в диалоге { return(new JsonResult(new Response { Ok = false, StatusCode = 403, Description = "Пользователь не состоит в этом диалоге" })); } if (string.IsNullOrWhiteSpace(model.Text) || model.Text.Length > 10000) { return(new JsonResult(new Response { Ok = false, StatusCode = 400, Description = "Сообщение не соответствует требованиям (Длина до 10000)" })); } var newMessage = new Message { AuthorId = currentUser.Id, DialogId = dialog.Id, Text = model.Text, SendingTime = DateTime.Now }; _context.Messages.Add(newMessage); dialog.LastMessageTime = newMessage.SendingTime; _context.Dialogs.Update(dialog); await _context.SaveChangesAsync(); return(new JsonResult(new Response { Ok = true, StatusCode = 200, Result = new MessageViewModel(newMessage) })); } return(new JsonResult(new Response { Ok = false, StatusCode = 400, Description = "Заполнены не все (либо неверно) поля запроса" })); }
public async Task <IActionResult> EditMessage([FromRoute] int id, [FromBody] MessageTextViewModel model) { if (ModelState.IsValid) { var message = await _context.Messages.FirstOrDefaultAsync(m => m.Id == id); if (message == null) { return(new JsonResult(new Response { Ok = false, StatusCode = 404, Description = "Сообщение не найдено" })); } var currentUser = await _userManager.GetUserAsync(User); if (message.AuthorId != currentUser.Id) { return(new JsonResult(new Response { Ok = false, StatusCode = 403, Description = "Пользователь не является автором этого сообщения" })); } if (string.IsNullOrWhiteSpace(model.Text) || model.Text.Length < 1 || model.Text.Length > 10000) { return(new JsonResult(new Response { Ok = false, StatusCode = 400, Description = "Текст сообщения не соответствует требованиям (Длина до 10000)" })); } message.Text = model.Text; _context.Messages.Update(message); await _context.SaveChangesAsync(); return(new JsonResult(new Response { Ok = true, StatusCode = 200, Result = new MessageViewModel(message) })); } return(new JsonResult(new Response { Ok = false, StatusCode = 400, Description = "Заполнены не все (либо неверно) поля запроса" })); }