using Core.Entities;
namespace WebApp.Services;
public interface INotesService
{
///
/// Gets all notes, optionally including deleted notes.
///
/// If true, includes soft-deleted notes. Defaults to false.
Task> GetNotesAsync(bool includeDeleted = false);
///
/// Gets a single note by ID.
///
Task GetNoteAsync(int id);
///
/// Gets a page-specific note by page identifier.
///
/// The page identifier (e.g., "Teams", "Registration")
/// The note with title "@{pageIdentifier}" or null if not found
Task GetPageNoteAsync(string pageIdentifier);
///
/// Gets all history entries for a note.
///
Task> GetNoteHistoryAsync(int noteId);
///
/// Creates a new note and initial history entry.
///
Task CreateNoteAsync(Note note);
///
/// Updates an existing note and creates a history entry.
///
Task UpdateNoteAsync(Note note);
///
/// Deletes a note and creates a deletion history entry.
///
Task DeleteNoteAsync(int id);
///
/// Gets up to 3 pinned notes, excluding page notes and deleted notes, ordered by most recently updated.
///
Task> GetPinnedNotesAsync();
///
/// Toggles the pin status of a note, enforcing the 3-note limit.
///
Task TogglePinNoteAsync(int noteId);
///
/// Gets all soft-deleted notes.
///
Task> GetDeletedNotesAsync();
///
/// Restores a soft-deleted note.
///
Task RestoreNoteAsync(int noteId);
}