예제 #1
0
        /// <summary>
        /// Creates a new instance of the <see cref="Board"/> object.
        /// </summary>
        /// <param name="id">The board's ID.</param>
        /// <param name="auth">(Optional) Custom authorization parameters. When not provided,
        /// <see cref="TrelloAuthorization.Default"/> will be used.</param>
        public Board(string id, TrelloAuthorization auth = null)
        {
            Auth     = auth;
            _context = new BoardContext(id, auth);
            _context.Synchronized += Synchronized;
            Id = id;

            Actions      = new ReadOnlyActionCollection(typeof(Board), () => Id, auth);
            Cards        = new ReadOnlyCardCollection(typeof(Board), () => Id, auth);
            _description = new Field <string>(_context, nameof(Description));
            _isClosed    = new Field <bool?>(_context, nameof(IsClosed));
            _isClosed.AddRule(NullableHasValueRule <bool> .Instance);
            _isSubscribed = new Field <bool?>(_context, nameof(IsSubscribed));
            _isSubscribed.AddRule(NullableHasValueRule <bool> .Instance);
            Labels      = new BoardLabelCollection(() => Id, auth);
            Lists       = new ListCollection(() => Id, auth);
            Members     = new ReadOnlyMemberCollection(EntityRequestType.Board_Read_Members, () => Id, auth);
            Memberships = new BoardMembershipCollection(() => Id, auth);
            _name       = new Field <string>(_context, nameof(Name));
            _name.AddRule(NotNullOrWhiteSpaceRule.Instance);
            _organization       = new Field <Organization>(_context, nameof(Organization));
            PowerUps            = new ReadOnlyPowerUpCollection(() => Id, auth);
            PowerUpData         = new ReadOnlyPowerUpDataCollection(EntityRequestType.Board_Read_PowerUpData, () => Id, auth);
            Preferences         = new BoardPreferences(_context.BoardPreferencesContext);
            PersonalPreferences = new BoardPersonalPreferences(Id, auth);
            _url = new Field <string>(_context, nameof(Url));

            TrelloConfiguration.Cache.Add(this);
        }
예제 #2
0
        /// <summary>
        /// Filters a <see cref="BoardLabelCollection"/> for a given <see cref="CardFilter"/>.
        /// </summary>
        /// <param name="labels">The <see cref="BoardLabelCollection"/></param>
        /// <param name="filter">The new <see cref="CardFilter"/> by which to filter.</param>
        /// <returns>The filtered collection.</returns>
        public static BoardLabelCollection Filter(this BoardLabelCollection labels, LabelColor filter)
        {
            var collection = new BoardLabelCollection(labels, labels.Auth);

            collection.SetFilter(filter);
            return(collection);
        }
 internal BoardLabelCollection(BoardLabelCollection source, TrelloAuthorization auth)
     : this(() => source.OwnerId, auth)
 {
     if (source._additionalParameters != null)
     {
         _additionalParameters = new Dictionary <string, object>(source._additionalParameters);
     }
 }
예제 #4
0
        /// <summary>
        /// Limits a <see cref="ReadOnlyListCollection"/> to a specified count of items.
        /// </summary>
        /// <param name="labels">The <see cref="ReadOnlyListCollection"/></param>
        /// <param name="limit">The limit.</param>
        /// <returns>The limited collection.</returns>
        public static BoardLabelCollection Limit(this BoardLabelCollection labels, int limit)
        {
            if (limit <= 0)
            {
                throw new ArgumentException("limit");
            }

            return(new BoardLabelCollection(labels, labels.Auth)
            {
                Limit = limit
            });
        }