Try your search with a different keyword or use * as a wildcard.
using Nop.Core;
using Nop.Core.Domain.Customers;
using Nop.Core.Domain.Forums;
namespace Nop.Services.Forums;
/// 
/// Forum service interface
///  
public partial interface IForumService
{
    /// 
    /// Deletes a forum group
    ///  
    /// Forum group
    /// A task that represents the asynchronous operation 
    Task DeleteForumGroupAsync(ForumGroup forumGroup);
    /// 
    /// Gets a forum group
    ///  
    /// The forum group identifier
    /// 
    /// A task that represents the asynchronous operation
    /// The task result contains the forum group
    ///  
    Task GetForumGroupByIdAsync(int forumGroupId);
    /// 
    /// Gets all forum groups
    ///  
    /// 
    /// A task that represents the asynchronous operation
    /// The task result contains the forum groups
    ///  
    Task> GetAllForumGroupsAsync();
    /// 
    /// Inserts a forum group
    ///  
    /// Forum group
    /// A task that represents the asynchronous operation 
    Task InsertForumGroupAsync(ForumGroup forumGroup);
    /// 
    /// Updates the forum group
    ///  
    /// Forum group
    /// A task that represents the asynchronous operation 
    Task UpdateForumGroupAsync(ForumGroup forumGroup);
    /// 
    /// Deletes a forum
    ///  
    /// Forum
    /// A task that represents the asynchronous operation 
    Task DeleteForumAsync(Forum forum);
    /// 
    /// Gets a forum
    ///  
    /// The forum identifier
    /// 
    /// A task that represents the asynchronous operation
    /// The task result contains the forum
    ///  
    Task GetForumByIdAsync(int forumId);
    /// 
    /// Gets forums by group identifier
    ///  
    /// The forum group identifier
    /// 
    /// A task that represents the asynchronous operation
    /// The task result contains the forums
    ///  
    Task> GetAllForumsByGroupIdAsync(int forumGroupId);
    /// 
    /// Inserts a forum
    ///  
    /// Forum
    /// A task that represents the asynchronous operation 
    Task InsertForumAsync(Forum forum);
    /// 
    /// Updates the forum
    ///  
    /// Forum
    /// A task that represents the asynchronous operation 
    Task UpdateForumAsync(Forum forum);
    /// 
    /// Deletes a forum topic
    ///  
    /// Forum topic
    /// A task that represents the asynchronous operation 
    Task DeleteTopicAsync(ForumTopic forumTopic);
    /// 
    /// Gets a forum topic
    ///  
    /// The forum topic identifier
    /// 
    /// A task that represents the asynchronous operation
    /// The task result contains the forum Topic
    ///  
    Task GetTopicByIdAsync(int forumTopicId);
    /// 
    /// Gets all forum topics
    ///  
    /// The forum identifier
    /// The customer identifier
    /// Keywords
    /// Search type
    /// Limit by the last number days; 0 to load all topics
    /// Page index
    /// Page size
    /// 
    /// A task that represents the asynchronous operation
    /// The task result contains the forum Topics
    ///  
    Task> GetAllTopicsAsync(int forumId = 0,
        int customerId = 0, string keywords = "", ForumSearchType searchType = ForumSearchType.All,
        int limitDays = 0, int pageIndex = 0, int pageSize = int.MaxValue);
    /// 
    /// Gets active forum topics
    ///  
    /// The forum identifier
    /// Page index
    /// Page size
    /// 
    /// A task that represents the asynchronous operation
    /// The task result contains the forum Topics
    ///  
    Task> GetActiveTopicsAsync(int forumId = 0,
        int pageIndex = 0, int pageSize = int.MaxValue);
    /// 
    /// Inserts a forum topic
    ///  
    /// Forum topic
    /// A value indicating whether to send notifications to subscribed customers
    /// A task that represents the asynchronous operation 
    Task InsertTopicAsync(ForumTopic forumTopic, bool sendNotifications);
    /// 
    /// Updates the forum topic
    ///  
    /// Forum topic
    /// A task that represents the asynchronous operation 
    Task UpdateTopicAsync(ForumTopic forumTopic);
    /// 
    /// Moves the forum topic
    ///  
    /// The forum topic identifier
    /// New forum identifier
    /// 
    /// A task that represents the asynchronous operation
    /// The task result contains the moved forum topic
    ///  
    Task MoveTopicAsync(int forumTopicId, int newForumId);
    /// 
    /// Deletes a forum post
    ///  
    /// Forum post
    /// A task that represents the asynchronous operation 
    Task DeletePostAsync(ForumPost forumPost);
    /// 
    /// Gets a forum post
    ///  
    /// The forum post identifier
    /// 
    /// A task that represents the asynchronous operation
    /// The task result contains the forum Post
    ///  
    Task GetPostByIdAsync(int forumPostId);
    /// 
    /// Gets all forum posts
    ///  
    /// The forum topic identifier
    /// The customer identifier
    /// Keywords
    /// Page index
    /// Page size
    /// 
    /// A task that represents the asynchronous operation
    /// The task result contains the posts
    ///  
    Task> GetAllPostsAsync(int forumTopicId = 0,
        int customerId = 0, string keywords = "",
        int pageIndex = 0, int pageSize = int.MaxValue);
    /// 
    /// Gets all forum posts
    ///  
    /// The forum topic identifier
    /// The customer identifier
    /// Keywords
    /// Sort order
    /// Page index
    /// Page size
    /// 
    /// A task that represents the asynchronous operation
    /// The task result contains the forum Posts
    ///  
    Task> GetAllPostsAsync(int forumTopicId = 0, int customerId = 0,
        string keywords = "", bool ascSort = false,
        int pageIndex = 0, int pageSize = int.MaxValue);
    /// 
    /// Inserts a forum post
    ///  
    /// The forum post
    /// A value indicating whether to send notifications to subscribed customers
    /// A task that represents the asynchronous operation 
    Task InsertPostAsync(ForumPost forumPost, bool sendNotifications);
    /// 
    /// Updates the forum post
    ///  
    /// Forum post
    /// A task that represents the asynchronous operation 
    Task UpdatePostAsync(ForumPost forumPost);
    /// 
    /// Deletes a private message
    ///  
    /// Private message
    /// A task that represents the asynchronous operation 
    Task DeletePrivateMessageAsync(PrivateMessage privateMessage);
    /// 
    /// Gets a private message
    ///  
    /// The private message identifier
    /// 
    /// A task that represents the asynchronous operation
    /// The task result contains the private message
    ///  
    Task GetPrivateMessageByIdAsync(int privateMessageId);
    /// 
    /// Gets private messages
    ///  
    /// The store identifier; pass 0 to load all messages
    /// The customer identifier who sent the message
    /// The customer identifier who should receive the message
    /// A value indicating whether loaded messages are read. false - to load not read messages only, 1 to load read messages only, null to load all messages
    /// A value indicating whether loaded messages are deleted by author. false - messages are not deleted by author, null to load all messages
    /// A value indicating whether loaded messages are deleted by recipient. false - messages are not deleted by recipient, null to load all messages
    /// Keywords
    /// Page index
    /// Page size
    /// 
    /// A task that represents the asynchronous operation
    /// The task result contains the private messages
    ///  
    Task> GetAllPrivateMessagesAsync(int storeId, int fromCustomerId,
        int toCustomerId, bool? isRead, bool? isDeletedByAuthor, bool? isDeletedByRecipient,
        string keywords, int pageIndex = 0, int pageSize = int.MaxValue);
    /// 
    /// Inserts a private message
    ///  
    /// Private message
    /// A task that represents the asynchronous operation 
    Task InsertPrivateMessageAsync(PrivateMessage privateMessage);
    /// 
    /// Updates the private message
    ///  
    /// Private message
    /// A task that represents the asynchronous operation 
    Task UpdatePrivateMessageAsync(PrivateMessage privateMessage);
    /// 
    /// Deletes a forum subscription
    ///  
    /// Forum subscription
    /// A task that represents the asynchronous operation 
    Task DeleteSubscriptionAsync(ForumSubscription forumSubscription);
    /// 
    /// Gets a forum subscription
    ///  
    /// The forum subscription identifier
    /// 
    /// A task that represents the asynchronous operation
    /// The task result contains the forum subscription
    ///  
    Task GetSubscriptionByIdAsync(int forumSubscriptionId);
    /// 
    /// Gets forum subscriptions
    ///  
    /// The customer identifier
    /// The forum identifier
    /// The topic identifier
    /// Page index
    /// Page size
    /// 
    /// A task that represents the asynchronous operation
    /// The task result contains the forum subscriptions
    ///  
    Task> GetAllSubscriptionsAsync(int customerId = 0, int forumId = 0,
        int topicId = 0, int pageIndex = 0, int pageSize = int.MaxValue);
    /// 
    /// Inserts a forum subscription
    ///  
    /// Forum subscription
    /// A task that represents the asynchronous operation 
    Task InsertSubscriptionAsync(ForumSubscription forumSubscription);
    /// 
    /// Check whether customer is allowed to create new topics
    ///  
    /// Customer
    /// Forum
    /// 
    /// A task that represents the asynchronous operation
    /// The task result contains true if allowed, otherwise false
    ///  
    Task IsCustomerAllowedToCreateTopicAsync(Customer customer, Forum forum);
    /// 
    /// Check whether customer is allowed to edit topic
    ///  
    /// Customer
    /// Topic
    /// 
    /// A task that represents the asynchronous operation
    /// The task result contains true if allowed, otherwise false
    ///  
    Task IsCustomerAllowedToEditTopicAsync(Customer customer, ForumTopic topic);
    /// 
    /// Check whether customer is allowed to move topic
    ///  
    /// Customer
    /// Topic
    /// 
    /// A task that represents the asynchronous operation
    /// The task result contains true if allowed, otherwise false
    ///  
    Task IsCustomerAllowedToMoveTopicAsync(Customer customer, ForumTopic topic);
    /// 
    /// Check whether customer is allowed to delete topic
    ///  
    /// Customer
    /// Topic
    /// 
    /// A task that represents the asynchronous operation
    /// The task result contains true if allowed, otherwise false
    ///  
    Task IsCustomerAllowedToDeleteTopicAsync(Customer customer, ForumTopic topic);
    /// 
    /// Check whether customer is allowed to create new post
    ///  
    /// Customer
    /// Topic
    /// 
    /// A task that represents the asynchronous operation
    /// The task result contains true if allowed, otherwise false
    ///  
    Task IsCustomerAllowedToCreatePostAsync(Customer customer, ForumTopic topic);
    /// 
    /// Check whether customer is allowed to edit post
    ///  
    /// Customer
    /// Topic
    /// 
    /// A task that represents the asynchronous operation
    /// The task result contains true if allowed, otherwise false
    ///  
    Task IsCustomerAllowedToEditPostAsync(Customer customer, ForumPost post);
    /// 
    /// Check whether customer is allowed to delete post
    ///  
    /// Customer
    /// Topic
    /// 
    /// A task that represents the asynchronous operation
    /// The task result contains true if allowed, otherwise false
    ///  
    Task IsCustomerAllowedToDeletePostAsync(Customer customer, ForumPost post);
    /// 
    /// Check whether customer is allowed to set topic priority
    ///  
    /// Customer
    /// 
    /// A task that represents the asynchronous operation
    /// The task result contains true if allowed, otherwise false
    ///  
    Task IsCustomerAllowedToSetTopicPriorityAsync(Customer customer);
    /// 
    /// Check whether customer is allowed to watch topics
    ///  
    /// Customer
    /// 
    /// A task that represents the asynchronous operation
    /// The task result contains true if allowed, otherwise false
    ///  
    Task IsCustomerAllowedToSubscribeAsync(Customer customer);
    /// 
    /// Calculates topic page index by post identifier
    ///  
    /// Topic identifier
    /// Page size
    /// Post identifier
    /// 
    /// A task that represents the asynchronous operation
    /// The task result contains the page index
    ///  
    Task CalculateTopicPageIndexAsync(int forumTopicId, int pageSize, int postId);
    /// 
    /// Get a post vote 
    ///  
    /// Post identifier
    /// Customer
    /// 
    /// A task that represents the asynchronous operation
    /// The task result contains the post vote
    ///  
    Task GetPostVoteAsync(int postId, Customer customer);
    /// 
    /// Get post vote made since the parameter date
    ///  
    /// Customer
    /// Date
    /// 
    /// A task that represents the asynchronous operation
    /// The task result contains the post votes count
    ///  
    Task GetNumberOfPostVotesAsync(Customer customer, DateTime createdFromUtc);
    /// 
    /// Insert a post vote
    ///  
    /// Post vote
    /// A task that represents the asynchronous operation 
    Task InsertPostVoteAsync(ForumPostVote postVote);
    /// 
    /// Delete a post vote
    ///  
    /// Post vote
    /// A task that represents the asynchronous operation 
    Task DeletePostVoteAsync(ForumPostVote postVote);
    /// 
    /// Formats the forum post text
    ///  
    /// Forum post
    /// Formatted text 
    string FormatPostText(ForumPost forumPost);
    /// 
    /// Strips the topic subject
    ///  
    /// Forum topic
    /// Formatted subject 
    string StripTopicSubject(ForumTopic forumTopic);
    /// 
    /// Formats the forum signature text
    ///  
    /// Text
    /// Formatted text 
    string FormatForumSignatureText(string text);
    /// 
    /// Formats the private message text
    ///  
    /// Private message
    /// Formatted text 
    string FormatPrivateMessageText(PrivateMessage pm);
    /// 
    /// Get first post
    ///  
    /// Forum topic
    /// 
    /// A task that represents the asynchronous operation
    /// The task result contains the forum post
    ///  
    Task GetFirstPostAsync(ForumTopic forumTopic);
    /// 
    /// Gets ForumGroup SE (search engine) name
    ///  
    /// ForumGroup
    /// 
    /// A task that represents the asynchronous operation
    /// The task result contains the forumGroup SE (search engine) name
    ///  
    Task GetForumGroupSeNameAsync(ForumGroup forumGroup);
    /// 
    /// Gets Forum SE (search engine) name
    ///  
    /// Forum
    /// 
    /// A task that represents the asynchronous operation
    /// The task result contains the forum SE (search engine) name
    ///  
    Task GetForumSeNameAsync(Forum forum);
    /// 
    /// Gets ForumTopic SE (search engine) name
    ///  
    /// ForumTopic
    /// 
    /// A task that represents the asynchronous operation
    /// The task result contains the forumTopic SE (search engine) name
    ///  
    Task GetTopicSeNameAsync(ForumTopic forumTopic);
}