Beispiel #1
0
        /// <summary>
        /// ルーム内の投稿を更新します。
        /// ただし、ルームの最終アクセス日時は更新しません。
        /// </summary>
        /// <param name="roomId">投稿を取得したいルームのID</param>
        /// <param name="httpClient">razorで注入したHttpClientインスタンス</param>
        /// <returns>ルーム内の投稿一覧</returns>
        public static async Task <List <Message> > RefreshPostInRoom(Guid roomId, HttpClient httpClient)
        {
            var request = new ChatPostPostRequest()
            {
                RoomId = roomId,
                NeedMessageTailDate = DateTime.Now
            };

            var response = await httpClient.PostAsJsonAsync <ChatPostPostRequest>("Post", request);

            return(await response.Content.ReadFromJsonAsync <List <Message> >());
        }
Beispiel #2
0
        public async Task <ActionResult <IEnumerable <Message> > > Post(ChatPostPostRequest request)
        {
            var validationResult = await ValidateParameter(request.RoomId);

            if (validationResult != null)
            {
                return(validationResult);
            }

            var messages = await _postService.ReadPosts(
                request.RoomId, request.NeedMessageTailDate);

            return(Ok(messages));
        }
Beispiel #3
0
        private async Task InitializeChatRoom(HttpClient httpClient)
        {
            AllUser = await httpClient.GetFromJsonAsync <List <UserInformation> >("User");

            var roomDetail = await httpClient.GetFromJsonAsync <RoomDetail>($"Room/{RoomId}");

            RoomParticipants = roomDetail.Users;

            var request = new ChatPostPostRequest()
            {
                RoomId = RoomId,
                NeedMessageTailDate = DateTime.Now
            };

            var response = await httpClient.PostAsJsonAsync("Post", request);

            var messages = await response.Content.ReadFromJsonAsync <List <Message> >();

            var postModelTask = await Task.WhenAll(messages.Select(async message =>
            {
                var threadMessages = await httpClient.GetFromJsonAsync <List <ThreadMessage> >($"Thread/Post/{message.Id}");

                return(new PostModel()
                {
                    UserEmail = message.UserEmail,
                    HandleName = message.HandleName,
                    PostId = message.Id,
                    MessageContext = message.MessageContext,
                    CreateDate = message.CreateDate,
                    UpdateDate = message.UpdateDate,
                    ThreadModels = threadMessages
                                   .Select(threadMessage => new ThreadModel()
                    {
                        UserEmail = threadMessage.UserEmail,
                        HandleName = threadMessage.HandleName,
                        ThreadId = threadMessage.ThreadId,
                        MessageContext = threadMessage.MessageContext,
                        CreateDate = threadMessage.CreateDate,
                        UpdateDate = threadMessage.UpdateDate
                    }).ToList()
                });
            }));

            PostModels = postModelTask.ToList();
        }