public async Task <IActionResult> EditMessage([Required][ValidateGuid][FromRoute] string messageId, [Required][FromBody] MessageDataModel messageData) { var message = await _messagesService.GetMessageByIdAsync(messageId); if (message == null) { return(NotFound(new ApiError("Message with specified Id was not found", HttpStatusCode.NotFound))); } var chat = await _chatsService.GetByIdAsync(message.ChatId); var isChatParticipant = await _authorizationService.AuthorizeAsync(User, chat, "ChatParticipant"); if (!isChatParticipant.Succeeded) { return(NotFound(new ApiError("Message with specified Id was not found", HttpStatusCode.NotFound))); } var authResult = await _authorizationService.AuthorizeAsync(User, message, "SameUser"); if (!authResult.Succeeded) { var authError = new ApiError("You are not message author", HttpStatusCode.Unauthorized); return(StatusCode(StatusCodes.Status403Forbidden, authError)); } try { await _messagesService.EditMessageAsync(messageId, messageData); } catch (ItemNotFoundException e) { return(BadRequest(new ApiError(e.Message, HttpStatusCode.BadRequest))); } catch (InvalidOperationException e) { return(BadRequest(new ApiError(e.Message, HttpStatusCode.BadRequest))); } return(Ok(message)); }