using Oqtane.Shared;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
namespace Oqtane.Models
{
///
/// Describes a Module _Instance_ which will be shown on a page. This is different from a which describes a Module.
///
public class Module : IAuditable
{
///
/// The ID of this instance
///
public int ModuleId { get; set; }
///
/// Reference to the
///
public int SiteId { get; set; }
///
/// Reference to the
///
public string ModuleDefinitionName { get; set; }
///
/// Determines if this Module Instance should be shown on all pages of the current
///
public bool AllPages { 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
#region Extended IAuditable Properties, may be moved to an Interface some day so not documented yet
[NotMapped]
public string DeletedBy { get; set; }
[NotMapped]
public DateTime? DeletedOn { get; set; }
[NotMapped]
public bool IsDeleted { get; set; }
#endregion
[NotMapped]
public string Permissions { get; set; }
[NotMapped]
public Dictionary Settings { get; set; }
#region PageModule properties
[NotMapped]
public int PageModuleId { get; set; }
///
/// Reference to the this module is on.
///
[NotMapped]
public int PageId { get; set; }
[NotMapped]
public string Title { get; set; }
///
/// The Pane this module is shown in.
///
[NotMapped]
public string Pane { get; set; }
[NotMapped]
public int Order { get; set; }
[NotMapped]
public string ContainerType { get; set; }
#endregion
#region SiteRouter properties
[NotMapped]
public string ModuleType { get; set; }
[NotMapped]
public int PaneModuleIndex { get; set; }
[NotMapped]
public int PaneModuleCount { get; set; }
#endregion
#region ModuleDefinition
///
/// Reference to the used for this module.
/// TODO: todoc - unclear if this is always populated
///
[NotMapped]
public ModuleDefinition ModuleDefinition { get; set; }
#endregion
#region IModuleControl properties
// TODO: unclear why these are IModuleControl properties - there is no such interface
[NotMapped]
public SecurityAccessLevel SecurityAccessLevel { get; set; }
[NotMapped]
public string ControlTitle { get; set; }
[NotMapped]
public string Actions { get; set; }
[NotMapped]
public bool UseAdminContainer { get; set; }
#endregion
}
}