Example #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);
        }
 internal ReadOnlyPowerUpCollection(ReadOnlyPowerUpCollection source, TrelloAuthorization auth)
     : this(() => source.OwnerId, auth)
 {
 }