public async Task Unsubscribe(Guid userId, Guid eventId) { UserEntity user = await _userRepository.GetByIdAsync(userId); EventSubscriberEntity eventSubscriber = user.EventsSubscribed.FirstOrDefault(e => e.EventId == eventId && e.SubscriberId == userId); if (eventSubscriber is null) { throw new MessageException($"User {user.Name} is not subscribed on this event"); } user.EventsSubscribed.Remove(eventSubscriber); await _userRepository.CommitAsync(); }
public async Task Subscribe(Guid userId, Guid eventId) { UserEntity user = await _userRepository.GetByIdAsync(userId); EventEntity @event = await _eventRepository.GetByIdAsync(eventId); EventSubscriberEntity eventSubscriber = new EventSubscriberEntity { Event = @event, Subscriber = user }; user.EventsSubscribed.Add(eventSubscriber); try { await _userRepository.CommitAsync(); } catch (Exception e) { throw new MessageException($"User {user.Name} is already subscribed on this event", e); } }