diff --git a/Interfaces/IReportUI.cs b/Interfaces/IReportUI.cs index a5c1986..cfa3f12 100644 --- a/Interfaces/IReportUI.cs +++ b/Interfaces/IReportUI.cs @@ -1,7 +1,20 @@ namespace Interfaces; +/// +/// Interface for the UI component that allows users to report entities. +/// This interface defines the properties that a reporting UI should have. +/// public interface IReportUI { + /// + /// The type of the UI Component that should be used to display the reporting interface. + /// This should be passed to DynamicComponent to render the UI Component. + /// Component that implement this interface should return typeof(this) in this property. + /// Type ReportType { get; } + + /// + /// The reportable Entity that is being reported. + /// IReportable ReportableEntity { get; set; } } \ No newline at end of file diff --git a/Interfaces/IReportable.cs b/Interfaces/IReportable.cs index 870bcd2..b5bc9e2 100644 --- a/Interfaces/IReportable.cs +++ b/Interfaces/IReportable.cs @@ -1,8 +1,27 @@ namespace Interfaces; +/// +/// Interface for entities that can be reported by users. This includes things like posts, comments, and user profiles. +/// The IReportUI interface will use this interface to determine what information to display when a user reports an +/// entity, and the IReportingHandler interface will use this interface to determine how to handle the report when it is +/// submitted. +/// public interface IReportable { + /// + /// Module Name is no longer required. Use ModuleID and EntityID instead to uniquely identify the type of entity being reported. + /// + [Obsolete] public string ModuleName { get; } + + /// + /// The ID of the Module from an Entity that is beeing reported. + /// This is used to determine the type of entity being reported. + /// public int ModuleID { get; } + + /// + /// The ID of an Entity that is beeing reported. This is used to determine the exact entity being reported. + /// public int EntityID { get; } } \ No newline at end of file diff --git a/Interfaces/IReportingHandler.cs b/Interfaces/IReportingHandler.cs index 5676d85..22b4b5e 100644 --- a/Interfaces/IReportingHandler.cs +++ b/Interfaces/IReportingHandler.cs @@ -1,6 +1,19 @@ namespace Interfaces; +/// +/// Handler for processing user reports. This interface defines a method for handling reports submitted by users, +/// which includes the reportable entity and any additional notes provided by the user. Implementations of this +/// interface will determine how to process the report, such as logging it, notifying moderators, +/// or taking action against the reported entity. +/// public interface IReportingHandler { + /// + /// Report an IReportable entity with a note. Implementations of this method should handle the report appropriately, + /// such as logging it, saving it, notifying moderators and taking action against the owner of the reported entity + /// if necessary. + /// + /// The Entity - as in the Message, Note, Posting, ... - that should be reported + /// A note from the reporting user which is only visible to the admins. public void Report(IReportable reportable, string note); } \ No newline at end of file