Example #1
0
        public override Task OnConnectedAsync()
        {
            var currentUser = GetCurrentUser();

            dc.Connections.Add(new Connection {
                Id            = Context.ConnectionId,
                CreatedUserId = currentUser.Id
            });

            // add to public channel
            if (!dc.ChannelUsers.Any(x => x.ChannelId == Constants.PUBLIC_CHANNEL_ID && x.UserId == currentUser.Id))
            {
                dc.ChannelUsers.Add(new ChannelUser
                {
                    ChannelId = Constants.PUBLIC_CHANNEL_ID,
                    UserId    = currentUser.Id
                });
            }

            var userEntity = dc.Users.Find(currentUser.Id);

            if (userEntity == null)
            {
                dc.Users.Add(currentUser);
            }

            dc.SaveChanges();

            SendToChannel(new MessageResponse {
                Channel = GetChannelDetail(Constants.PUBLIC_CHANNEL_ID),
                Origin  = MessageIndividual.System,
                Target  = MessageIndividual.Channel,
                Command = MessageCommand.UserJoinedChannel,
                Message = new MessageContent {
                    Text = $"{currentUser.FullName} joined this channel."
                },
                Sender = new User {
                }
            });

            return(base.OnConnectedAsync());
        }
Example #2
0
        public static void Init(IServiceProvider serviceProvider)
        {
            ServiceProvider = serviceProvider;
            MessageDbContext dc = new MessageDbContext(new DbContextOptions <MessageDbContext>());

            // Add default public channel
            if (!dc.Channels.Any(x => x.Id == Constants.PUBLIC_CHANNEL_ID))
            {
                dc.Channels.Add(new Channel {
                    Id = Constants.PUBLIC_CHANNEL_ID, Title = "Public Channel", Limit = 512
                });
                dc.SaveChanges();
            }
        }