public DistributionPolicy Merge(DistributionPolicy policy)
        {
            var mergingIds = policy.ReceiverIds;
            var newIdsArr  = ReceiverIds.Union(mergingIds).ToArray();

            return(new DistributionPolicy(newIdsArr));
        }
        public void DistrubuteEvent(Event @event, DistributionPolicy distributionPolicy)
        {
            var session = _sessionProvider.GetCurrentSession();

            var eventId = (int) session.Save(@event);
            foreach (var receiverId in distributionPolicy.ReceiverIds)
            {
                var id = session.Save(new Delivery(receiverId, eventId));
            }
        }
        public void EventIsStoredSuccessfully()
        {
            var provider = new DatabaseSessionProvider();
            var repository = new EventRepository(provider);
            var eventInfo = new NewEmailConfirmedDeveloper(1);
            var @event = new Event(eventInfo);
            var receivers = new[] {30, 31, 32};
            var distributionPolicy = new DistributionPolicy(receivers);

            repository.DistrubuteEvent(@event, distributionPolicy);
            var receivedEvent = repository.GetEventsByUser(receivers[0], false).Single();

            Assert.AreEqual(@event.EventInfo, receivedEvent.EventInfo);
            Assert.AreEqual(@event.EventType, receivedEvent.EventType);
        }
 public DistributionPolicy Merge(DistributionPolicy policy)
 {
     var mergingIds = policy.ReceiverIds;
     var newIdsArr = ReceiverIds.Union(mergingIds).ToArray();
     return new DistributionPolicy(newIdsArr);
 }