/// <summary> /// Deletes the specified discussion reference from the current person. /// </summary> /// <param name="reference">The discussion reference to delete.</param> /// <param name="options">The options to apply before executing the REST API call.</param> /// <returns> /// A <see cref="FamilyTreePersonState"/> instance containing the REST API response. /// </returns> /// <exception cref="GedcomxApplicationException">Discussion reference cannot be deleted: missing link.</exception> public FamilyTreePersonState DeleteDiscussionReference(DiscussionReference reference, params IStateTransitionOption[] options) { Link link = reference.GetLink(Rel.DISCUSSION_REFERENCE); link = link == null ? reference.GetLink(Rel.SELF) : link; if (link == null || link.Href == null) { throw new GedcomxApplicationException("Discussion reference cannot be deleted: missing link."); } IRestRequest request = RequestUtil.ApplyFamilySearchConneg(CreateAuthenticatedGedcomxRequest()).Build(link.Href, Method.DELETE); return (FamilyTreePersonState)((FamilyTreeStateFactory)this.stateFactory).NewPersonStateInt(request, Invoke(request, options), this.Client, this.CurrentAccessToken); }
/// <summary> /// Updates the specified discussion reference for the current person. /// </summary> /// <param name="reference">The discussion reference to update.</param> /// <param name="options">The options to apply before executing the REST API call.</param> /// <returns> /// A <see cref="FamilyTreePersonState"/> instance containing the REST API response. /// </returns> public FamilyTreePersonState UpdateDiscussionReference(DiscussionReference reference, params IStateTransitionOption[] options) { return UpdateDiscussionReference(new DiscussionReference[] { reference }, options); }
/// <summary> /// Update the discussion references for the current person. /// </summary> /// <param name="refs">The discussion references to update.</param> /// <param name="options">The options to apply before executing the REST API call.</param> /// <returns> /// A <see cref="FamilyTreePersonState"/> instance containing the REST API response. /// </returns> public FamilyTreePersonState UpdateDiscussionReference(DiscussionReference[] refs, params IStateTransitionOption[] options) { Person person = CreateEmptySelf(); foreach (DiscussionReference @ref in refs) { person.AddExtensionElement(@ref, "discussion-references", true); } return UpdateDiscussionReference(person, options); }
/// <summary> /// Adds a discussion reference to the current person. /// </summary> /// <param name="discussion">The discussion state with a discussion reference to add.</param> /// <param name="options">The options to apply before executing the REST API call.</param> /// <returns> /// A <see cref="FamilyTreePersonState"/> instance containing the REST API response. /// </returns> public FamilyTreePersonState AddDiscussionReference(DiscussionState discussion, params IStateTransitionOption[] options) { DiscussionReference reference = new DiscussionReference(); reference.Resource = discussion.GetSelfUri(); return AddDiscussionReference(reference, options); }