public void Create(SPWeb web, EventsCalendarSubscriberEntity subscriber)
        {
            var list = Definition.GetList(web);
            var item = list.AddItem();

            MapEntityToItem(subscriber, item);

            item.Update();
        }
        public void Update(SPWeb web, EventsCalendarSubscriberEntity subscriber)
        {
            var item = Query(web, subscriber.Id);
            if(item == null)
                return;
            
            MapEntityToItem(subscriber, item);

            item.Update();
        }
        private void MapToEntity(EventsCalendarSubscriberEntity subscriber, string email, IEnumerable<string> targets, bool notifyOfNewEvents, SPUser author)
        {
            if (string.IsNullOrEmpty(email))
                throw new ArgumentNullException("email");

            var unknownTargets = targets.Where(item => !EventTargetAudience.All.Contains(item));
            if (unknownTargets.Any())
                throw new ArgumentOutOfRangeException("targets", unknownTargets.First());
            
            if (string.IsNullOrEmpty(subscriber.Title))
            {
                var title = string.Format("{0} subscription", author.Name);
                subscriber.Title = title;
            }

            subscriber.Email = email;
            subscriber.TargetAudience = targets;
            subscriber.NotifyOfNewEvents = notifyOfNewEvents;
        }
 private EventsCalendarSubscriberEntity MapToEntity(string email, IEnumerable<string> targets, bool notifyOfNewEvents, SPUser author)
 {
     var subscriber = new EventsCalendarSubscriberEntity();
     
     MapToEntity(subscriber, email, targets, notifyOfNewEvents, author);
     
     return subscriber;
 }
        private void Update(SPWeb web, EventsCalendarSubscriberEntity subscriber, string email, IEnumerable<string> targets, bool notifyOfNewEvents, SPUser author)
        {
            MapToEntity(subscriber, email, targets, notifyOfNewEvents, author);

            _repository.Update(web, subscriber);
        }
        private EventsCalendarSubscriberEntity MapItemToEntity(SPListItem item)
        {
            var entity = new EventsCalendarSubscriberEntity
                             {
                                 Id = item.ID,
                                 Title = item.Title,
                                 Email = item[EventsCalendarSubscriberFields.Email] as string,
                                 NotifyOfNewEvents = (bool)item[EventsCalendarSubscriberFields.NotifyOfNewEvents],
                                 Author = ListItemHelper.GetSPUser(item, EventsCalendarSubscriberFields.Author),                                 
                                 TargetAudience = MapMultiChoiceValueToCollection(item[EventsCalendarFields.TargetAudience].ToString())                                 
                             };

            return entity;
        }
 private void MapEntityToItem(EventsCalendarSubscriberEntity entity, SPListItem item)
 {
     item[ItemFields.Title] = entity.Title;
     item[EventsCalendarSubscriberFields.Email] = entity.Email;
     item[EventsCalendarSubscriberFields.NotifyOfNewEvents] = entity.NotifyOfNewEvents;
     item[EventsCalendarFields.TargetAudience] = MapCollectionToMultiChoiceValue(entity.TargetAudience);
 }