Exemple #1
0
        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 = "Заполнены не все (либо неверно) поля запроса"
            }));
        }
Exemple #2
0
        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 = "Заполнены не все (либо неверно) поля запроса"
            }));
        }