예제 #1
0
        public async Task <List <ChatViewModel> > GetMessages(ChatGetMessageRequest request)
        {
            var checkSender = await _context.Users.FirstAsync(x => x.Id == request.senderId);

            var checkRoleSender = await _userManager.GetRolesAsync(checkSender);

            var chat = new Chat();
            var data = _context.chats.AsQueryable();

            if (checkRoleSender[0] == "User")
            {
                data = data.Where(x => (x.senderId == request.senderId && x.receiverId == adminId) ||
                                  (x.senderId == adminId && x.receiverId == request.senderId));
            }
            if (checkRoleSender[0] == "Admin")
            {
                if (request.receiverId.HasValue)
                {
                    data = data.Where(x => (x.senderId == request.senderId && x.receiverId == request.receiverId.Value) ||
                                      (x.senderId == request.receiverId.Value && x.receiverId == request.senderId));
                }
                else
                {
                    return(new List <ChatViewModel>());
                }
            }
            return(await data.Select(y => new ChatViewModel
            {
                id = y.id,
                content = y.content,
                createDate = y.createDate,
                senderId = y.senderId,
                sender = y.sender,
                receiverId = y.receiverId,
                receiver = y.receiver,
            }).ToListAsync());
        }
        public async Task <IActionResult> GetMessages(ChatGetMessageRequest request)
        {
            var data = await _chatService.GetMessages(request);

            return(Ok(data));
        }