Exemplo n.º 1
0
        public IdentityService(IServiceProvider provider)
        {
            _logger = provider.GetService <ILoggerFactory>()?
                      .CreateLogger <IdentityService>();
            _userManager   = provider.GetRequiredService <UserManager <ChatIdentityUser> >();
            _signInManager = provider.GetRequiredService <SignInManager <ChatIdentityUser> >();
            _userRepo      = provider.GetRequiredService <IUserRepository>();
            _chatroomRepo  = provider.GetRequiredService <IChatroomRepository>();
            _eventBus      = provider.GetRequiredService <IEventBus>();

            Subcriptions.Add(_eventBus.GetEventStream <UserSignupEvent>()
                             .Subscribe(async e => await AddNewUserToGlobalChatroom(e)));
            Subcriptions.Add(_eventBus.GetEventStream <UserEnteredEvent>()
                             .Subscribe(async e =>
            {
                var room = await _chatroomRepo.GetByIdAsync(e.ChatroomId);
                var user = await _userRepo.GetByIdAsync(e.UserId);
                user.UserChatrooms.Add(room.UserChatrooms.First(uc => uc.UserId == e.UserId));
                await _userRepo.SaveChangesAsync();
            }));
            Subcriptions.Add(_eventBus.GetEventStream <UserLeftEvent>()
                             .Subscribe(async e =>
            {
                var room = await _chatroomRepo.GetByIdAsync(e.ChatroomId);
                var user = await _userRepo.GetByIdAsync(e.UserId);
                user.UserChatrooms.Remove(user.UserChatrooms.First(uc => uc.ChatroomId == e.ChatroomId));
                await _userRepo.SaveChangesAsync();
            }));
//	        EnsureAddAdmin().Wait();
        }
Exemplo n.º 2
0
        async Task AddNewUserToGlobalChatroom(UserSignupEvent e)
        {
            var globalRoom = await _chatroomRepo.GetByIdAsync(1);

            globalRoom.AddPeople(e.UserId, operatorId: 0);
            _chatroomRepo.Update(globalRoom);
            await _chatroomRepo.SaveChangesAsync();
        }
Exemplo n.º 3
0
        internal async Task NewMessageAsync(ChatMessage message)
        {
            var chatroom = await _chatroomRepo.GetByIdAsync(ChatroomId);

            chatroom.NewMessage(message);
        }