public async Task <bool> Subscribe(int id, string tag)
        {
            var found = await Clients.Where(c => c.ClientId == id).FirstOrDefaultAsync();

            if (found != null)
            {
                var tg = await Tags.Where(t => t.TagName == tag).FirstOrDefaultAsync();

                if (tg == null)
                {
                    Tag t = new Tag()
                    {
                        TagName = tag
                    };
                    Tags.Add(t);
                    await SaveChangesAsync();

                    ClientToTag ct = new ClientToTag()
                    {
                        TagFk = t.TagId, ClientFk = id
                    };
                    ClientsToTags.Add(ct);
                    await SaveChangesAsync();
                }
                else
                {
                    if (await ClientsToTags
                        .Where(ct => ct.TagFk == tg.TagId && ct.ClientFk == id)
                        .CountAsync() == 0)
                    {
                        ClientToTag ct = new ClientToTag()
                        {
                            TagFk = tg.TagId, ClientFk = id
                        };
                        ClientsToTags.Add(ct);
                        await SaveChangesAsync();
                    }
                }
                return(true);
            }

            return(false);
        }
        public async Task <bool> Unsubscribe(int id, string tag)
        {
            var found = await Clients.Where(c => c.ClientId == id).FirstOrDefaultAsync();

            if (found != null)
            {
                var tg = await ClientsToTags.Where(t => t.ClientFk == id && t.Tag.TagName == tag).FirstOrDefaultAsync();

                if (tg != null)
                {
                    ClientsToTags.Remove(tg);
                    await SaveChangesAsync();
                }

                return(true);
            }

            return(false);
        }