package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces;

import org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType;

import java.util.List;

public interface MemberOfParliament extends Individual {
    /**
     * Returns the id of the member of parliament.
     *
     * @return the id of the member of parliament
     */
    int getId();

    /**
     * Returns the type of the MongoDB entry.
     *
     * @return The type of the MongoDB entry.
     */
    MongoDBEntryType getType();

    /**
     * Returns the party of the member of parliament.
     *
     * @return the party of the member of parliament
     */
    String getParty();

    /**
     * Returns the legislative periods of the member of parliament.
     *
     * @return the legislative periods of the member of parliament
     */
    List<LegislativePeriod> getLegislativePeriods();

    /**
     * Returns the first legislative period id of the member of parliament.
     *
     * @return the first legislative period id of the member of parliament
     */
    int getFirstLegislativePeriodId();

    /**
     * Returns the last legislative period id of the member of parliament.
     *
     * @return the last legislative period id of the member of parliament
     */
    int getLastLegislativePeriodId();

    /**
     * Returns the base64 encoded string of the photo of the member of parliament.
     *
     * @return the base64 encoded string of the photo of the member of parliament
     */
    String getPhoto();

    /**
     * Returns whether the member of parliament is a current member.
     *
     * @return whether the member of parliament is a current member
     */
    boolean isCurrentMember();

    /**
     * Updates the party of the member of parliament.
     *
     * @param party the new party of the member of parliament
     */
    void updateParty(String party);

    /**
     * Returns the HTML representation of the agenda item.
     *
     * @return The HTML representation of the agenda item.
     */
    String toHTML();
}
