public async Task <IActionResult> DirectMessage(string roomId, string friendId)
        {
            var userID = HttpContext.GetUserID();
            DirectMessageRoom room;

            if (roomId == null)
            {
                room = await _directMessageRoomService.GetDirectMessageRoomWithFriend(userID, friendId);

                if (room == null)
                {
                    room = new DirectMessageRoom(userID, friendId);
                    await _directMessageRoomService.CreateDirectMessageRoom(room);
                }
            }
            else
            {
                room = await _directMessageRoomService.GetDirectMessageRoom(roomId);

                if (!_directMessageRoomService.HasUserAccess(room.ID, userID))
                {
                    return(RedirectToAction("Index"));
                }
            }
            var roomVM = _mapper.Map <DirectMessageRoom, DirectMessageRoomViewModel>(room, opt =>
                                                                                     opt.AfterMap((src, dest) => dest.Recipent = _mapper.Map <UserViewModel>(_usersService.GetUser(src.Users.FirstOrDefault(u => u != userID)).Result)));

            return(View(roomVM));
        }
Beispiel #2
0
 public async Task CreateDirectMessageRoom(DirectMessageRoom directMessageRoom)
 {
     await _mongoDbContext.DirectMessagesRooms.InsertOneAsync(directMessageRoom);
 }