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()); }
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(); } }