예제 #1
0
        public async Task <IActionResult> SendGroupMessage([Required][ValidateGuid][FromRoute] string chatId,
                                                           [Required][FromBody] MessageDataModel messageData)
        {
            var chat = await _chatsService.GetByIdAsync(chatId);

            var authResult = await _authorizationService.AuthorizeAsync(User, chat, "ChatParticipant");

            if (!authResult.Succeeded)
            {
                return(BadRequest(new ApiError("Chat not found", HttpStatusCode.BadRequest)));
            }

            try
            {
                var message = await _messagesService.SendGroupMessageAsync(chatId, messageData);

                return(CreatedAtAction(nameof(GetMessageById), new { messageId = message.Id, chatId }, message));
            }
            catch (ItemNotFoundException e)
            {
                return(BadRequest(new ApiError(e.Message, HttpStatusCode.BadRequest)));
            }
            catch (InvalidOperationException e)
            {
                return(BadRequest(new ApiError(e.Message, HttpStatusCode.BadRequest)));
            }
        }
예제 #2
0
        public async Task <IActionResult> GetChatById([FromRoute][ValidateGuid] string chatId)
        {
            var chat = await _chatsService.GetByIdAsync(chatId);

            if (chat == null)
            {
                return(NotFound(new ApiError("Chat with such Id was not found", HttpStatusCode.NotFound)));
            }

            return(Ok(chat));
        }