Exemplo n.º 1
0
        public async Task <UserDTO> Login(LoginDTO dto, CancellationToken cancel)
        {
            var user = await _repository.GetByNickName(dto.Nickname, cancel);

            if (user == null)
            {
                var publicRoom = await _roomRepository.Get(StaticData.PublicRoomId, cancel);

                user = await _repository.Create(dto.ToEntity(new List <Room> {
                    publicRoom
                }), cancel);

                await _hubContext.Clients.Group(publicRoom.RoomId.ToString()).SendAsync("UserJoined", new UserJoinedDTO
                {
                    User = new UserDTO {
                        Id = user.Id, NickName = user.NickName
                    },
                    RoomId = publicRoom.RoomId
                });
            }

            return(user.ToDTO(user.Rooms
                              .Select(x => x.ToDTO(x.Users
                                                   .Select(u => u.ToDTO(new List <RoomDTO>())).ToList())).ToList()));
        }