diff --git a/Oqtane.Shared/Models/ConnectionStringField.cs b/Oqtane.Shared/Models/ConnectionStringField.cs index f3f216a8..585c3b88 100644 --- a/Oqtane.Shared/Models/ConnectionStringField.cs +++ b/Oqtane.Shared/Models/ConnectionStringField.cs @@ -1,13 +1,28 @@ namespace Oqtane.Models { + /// + /// Helper class for input fields in the setup of the SQL connection + /// public class ConnectionStringField { + /// + /// Simple to understand field name / label + /// public string FriendlyName { get; set; } + /// + /// Instructions / help for the user + /// public string HelpText { get; set; } + /// + /// Property / Setting name which will be filled in by the user. Typically something like `Server`, `Port` etc. + /// public string Name { get; set; } + /// + /// Initial value used in the UI and probably later also the user input that was given. + /// public string Value { get; set; } } } diff --git a/Oqtane.Shared/Models/Culture.cs b/Oqtane.Shared/Models/Culture.cs index d426410d..2152c5da 100644 --- a/Oqtane.Shared/Models/Culture.cs +++ b/Oqtane.Shared/Models/Culture.cs @@ -1,11 +1,26 @@ namespace Oqtane.Models { + /// + /// Culture information describing a Culture + /// public class Culture { + /// + /// Short code like `en` or `en-US` + /// public string Name { get; set; } + /// + /// Nice name for the user, like `English (United States)` + /// public string DisplayName { get; set; } + /// + /// Information if this is the default culture. + /// + /// + /// Not sure if this is actually valid, as ATM there is no setting to configure a _default_ culture + /// public bool IsDefault { get; set; } } } diff --git a/Oqtane.Shared/Models/Database.cs b/Oqtane.Shared/Models/Database.cs index 0ffb0ae5..ebce1d34 100644 --- a/Oqtane.Shared/Models/Database.cs +++ b/Oqtane.Shared/Models/Database.cs @@ -1,15 +1,33 @@ namespace Oqtane.Models { + /// + /// Information about a Database used in the current Oqtane installation + /// public class Database { + /// + /// Friendly name for the Admin to identify the DB + /// public string FriendlyName { get; set; } + /// + /// Name of the Database + /// public string Name { get; set; } + /// + /// Namespace & name of the UI control to configure this database, like `Oqtane.Installer.Controls.SqlServerConfig, Oqtane.Client` + /// public string ControlType { get; set; } + /// + /// Type of DB using the full namespace, like `Oqtane.Database.SqlServer.SqlServerDatabase, Oqtane.Database.SqlServer` + /// public string DBType { get; set; } + /// + /// Software package responsible for using this DB - like `Oqtane.Database.MySQL` + /// public string Package { get; set; } } } diff --git a/Oqtane.Shared/Models/Installation.cs b/Oqtane.Shared/Models/Installation.cs index 4dc25840..efa0db31 100644 --- a/Oqtane.Shared/Models/Installation.cs +++ b/Oqtane.Shared/Models/Installation.cs @@ -1,8 +1,20 @@ -namespace Oqtane.Models +namespace Oqtane.Models { + /// + /// Internal message used internally during installation. + /// + /// Each part of the installation will return the status / message when installing. + /// public class Installation { + /// + /// Status if everything worked. + /// public bool Success { get; set; } + + /// + /// Message or error in case something failed. + /// public string Message { get; set; } } } diff --git a/Oqtane.Shared/Models/Job.cs b/Oqtane.Shared/Models/Job.cs index 2d1f40fc..261f5742 100644 --- a/Oqtane.Shared/Models/Job.cs +++ b/Oqtane.Shared/Models/Job.cs @@ -1,25 +1,88 @@ -using System; +using System; namespace Oqtane.Models { + /// + /// Definition of a Job / Task which is run on the server. + /// When Jobs run, they create a + /// public class Job : IAuditable { + /// + /// Internal ID + /// public int JobId { get; set; } + + /// + /// Name for simple identification + /// public string Name { get; set; } + + /// + /// What kind of Job this is + /// public string JobType { get; set; } + + /// + /// Unit used in how often the job should run - expects a character like `m` (minutes), `H` (hours) etc. + /// public string Frequency { get; set; } + + /// + /// How often the Job should run - see also + /// public int Interval { get; set; } + + /// + /// When the Job is to be run the first time. See also . + /// public DateTime? StartDate { get; set; } + + + /// + /// When the job is to be run the last time. See also . + /// public DateTime? EndDate { get; set; } + + /// + /// Determines if the Job is activated / enabled. + /// public bool IsEnabled { get; set; } + + /// + /// If the Job has ever started running + /// public bool IsStarted { get; set; } + + /// + /// If the Job is executing right now. + /// public bool IsExecuting { get; set; } + + /// + /// When the Job will run again next time. + /// public DateTime? NextExecution { get; set; } + + /// + /// Todo: todoc - unsure what this does + /// public int RetentionHistory { get; set; } + #region IAuditable Properties + + /// public string CreatedBy { get; set; } + + /// public DateTime CreatedOn { get; set; } + + /// public string ModifiedBy { get; set; } + + /// public DateTime ModifiedOn { get; set; } + + #endregion } } diff --git a/Oqtane.Shared/Models/JobLog.cs b/Oqtane.Shared/Models/JobLog.cs index 161d5b54..33ebf49f 100644 --- a/Oqtane.Shared/Models/JobLog.cs +++ b/Oqtane.Shared/Models/JobLog.cs @@ -1,16 +1,48 @@ -using System; +using System; namespace Oqtane.Models { + /// + /// Log / Journal of s executed. + /// public class JobLog { + /// + /// Internal ID + /// public int JobLogId { get; set; } + + /// + /// Reference to the which was run + /// public int JobId { get; set; } + + /// + /// Timestamp when the started. + /// public DateTime StartDate { get; set; } + + /// + /// Timestamp when the ended. + /// public DateTime? FinishDate { get; set; } + + /// + /// Success information. + /// public bool? Succeeded { get; set; } + + /// + /// Additional protocol information that was left after the ran. + /// public string Notes { get; set; } + /// + /// Reference to the Job. + /// + /// + /// It's not clear if this is always populated. + /// public Job Job { get; set; } } } diff --git a/Oqtane.Shared/Models/Language.cs b/Oqtane.Shared/Models/Language.cs index ccac5210..ef81a78d 100644 --- a/Oqtane.Shared/Models/Language.cs +++ b/Oqtane.Shared/Models/Language.cs @@ -20,12 +20,12 @@ namespace Oqtane.Models public int? SiteId { get; set; } /// - /// Language Name + /// Language Name - corresponds to , _not_ /// public string Name { get; set; } /// - /// Language / Culture code, like 'en-US' + /// Language / Culture code, like 'en-US' - corresponds to /// public string Code { get; set; } diff --git a/Oqtane.Shared/Models/ModuleContent.cs b/Oqtane.Shared/Models/ModuleContent.cs index 124f73f3..c1f5abf7 100644 --- a/Oqtane.Shared/Models/ModuleContent.cs +++ b/Oqtane.Shared/Models/ModuleContent.cs @@ -1,9 +1,23 @@ -namespace Oqtane.Models +namespace Oqtane.Models { + /// + /// Generic Model for Module-Contents to enable Import/Export of the Module-Data + /// public class ModuleContent { + /// + /// Reference to a for which this content is relevant. + /// public string ModuleDefinitionName { get; set; } + + /// + /// Version of the which is used here. _It's not the version of the Content_ + /// public string Version { get; set; } + + /// + /// Serialized Content of the module for import/export. + /// public string Content { get; set; } } } diff --git a/Oqtane.Shared/Models/ModuleDefinition.cs b/Oqtane.Shared/Models/ModuleDefinition.cs index 688d1f15..56afd3bf 100644 --- a/Oqtane.Shared/Models/ModuleDefinition.cs +++ b/Oqtane.Shared/Models/ModuleDefinition.cs @@ -52,7 +52,15 @@ namespace Oqtane.Models /// Module description for admin dialogs. /// public string Description { get; set; } + + /// + /// Categories this Module will be shown in (in the admin-dialogs) + /// public string Categories { get; set; } + + /// + /// Version information of this Module based on the DLL / NuGet package. + /// public string Version { get; set; } #region IAuditable Properties diff --git a/Oqtane.Shared/Models/Notification.cs b/Oqtane.Shared/Models/Notification.cs index 6795c954..64e0fbc7 100644 --- a/Oqtane.Shared/Models/Notification.cs +++ b/Oqtane.Shared/Models/Notification.cs @@ -3,25 +3,95 @@ using System.ComponentModel.DataAnnotations.Schema; namespace Oqtane.Models { + /// + /// Notification for a User - usually meant to be sent as an E-Mail. + /// public class Notification : IDeletable { + /// + /// Internal ID + /// public int NotificationId { get; set; } + + /// + /// Reference to the on which the Notification was created. + /// public int SiteId { get; set; } + + /// + /// Creator ID + /// public int? FromUserId { get; set; } + + /// + /// Nice Name of the Creator + /// public string FromDisplayName { get; set; } + + /// + /// Creator E-Mail + /// public string FromEmail { get; set; } + + /// + /// Recipient ID - nullable, as Recipient could be someone that's not a user. + /// public int? ToUserId { get; set; } + + /// + /// Recipient Nice-Name. + /// public string ToDisplayName { get; set; } + + /// + /// Recipient Mail + /// public string ToEmail { get; set; } + + /// + /// Reference to an optional Parent - in case it's a kind of thread with reply-messages. + /// public int? ParentId { get; set; } + + /// + /// Message Subject. + /// public string Subject { get; set; } + + /// + /// Body / Contents of this Notification + /// public string Body { get; set; } + + /// + /// When the notification was created. + /// public DateTime CreatedOn { get; set; } + + /// + /// If it has been delivered. See also . + /// public bool IsDelivered { get; set; } + + /// + /// When the Notification was sent/delivered. + /// public DateTime? DeliveredOn { get; set; } + + #region IDeletable + + /// public string DeletedBy { get; set; } + /// public DateTime? DeletedOn { get; set; } + /// public bool IsDeleted { get; set; } + + #endregion + + /// + /// When the Notification _should_ be sent. See also + /// public DateTime? SendOn { get; set; } public Notification() {} diff --git a/Oqtane.Shared/Models/Package.cs b/Oqtane.Shared/Models/Package.cs index b2e0b214..8d78bdc7 100644 --- a/Oqtane.Shared/Models/Package.cs +++ b/Oqtane.Shared/Models/Package.cs @@ -1,12 +1,39 @@ -namespace Oqtane.Models +namespace Oqtane.Models { + /// + /// A software Package which is like an Oqtane Plugin / Extension. + /// This is used for creating lists from NuGet to offer for installation. + /// public class Package { + /// + /// ID of the Package. Usually constructed of the Namespace. + /// public string PackageId { get; set; } + + /// + /// Name of the package - may contains part or the entire Namespace. + /// public string Name { get; set; } + + /// + /// Nice description of the Package. + /// public string Description { get; set; } + + /// + /// Owner / Creator of the package - usually retrieved from NuGet. + /// public string Owner { get; set; } + + /// + /// Version as defined in the NuGet package. + /// public string Version { get; set; } + + /// + /// Download count on NuGet to show how popular the package is. + /// public long Downloads { get; set; } } } diff --git a/Oqtane.Shared/Models/Permission.cs b/Oqtane.Shared/Models/Permission.cs index aff910f4..da0ec593 100644 --- a/Oqtane.Shared/Models/Permission.cs +++ b/Oqtane.Shared/Models/Permission.cs @@ -1,23 +1,79 @@ -using System; +using System; namespace Oqtane.Models { + /// + /// Permission information for anything in Oqtane. + /// Things in Oqtane are identified as Entities, so anything that can be identified can be described here. + /// public class Permission : IAuditable { + /// + /// Internal ID storing this information. + /// public int PermissionId { get; set; } + + /// + /// Reference to the which contains both the target Entity and permissions. + /// public int SiteId { get; set; } + + /// + /// Name of the Entity these permissions apply to. + /// public string EntityName { get; set; } + + /// + /// ID of the Entity these permissions apply to. + /// public int EntityId { get; set; } + + /// + /// What this permission is called. + /// TODO: todoc - must clarify what exactly this means, I assume any module can give it's own names for Permissions + /// public string PermissionName { get; set; } + + /// + /// this permission applies to. So if all users in the Role _Customers_ have this permission, then it would reference that Role. + /// If null, then the permission doesn't target a role but probably a (see ). + /// public int? RoleId { get; set; } + + + /// + /// this permission applies to. + /// If null, then the permission doesn't target a User but probably a (see ). + /// public int? UserId { get; set; } + + /// + /// Determines if Authorization is sufficient to receive this permission. + /// public bool IsAuthorized { get; set; } + #region IAuditable Properties + + /// public string CreatedBy { get; set; } + + /// public DateTime CreatedOn { get; set; } + + /// public string ModifiedBy { get; set; } + + /// public DateTime ModifiedOn { get; set; } + #endregion + + /// + /// Reference to the based on the - can be nullable. + /// + /// + /// It's not certain if this will always be populated. TODO: todoc/verify + /// public Role Role { get; set; } public Permission() diff --git a/Oqtane.Shared/Models/PermissionString.cs b/Oqtane.Shared/Models/PermissionString.cs index 1a68e2ef..cdee673b 100644 --- a/Oqtane.Shared/Models/PermissionString.cs +++ b/Oqtane.Shared/Models/PermissionString.cs @@ -1,8 +1,18 @@ -namespace Oqtane.Models +namespace Oqtane.Models { + /// + /// Use this to define a which addresses a set of multiple permissions. + /// public class PermissionString { + /// + /// A term describing a set of permissions + /// public string PermissionName { get; set; } + + /// + /// The permissions addressed with this name + /// public string Permissions { get; set; } } } diff --git a/Oqtane.Shared/Models/Profile.cs b/Oqtane.Shared/Models/Profile.cs index dc4f6266..a20cbc9f 100644 --- a/Oqtane.Shared/Models/Profile.cs +++ b/Oqtane.Shared/Models/Profile.cs @@ -2,24 +2,87 @@ using System; namespace Oqtane.Models { + /// + /// A single Profile Property information of a . + /// So a user will have many of these to fully describe his Profile. + /// public class Profile : IAuditable { + /// + /// Internal ID + /// public int ProfileId { get; set; } + + /// + /// Reference to the . + /// It's nullable, probably because certain users like Super-Users don't specifically belong to any site. + /// public int? SiteId { get; set; } + + /// + /// Name of the Profile-Property. _NOT_ the User-Name. + /// public string Name { get; set; } + + /// + /// Title (label) of the Profile Property. + /// public string Title { get; set; } + + /// + /// Description of the Property for the UI. + /// public string Description { get; set; } + + /// + /// Category of this Profile-Property for grouping etc. + /// public string Category { get; set; } + + /// + /// Order of the Property in the list of Profile-Properties. + /// public int ViewOrder { get; set; } + + /// + /// Limits the input length of the property. + /// public int MaxLength { get; set; } + + /// + /// Initial/default value of this Property. + /// public string DefaultValue { get; set; } + + /// + /// Some Profile Properties are required - marked with this field. + /// public bool IsRequired { get; set; } + + /// + /// Some Profile Properties are private, meaning other users won't see them. + /// public bool IsPrivate { get; set; } + + /// + /// This gives possible values for dropdown input fields. + /// public string Options { get; set; } + #region IAuditable Properties + + /// public string CreatedBy { get; set; } + + /// public DateTime CreatedOn { get; set; } + + /// public string ModifiedBy { get; set; } + + /// public DateTime ModifiedOn { get; set; } + + #endregion } } diff --git a/Oqtane.Shared/Models/Resource.cs b/Oqtane.Shared/Models/Resource.cs index 72f26e4b..b87e32ec 100644 --- a/Oqtane.Shared/Models/Resource.cs +++ b/Oqtane.Shared/Models/Resource.cs @@ -2,14 +2,45 @@ using Oqtane.Shared; namespace Oqtane.Models { + /// + /// Resource Objects describe a JavaScript or CSS file which is needed by the Module to work. + /// public class Resource { + /// + /// A so the Interop can properly create `script` or `link` tags + /// public ResourceType ResourceType { get; set; } + + /// + /// Path to the resources. + /// public string Url { get; set; } + + /// + /// Integrity checks to increase the security of resources accessed. Especially common in CDN resources. + /// public string Integrity { get; set; } + + /// + /// Cross-Origin rules for this Resources. Usually `anonymous` + /// public string CrossOrigin { get; set; } + + /// + /// Bundle ID in case this Resource belongs to a set of Resources, which may have already been loaded using LoadJS + /// public string Bundle { get; set; } + + /// + /// Determines if the Resource is global, meaning that the entire solution uses it or just some modules. + /// TODO: VERIFY that this explanation is correct. + /// public ResourceDeclaration Declaration { get; set; } + + /// + /// If the Resource should be included in the `head` of the HTML document or the `body` + /// public ResourceLocation Location { get; set; } } } diff --git a/Oqtane.Shared/Models/Theme.cs b/Oqtane.Shared/Models/Theme.cs index ba881dd4..0f0be718 100644 --- a/Oqtane.Shared/Models/Theme.cs +++ b/Oqtane.Shared/Models/Theme.cs @@ -3,6 +3,9 @@ using System.Collections.Generic; namespace Oqtane.Models { + /// + /// Information about a Theme in Oqtane. + /// public class Theme { public Theme() @@ -20,14 +23,47 @@ namespace Oqtane.Models PackageName = ""; } + /// + /// Full Namespace / Identifier of the Theme. + /// public string ThemeName { get; set; } + + /// + /// Nice Name of the Theme. + /// public string Name { get; set; } + + /// + /// Version as determined by the DLL / NuGet Package. + /// public string Version { get; set; } + + /// + /// Author / Creator of the Theme. + /// public string Owner { get; set; } + + /// + /// URL (in NuGet) of the Theme + /// public string Url { get; set; } + + /// + /// Author Contact information + /// public string Contact { get; set; } + + /// + /// Theme License, like `MIT` etc. + /// public string License { get; set; } + + /// + /// Theme Dependencies (DLLs) which the system will check if they exist + /// public string Dependencies { get; set; } + + public string ThemeSettingsType { get; set; } // added in 2.0.2 public string ContainerSettingsType { get; set; } // added in 2.0.2 public string PackageName { get; set; } // added in 2.1.0