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