Initial Commit

This commit is contained in:
2025-10-14 19:01:57 +04:00
commit 5774f54613
71 changed files with 8893 additions and 0 deletions

4
Client/AssemblyInfo.cs Normal file
View File

@@ -0,0 +1,4 @@
using System.Resources;
using Microsoft.Extensions.Localization;
[assembly: RootNamespace("SZUAbsolventenverein.Module.AdminModules.Client")]

15
Client/Interop.cs Normal file
View File

@@ -0,0 +1,15 @@
using Microsoft.JSInterop;
using System.Threading.Tasks;
namespace SZUAbsolventenverein.Module.AdminModules
{
public class Interop
{
private readonly IJSRuntime _jsRuntime;
public Interop(IJSRuntime jsRuntime)
{
_jsRuntime = jsRuntime;
}
}
}

View File

@@ -0,0 +1,127 @@
@using Oqtane.Modules.Controls
@using SZUAbsolventenverein.Module.AdminModules.Services
@using SZUAbsolventenverein.Module.AdminModules.Models
@namespace SZUAbsolventenverein.Module.AdminModules
@inherits ModuleBase
@inject IAdminModulesService AdminModulesService
@inject NavigationManager NavigationManager
@inject IStringLocalizer<Edit> Localizer
<form @ref="form" class="@(validated ? " was-validated" : "needs-validation" )" novalidate>
<div class="container">
<div class="row mb-1 align-items-center">
<Label Class="col-sm-3" For="name" HelpText="Enter a name" ResourceKey="Name">Name: </Label>
<div class="col-sm-9">
<input id="name" class="form-control" @bind="@_name" required />
</div>
</div>
<div class="row mb-1 align-items-center">
<Label Class="col-sm-3" For="Body" HelpText="Enter a body" ResourceKey="Body">Body: </Label>
<div class="col-sm-9">
<RichTextEditor id="content" class="form-control" @Content="@_richText" @ref="RichTextEditorHtml" required />
</div>
</div>
</div>
<button type="button" class="btn btn-success" @onclick="Save">@Localizer["Save"]</button>
<NavLink class="btn btn-secondary" href="@NavigateUrl()">@Localizer["Cancel"]</NavLink>
<br /><br />
@if (PageState.Action == "Edit")
{
<AuditInfo CreatedBy="@_createdby" CreatedOn="@_createdon" ModifiedBy="@_modifiedby" ModifiedOn="@_modifiedon"></AuditInfo>
}
</form>
@code {
public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Edit;
public override string Actions => "Add,Edit";
public override string Title => "Manage AdminModules";
public override List<Resource> Resources => new List<Resource>()
{
new Stylesheet("_content/SZUAbsolventenverein.Module.AdminModules/Module.css")
};
private ElementReference form;
private RichTextEditor RichTextEditorHtml;
private bool validated = false;
private int _id;
private string _name;
private string _richText;
private string _createdby;
private DateTime _createdon;
private string _modifiedby;
private DateTime _modifiedon;
protected override async Task OnInitializedAsync()
{
try
{
if (PageState.Action == "Edit")
{
_id = Int32.Parse(PageState.QueryString["id"]);
AdminModules AdminModules = await AdminModulesService.GetAdminModulesAsync(_id, ModuleState.ModuleId);
if (AdminModules != null)
{
_name = AdminModules.Name;
_richText = AdminModules.Content;
_createdby = AdminModules.CreatedBy;
_createdon = AdminModules.CreatedOn;
_modifiedby = AdminModules.ModifiedBy;
_modifiedon = AdminModules.ModifiedOn;
}
}
}
catch (Exception ex)
{
await logger.LogError(ex, "Error Loading AdminModules {AdminModulesId} {Error}", _id, ex.Message);
AddModuleMessage(Localizer["Message.LoadError"], MessageType.Error);
}
}
private async Task Save()
{
try
{
validated = true;
var interop = new Oqtane.UI.Interop(JSRuntime);
if (await interop.FormValid(form))
{
string content = await RichTextEditorHtml.GetHtml();
content = Utilities.FormatContent(content, PageState.Alias, "save");
if (PageState.Action == "Add")
{
AdminModules AdminModules = new AdminModules();
AdminModules.ModuleId = ModuleState.ModuleId;
AdminModules.Name = _name;
AdminModules.Content = content;
AdminModules = await AdminModulesService.AddAdminModulesAsync(AdminModules);
await logger.LogInformation("AdminModules Added {AdminModules}", AdminModules);
}
else
{
AdminModules AdminModules = await AdminModulesService.GetAdminModulesAsync(_id, ModuleState.ModuleId);
AdminModules.Name = _name;
AdminModules.Content = content;
await AdminModulesService.UpdateAdminModulesAsync(AdminModules);
await logger.LogInformation("AdminModules Updated {AdminModules}", AdminModules);
}
NavigationManager.NavigateTo(NavigateUrl());
}
else
{
AddModuleMessage(Localizer["Message.SaveValidation"], MessageType.Warning);
}
}
catch (Exception ex)
{
await logger.LogError(ex, "Error Saving AdminModules {Error}", ex.Message);
AddModuleMessage(Localizer["Message.SaveError"], MessageType.Error);
}
}
}

View File

@@ -0,0 +1,81 @@
@using SZUAbsolventenverein.Module.AdminModules.Services
@using SZUAbsolventenverein.Module.AdminModules.Models
@namespace SZUAbsolventenverein.Module.AdminModules
@inherits ModuleBase
@inject IAdminModulesService AdminModulesService
@inject NavigationManager NavigationManager
@inject IStringLocalizer<Index> Localizer
@if (_AdminModuless == null)
{
<p><em>Loading...</em></p>
}
else
{
<ActionLink Action="Add" Security="SecurityAccessLevel.Edit" Text="Add AdminModules" ResourceKey="Add" />
<br />
<br />
@if (@_AdminModuless.Count != 0)
{
<Pager Items="@_AdminModuless">
<Header>
<th style="width: 1px;">&nbsp;</th>
<th style="width: 1px;">&nbsp;</th>
<th style="width: 1px;">&nbsp;</th>
<th>@Localizer["Name"]</th>
</Header>
<Row>
<td><ActionLink Action="Edit" Parameters="@($"id=" + context.AdminModulesId.ToString())" ResourceKey="Edit" /></td>
<td><ActionDialog Header="Delete AdminModules" Message="Are You Sure You Wish To Delete This AdminModules?" Action="Delete" Security="SecurityAccessLevel.Edit" Class="btn btn-danger" OnClick="@(async () => await Delete(context))" ResourceKey="Delete" Id="@context.AdminModulesId.ToString()" /></td>
<td><ActionLink Action="Send" Parameters="@($"id=" + context.AdminModulesId.ToString())" ResourceKey="Send" /></td>
<td>@context.Name</td>
</Row>
</Pager>
}
else
{
<p>@Localizer["Message.DisplayNone"]</p>
}
}
@code {
public override string RenderMode => RenderModes.Static;
public override List<Resource> Resources => new List<Resource>()
{
new Stylesheet("_content/SZUAbsolventenverein.Module.AdminModules/Module.css"),
new Script("_content/SZUAbsolventenverein.Module.AdminModules/Module.js")
};
List<AdminModules> _AdminModuless;
protected override async Task OnInitializedAsync()
{
try
{
_AdminModuless = await AdminModulesService.GetAdminModulessAsync(ModuleState.ModuleId);
}
catch (Exception ex)
{
await logger.LogError(ex, "Error Loading AdminModules {Error}", ex.Message);
AddModuleMessage(Localizer["Message.LoadError"], MessageType.Error);
}
}
private async Task Delete(AdminModules AdminModules)
{
try
{
await AdminModulesService.DeleteAdminModulesAsync(AdminModules.AdminModulesId, ModuleState.ModuleId);
await logger.LogInformation("AdminModules Deleted {AdminModules}", AdminModules);
_AdminModuless = await AdminModulesService.GetAdminModulessAsync(ModuleState.ModuleId);
StateHasChanged();
}
catch (Exception ex)
{
await logger.LogError(ex, "Error Deleting AdminModules {AdminModules} {Error}", AdminModules, ex.Message);
AddModuleMessage(Localizer["Message.DeleteError"], MessageType.Error);
}
}
}

View File

@@ -0,0 +1,19 @@
using Oqtane.Models;
using Oqtane.Modules;
namespace SZUAbsolventenverein.Module.AdminModules
{
public class ModuleInfo : IModule
{
public ModuleDefinition ModuleDefinition => new ModuleDefinition
{
Name = "AdminModules",
Description = "Admin Tools",
Version = "1.0.0",
ServerManagerType = "SZUAbsolventenverein.Module.AdminModules.Manager.AdminModulesManager, SZUAbsolventenverein.Module.AdminModules.Server.Oqtane",
ReleaseVersions = "1.0.0",
Dependencies = "SZUAbsolventenverein.Module.AdminModules.Shared.Oqtane",
PackageName = "SZUAbsolventenverein.Module.AdminModules"
};
}
}

View File

@@ -0,0 +1,158 @@
@using Oqtane.Modules.Controls
@using SZUAbsolventenverein.Module.AdminModules.Services
@using SZUAbsolventenverein.Module.AdminModules.Models
@using Microsoft.AspNetCore.Components.Forms;
@namespace SZUAbsolventenverein.Module.AdminModules
@inherits ModuleBase
@inject IAdminModulesService AdminModulesService
@inject NavigationManager NavigationManager
@inject IStringLocalizer<Edit> Localizer
<form @ref="form" class="@(validated ? " was-validated" : "needs-validation" )" novalidate>
<div class="container">
<div class="row mb-1 align-items-center">
<Label Class="col-sm-3" For="name" HelpText="Enter a name" ResourceKey="Name">Name: </Label>
<div class="col-sm-9">
<input id="name" class="form-control" @bind="@_name" required />
</div>
</div>
<div class="row mb-1 align-items-center">
<Label Class="col-sm-3" For="role" HelpText="Select a role" ResourceKey="Role">Role: </Label>
<div class="col-sm-9">
<InputSelect id="content" @bind-Value="selectedRoleId" class="form-control" required>
<option disabled="disabled" selected value="-1">Select Role</option>
@foreach (var role in roles)
{
<option value="@role.RoleId">@role.Name</option>
}
</InputSelect>
</div>
</div>
</div>
<p></p>
<button type="button" class="btn btn-success" @onclick="Save">@Localizer["Save"]</button>
<NavLink class="btn btn-secondary" href="@NavigateUrl()">@Localizer["Cancel"]</NavLink>
<br /><br />
<AuditInfo CreatedBy="@_createdby" CreatedOn="@_createdon" ModifiedBy="@_modifiedby" ModifiedOn="@_modifiedon"></AuditInfo>
</form>
@code {
public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Edit;
public override string Actions => "Send";
public override string Title => "Send Notifications";
public override List<Resource> Resources => new List<Resource>()
{
new Stylesheet("_content/SZUAbsolventenverein.Module.AdminModules/Module.css")
};
private List<Role> roles = new List<Role>
{
new Role { RoleId = 1, Name = "Admin" },
new Role { RoleId = 2, Name = "User" },
new Role { RoleId = 3, Name = "Imported" },
};
private int _selectedRoleId = -1;
private int selectedRoleId
{
get => _selectedRoleId;
set {
_selectedRoleId = value;
selectedRole = roles.FirstOrDefault(r => r.RoleId == selectedRoleId);
RefetchUserCount();
}
}
private Role selectedRole;
private int? userCount { get; set; }
private ElementReference form;
private bool validated = false;
private int _id;
private string _name;
private string _richText;
private string _createdby;
private DateTime _createdon;
private string _modifiedby;
private DateTime _modifiedon;
private async void RefetchUserCount()
{
EmailFields ef = new EmailFields();
ef.Role = selectedRole;
ef.AdminModulesId = _id;
ef.ModuleId = ModuleState.ModuleId;
ef.Content = _richText;
userCount = await AdminModulesService.GetUsercountInRole(ef);
}
protected override async Task OnInitializedAsync()
{
try
{
if (PageState.Action == "Send")
{
_id = Int32.Parse(PageState.QueryString["id"]);
AdminModules AdminModules = await AdminModulesService.GetAdminModulesAsync(_id, ModuleState.ModuleId);
if (AdminModules != null)
{
_name = AdminModules.Name;
_richText = AdminModules.Content;
_createdby = AdminModules.CreatedBy;
_createdon = AdminModules.CreatedOn;
_modifiedby = AdminModules.ModifiedBy;
_modifiedon = AdminModules.ModifiedOn;
}
}
}
catch (Exception ex)
{
await logger.LogError(ex, "Error Loading AdminModules {AdminModulesId} {Error}", _id, ex.Message);
AddModuleMessage(Localizer["Message.LoadError"], MessageType.Error);
}
}
private async Task Save()
{
try
{
validated = true;
var interop = new Oqtane.UI.Interop(JSRuntime);
if (await interop.FormValid(form))
{
if (PageState.Action == "Add")
{
AdminModules AdminModules = new AdminModules();
AdminModules.ModuleId = ModuleState.ModuleId;
AdminModules.Name = _name;
AdminModules.Content = _richText;
AdminModules = await AdminModulesService.AddAdminModulesAsync(AdminModules);
await logger.LogInformation("AdminModules Added {AdminModules}", AdminModules);
}
else
{
AdminModules AdminModules = await AdminModulesService.GetAdminModulesAsync(_id, ModuleState.ModuleId);
AdminModules.Name = _name;
AdminModules.Content = _richText;
await AdminModulesService.UpdateAdminModulesAsync(AdminModules);
await logger.LogInformation("AdminModules Updated {AdminModules}", AdminModules);
}
NavigationManager.NavigateTo(NavigateUrl());
}
else
{
AddModuleMessage(Localizer["Message.SaveValidation"], MessageType.Warning);
}
}
catch (Exception ex)
{
await logger.LogError(ex, "Error Saving AdminModules {Error}", ex.Message);
AddModuleMessage(Localizer["Message.SaveError"], MessageType.Error);
}
}
}

View File

@@ -0,0 +1,47 @@
@namespace SZUAbsolventenverein.Module.AdminModules
@inherits ModuleBase
@inject ISettingService SettingService
@inject IStringLocalizer<Settings> Localizer
<div class="container">
<div class="row mb-1 align-items-center">
<Label Class="col-sm-3" For="value" HelpText="Enter a value" ResourceKey="SettingName" ResourceType="@resourceType">Name: </Label>
<div class="col-sm-9">
<input id="value" type="text" class="form-control" @bind="@_value" />
</div>
</div>
</div>
@code {
private string resourceType = "SZUAbsolventenverein.Module.AdminModules.Settings, SZUAbsolventenverein.Module.AdminModules.Client.Oqtane"; // for localization
public override string Title => "AdminModules Settings";
string _value;
protected override async Task OnInitializedAsync()
{
try
{
Dictionary<string, string> settings = await SettingService.GetModuleSettingsAsync(ModuleState.ModuleId);
_value = SettingService.GetSetting(settings, "SettingName", "");
}
catch (Exception ex)
{
AddModuleMessage(ex.Message, MessageType.Error);
}
}
public async Task UpdateSettings()
{
try
{
Dictionary<string, string> settings = await SettingService.GetModuleSettingsAsync(ModuleState.ModuleId);
SettingService.SetSetting(settings, "SettingName", _value);
await SettingService.UpdateModuleSettingsAsync(settings, ModuleState.ModuleId);
}
catch (Exception ex)
{
AddModuleMessage(ex.Message, MessageType.Error);
}
}
}

View File

@@ -0,0 +1,141 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Name.Text" xml:space="preserve">
<value>Name: </value>
</data>
<data name="Name.HelpText" xml:space="preserve">
<value>Enter the name</value>
</data>
<data name="Save" xml:space="preserve">
<value>Save</value>
</data>
<data name="Cancel" xml:space="preserve">
<value>Cancel</value>
</data>
<data name="Message.LoadError" xml:space="preserve">
<value>Error Loading AdminModules</value>
</data>
<data name="Message.SaveValidation" xml:space="preserve">
<value>Please Provide All Required Information</value>
</data>
<data name="Message.SaveError" xml:space="preserve">
<value>Error Saving AdminModules</value>
</data>
</root>

View File

@@ -0,0 +1,147 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Name" xml:space="preserve">
<value>Name</value>
</data>
<data name="Add.Text" xml:space="preserve">
<value>Add AdminModules</value>
</data>
<data name="Edit.Text" xml:space="preserve">
<value>Edit</value>
</data>
<data name="Delete.Text" xml:space="preserve">
<value>Delete</value>
</data>
<data name="Delete.Header" xml:space="preserve">
<value>Delete AdminModules</value>
</data>
<data name="Delete.Message" xml:space="preserve">
<value>Are You Sure You Wish To Delete This AdminModules?</value>
</data>
<data name="Message.DisplayNone" xml:space="preserve">
<value>No AdminModuless To Display</value>
</data>
<data name="Message.LoadError" xml:space="preserve">
<value>Error Loading AdminModules</value>
</data>
<data name="Message.DeleteError" xml:space="preserve">
<value>Error Deleting AdminModules</value>
</data>
</root>

View File

@@ -0,0 +1,126 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="SettingName.Text" xml:space="preserve">
<value>Name: </value>
</data>
<data name="SettingName.HelpText" xml:space="preserve">
<value>Enter a value</value>
</data>
</root>

View File

@@ -0,0 +1,38 @@
<Project Sdk="Microsoft.NET.Sdk.Razor">
<PropertyGroup>
<TargetFramework>net9.0</TargetFramework>
<Version>1.0.0</Version>
<Authors>SZUAbsolventenverein</Authors>
<Company>SZUAbsolventenverein</Company>
<Description>Admin Tools</Description>
<Product>SZUAbsolventenverein.Module.AdminModules</Product>
<Copyright>SZUAbsolventenverein</Copyright>
<AssemblyName>SZUAbsolventenverein.Module.AdminModules.Client.Oqtane</AssemblyName>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="9.0.8" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Authentication" Version="9.0.8" />
<PackageReference Include="Microsoft.Extensions.Localization" Version="9.0.8" />
<PackageReference Include="Microsoft.Extensions.Http" Version="9.0.8" />
<PackageReference Include="System.Net.Http.Json" Version="9.0.8" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Shared\SZUAbsolventenverein.Module.AdminModules.Shared.csproj" />
</ItemGroup>
<ItemGroup>
<Reference Include="Oqtane.Client"><HintPath>..\..\oqtane.framework\Oqtane.Server\bin\Debug\net9.0\Oqtane.Client.dll</HintPath></Reference>
<Reference Include="Oqtane.Shared"><HintPath>..\..\oqtane.framework\Oqtane.Server\bin\Debug\net9.0\Oqtane.Shared.dll</HintPath></Reference>
</ItemGroup>
<PropertyGroup>
<!-- there may be other elements here -->
<BlazorWebAssemblyEnableLinking>false</BlazorWebAssemblyEnableLinking>
<GeneratePackageOnBuild>false</GeneratePackageOnBuild>
</PropertyGroup>
</Project>

View File

@@ -0,0 +1,70 @@
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Threading.Tasks;
using Oqtane.Models;
using Oqtane.Services;
using Oqtane.Shared;
using SZUAbsolventenverein.Module.AdminModules.Models;
namespace SZUAbsolventenverein.Module.AdminModules.Services
{
public interface IAdminModulesService
{
Task<List<Models.AdminModules>> GetAdminModulessAsync(int ModuleId);
Task<Models.AdminModules> GetAdminModulesAsync(int AdminModulesId, int ModuleId);
Task<Models.AdminModules> AddAdminModulesAsync(Models.AdminModules AdminModules);
Task<Models.AdminModules> UpdateAdminModulesAsync(Models.AdminModules AdminModules);
Task DeleteAdminModulesAsync(int AdminModulesId, int ModuleId);
Task<int> GetUsercountInRole(Models.EmailFields EmailFields);
Task<Models.EmailFields> SendMassNotification(Models.EmailFields EmailFields);
}
public class AdminModulesService : ServiceBase, IAdminModulesService
{
public AdminModulesService(HttpClient http, SiteState siteState) : base(http, siteState) { }
private string Apiurl => CreateApiUrl("AdminModules");
public async Task<List<Models.AdminModules>> GetAdminModulessAsync(int ModuleId)
{
List<Models.AdminModules> AdminModuless = await GetJsonAsync<List<Models.AdminModules>>(CreateAuthorizationPolicyUrl($"{Apiurl}?moduleid={ModuleId}", EntityNames.Module, ModuleId), Enumerable.Empty<Models.AdminModules>().ToList());
return AdminModuless.OrderBy(item => item.Name).ToList();
}
public async Task<Models.AdminModules> GetAdminModulesAsync(int AdminModulesId, int ModuleId)
{
return await GetJsonAsync<Models.AdminModules>(CreateAuthorizationPolicyUrl($"{Apiurl}/{AdminModulesId}/{ModuleId}", EntityNames.Module, ModuleId));
}
public async Task<Models.AdminModules> AddAdminModulesAsync(Models.AdminModules AdminModules)
{
return await PostJsonAsync<Models.AdminModules>(CreateAuthorizationPolicyUrl($"{Apiurl}", EntityNames.Module, AdminModules.ModuleId), AdminModules);
}
public async Task<Models.AdminModules> UpdateAdminModulesAsync(Models.AdminModules AdminModules)
{
return await PutJsonAsync<Models.AdminModules>(CreateAuthorizationPolicyUrl($"{Apiurl}/{AdminModules.AdminModulesId}", EntityNames.Module, AdminModules.ModuleId), AdminModules);
}
public async Task DeleteAdminModulesAsync(int AdminModulesId, int ModuleId)
{
await DeleteAsync(CreateAuthorizationPolicyUrl($"{Apiurl}/{AdminModulesId}/{ModuleId}", EntityNames.Module, ModuleId));
}
public async Task<int> GetUsercountInRole(EmailFields EmailFields)
{
return await GetJsonAsync<int>(CreateAuthorizationPolicyUrl($"{Apiurl}/roles/{EmailFields.AdminModulesId}", EntityNames.Module, EmailFields.ModuleId));
}
public async Task<Models.EmailFields> SendMassNotification(EmailFields EmailFields)
{
return await PutJsonAsync<Models.EmailFields>(CreateAuthorizationPolicyUrl($"{Apiurl}/{EmailFields.AdminModulesId}/send", EntityNames.Module, EmailFields.ModuleId), EmailFields);
}
}
}

View File

@@ -0,0 +1,18 @@
using Microsoft.Extensions.DependencyInjection;
using System.Linq;
using Oqtane.Services;
using SZUAbsolventenverein.Module.AdminModules.Services;
namespace SZUAbsolventenverein.Module.AdminModules.Startup
{
public class ClientStartup : IClientStartup
{
public void ConfigureServices(IServiceCollection services)
{
if (!services.Any(s => s.ServiceType == typeof(IAdminModulesService)))
{
services.AddScoped<IAdminModulesService, AdminModulesService>();
}
}
}
}

24
Client/_Imports.razor Normal file
View File

@@ -0,0 +1,24 @@
@using System
@using System.Linq
@using System.Collections.Generic
@using System.Net.Http
@using System.Net.Http.Json
@using Microsoft.AspNetCore.Components.Authorization
@using Microsoft.AspNetCore.Components.Routing
@using Microsoft.AspNetCore.Components.Web
@using Microsoft.Extensions.Localization
@using Microsoft.JSInterop
@using Oqtane.Models
@using Oqtane.Modules
@using Oqtane.Modules.Controls
@using Oqtane.Providers
@using Oqtane.Security
@using Oqtane.Services
@using Oqtane.Shared
@using Oqtane.Themes
@using Oqtane.Themes.Controls
@using Oqtane.UI
@using Oqtane.Enums
@using Oqtane.Interfaces

View File

@@ -0,0 +1,4 @@
// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v9.0", FrameworkDisplayName = ".NET 9.0")]

View File

@@ -0,0 +1 @@
{"GlobalPropertiesHash":"2ilJ2M8+ZdH0swl4cXFj9Ji8kay0R08ISE/fEc+OL0o=","FingerprintPatternsHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["vPUhAvZZzkKiBb/H3cQfbImopIzYd0C80zuFcntjDoc="],"CachedAssets":{"vPUhAvZZzkKiBb/H3cQfbImopIzYd0C80zuFcntjDoc=":{"Identity":"C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Client\\obj\\Debug\\net9.0\\compressed\\f32kn295nz-gcvjxldlff.gz","SourceId":"Microsoft.AspNetCore.Components.WebAssembly.Authentication","SourceType":"Package","ContentRoot":"C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Client\\obj\\Debug\\net9.0\\compressed\\","BasePath":"_content/Microsoft.AspNetCore.Components.WebAssembly.Authentication","RelativePath":"AuthenticationService.js.gz","AssetKind":"All","AssetMode":"All","AssetRole":"Alternative","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":"C:\\Users\\Konstantin\\.nuget\\packages\\microsoft.aspnetcore.components.webassembly.authentication\\9.0.8\\staticwebassets\\AuthenticationService.js","AssetTraitName":"Content-Encoding","AssetTraitValue":"gzip","Fingerprint":"bl7261sy3y","Integrity":"EcPEzZq/MnP6aPd65UU\u002BhuGs143nnN3gdVpQgChQm8g=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"C:\\Users\\Konstantin\\.nuget\\packages\\microsoft.aspnetcore.components.webassembly.authentication\\9.0.8\\staticwebassets\\AuthenticationService.js","FileLength":74044,"LastWriteTime":"2025-10-14T14:52:23.9210258+00:00"}},"CachedCopyCandidates":{}}

View File

@@ -0,0 +1,170 @@
{
"format": 1,
"restore": {
"C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Client\\SZUAbsolventenverein.Module.AdminModules.Client.csproj": {}
},
"projects": {
"C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Client\\SZUAbsolventenverein.Module.AdminModules.Client.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Client\\SZUAbsolventenverein.Module.AdminModules.Client.csproj",
"projectName": "SZUAbsolventenverein.Module.AdminModules.Client.Oqtane",
"projectPath": "C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Client\\SZUAbsolventenverein.Module.AdminModules.Client.csproj",
"packagesPath": "C:\\Users\\Konstantin\\.nuget\\packages\\",
"outputPath": "C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Client\\obj\\",
"projectStyle": "PackageReference",
"fallbackFolders": [
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
],
"configFilePaths": [
"C:\\Users\\Konstantin\\AppData\\Roaming\\NuGet\\NuGet.Config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
],
"originalTargetFrameworks": [
"net9.0"
],
"sources": {
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"net9.0": {
"targetAlias": "net9.0",
"projectReferences": {
"C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Shared\\SZUAbsolventenverein.Module.AdminModules.Shared.csproj": {
"projectPath": "C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Shared\\SZUAbsolventenverein.Module.AdminModules.Shared.csproj"
}
}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
},
"restoreAuditProperties": {
"enableAudit": "true",
"auditLevel": "low",
"auditMode": "direct"
},
"SdkAnalysisLevel": "9.0.300"
},
"frameworks": {
"net9.0": {
"targetAlias": "net9.0",
"dependencies": {
"Microsoft.AspNetCore.Components.WebAssembly": {
"target": "Package",
"version": "[9.0.8, )"
},
"Microsoft.AspNetCore.Components.WebAssembly.Authentication": {
"target": "Package",
"version": "[9.0.8, )"
},
"Microsoft.Extensions.Http": {
"target": "Package",
"version": "[9.0.8, )"
},
"Microsoft.Extensions.Localization": {
"target": "Package",
"version": "[9.0.8, )"
},
"System.Net.Http.Json": {
"target": "Package",
"version": "[9.0.8, )"
}
},
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48",
"net481"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.305/PortableRuntimeIdentifierGraph.json"
}
}
},
"C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Shared\\SZUAbsolventenverein.Module.AdminModules.Shared.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Shared\\SZUAbsolventenverein.Module.AdminModules.Shared.csproj",
"projectName": "SZUAbsolventenverein.Module.AdminModules.Shared.Oqtane",
"projectPath": "C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Shared\\SZUAbsolventenverein.Module.AdminModules.Shared.csproj",
"packagesPath": "C:\\Users\\Konstantin\\.nuget\\packages\\",
"outputPath": "C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Shared\\obj\\",
"projectStyle": "PackageReference",
"fallbackFolders": [
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
],
"configFilePaths": [
"C:\\Users\\Konstantin\\AppData\\Roaming\\NuGet\\NuGet.Config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
],
"originalTargetFrameworks": [
"net9.0"
],
"sources": {
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"net9.0": {
"targetAlias": "net9.0",
"projectReferences": {}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
},
"restoreAuditProperties": {
"enableAudit": "true",
"auditLevel": "low",
"auditMode": "direct"
},
"SdkAnalysisLevel": "9.0.300"
},
"frameworks": {
"net9.0": {
"targetAlias": "net9.0",
"dependencies": {
"System.ComponentModel.Annotations": {
"target": "Package",
"version": "[5.0.0, )"
}
},
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48",
"net481"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.305/PortableRuntimeIdentifierGraph.json"
}
}
}
}
}

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
<RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
<ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">$(UserProfile)\.nuget\packages\</NuGetPackageRoot>
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">C:\Users\Konstantin\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages</NuGetPackageFolders>
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">6.14.1</NuGetToolVersion>
</PropertyGroup>
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<SourceRoot Include="C:\Users\Konstantin\.nuget\packages\" />
<SourceRoot Include="C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages\" />
</ItemGroup>
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<Import Project="$(NuGetPackageRoot)microsoft.aspnetcore.components.webassembly.authentication\9.0.8\buildTransitive\Microsoft.AspNetCore.Components.WebAssembly.Authentication.props" Condition="Exists('$(NuGetPackageRoot)microsoft.aspnetcore.components.webassembly.authentication\9.0.8\buildTransitive\Microsoft.AspNetCore.Components.WebAssembly.Authentication.props')" />
<Import Project="$(NuGetPackageRoot)microsoft.aspnetcore.components.webassembly\9.0.8\build\net9.0\Microsoft.AspNetCore.Components.WebAssembly.props" Condition="Exists('$(NuGetPackageRoot)microsoft.aspnetcore.components.webassembly\9.0.8\build\net9.0\Microsoft.AspNetCore.Components.WebAssembly.props')" />
</ImportGroup>
</Project>

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<Import Project="$(NuGetPackageRoot)microsoft.extensions.options\9.0.8\buildTransitive\net8.0\Microsoft.Extensions.Options.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.options\9.0.8\buildTransitive\net8.0\Microsoft.Extensions.Options.targets')" />
<Import Project="$(NuGetPackageRoot)microsoft.extensions.configuration.binder\9.0.8\buildTransitive\netstandard2.0\Microsoft.Extensions.Configuration.Binder.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.configuration.binder\9.0.8\buildTransitive\netstandard2.0\Microsoft.Extensions.Configuration.Binder.targets')" />
<Import Project="$(NuGetPackageRoot)microsoft.extensions.logging.abstractions\9.0.8\buildTransitive\net8.0\Microsoft.Extensions.Logging.Abstractions.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.logging.abstractions\9.0.8\buildTransitive\net8.0\Microsoft.Extensions.Logging.Abstractions.targets')" />
<Import Project="$(NuGetPackageRoot)microsoft.aspnetcore.components.analyzers\9.0.8\buildTransitive\netstandard2.0\Microsoft.AspNetCore.Components.Analyzers.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.aspnetcore.components.analyzers\9.0.8\buildTransitive\netstandard2.0\Microsoft.AspNetCore.Components.Analyzers.targets')" />
</ImportGroup>
</Project>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,29 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net9.0</TargetFramework>
<GeneratePackageOnBuild>false</GeneratePackageOnBuild>
<AccelerateBuildsInVisualStudio>false</AccelerateBuildsInVisualStudio>
</PropertyGroup>
<ItemGroup>
<None Include="icon.png">
<Pack>True</Pack>
<PackagePath></PackagePath>
</None>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Client\SZUAbsolventenverein.Module.AdminModules.Client.csproj" />
<ProjectReference Include="..\Server\SZUAbsolventenverein.Module.AdminModules.Server.csproj" />
<ProjectReference Include="..\Shared\SZUAbsolventenverein.Module.AdminModules.Shared.csproj" />
</ItemGroup>
<Target Name="PostBuild" AfterTargets="PostBuildEvent">
<Exec Condition="'$(OS)' == 'Windows_NT' And '$(Configuration)' == 'Debug'" Command="debug.cmd $(TargetFramework) $([System.String]::Copy('$(MSBuildProjectName)').Replace('.Package',''))" />
<Exec Condition="'$(OS)' != 'Windows_NT' And '$(Configuration)' == 'Debug'" Command="bash $(ProjectDir)debug.sh $(TargetFramework) $([System.String]::Copy('$(MSBuildProjectName)').Replace('.Package',''))" />
<Exec Condition="'$(OS)' == 'Windows_NT' And '$(Configuration)' == 'Release'" Command="release.cmd $(TargetFramework) $([System.String]::Copy('$(MSBuildProjectName)').Replace('.Package',''))" />
<Exec Condition="'$(OS)' != 'Windows_NT' And '$(Configuration)' == 'Release'" Command="bash $(ProjectDir)release.sh $(TargetFramework) $([System.String]::Copy('$(MSBuildProjectName)').Replace('.Package',''))" />
</Target>
</Project>

View File

@@ -0,0 +1,38 @@
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<id>$projectname$</id>
<version>1.0.0</version>
<authors>SZUAbsolventenverein</authors>
<owners>SZUAbsolventenverein</owners>
<title>AdminModules</title>
<description>Admin Tools</description>
<copyright>SZUAbsolventenverein</copyright>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<license type="expression">MIT</license>
<projectUrl>https://github.com/oqtane/oqtane.framework</projectUrl>
<icon>icon.png</icon>
<tags>oqtane module</tags>
<releaseNotes></releaseNotes>
<summary></summary>
<packageTypes>
<packageType name="Dependency" />
<packageType name="Oqtane.Framework" version="6.2.0" />
</packageTypes>
</metadata>
<files>
<file src="..\Client\bin\Release\$targetframework$\$ProjectName$.Client.Oqtane.dll" target="lib\$targetframework$" />
<file src="..\Client\bin\Release\$targetframework$\$ProjectName$.Client.Oqtane.pdb" target="lib\$targetframework$" />
<file src="..\Server\bin\Release\$targetframework$\$ProjectName$.Server.Oqtane.dll" target="lib\$targetframework$" />
<file src="..\Server\bin\Release\$targetframework$\$ProjectName$.Server.Oqtane.pdb" target="lib\$targetframework$" />
<file src="..\Shared\bin\Release\$targetframework$\$ProjectName$.Shared.Oqtane.dll" target="lib\$targetframework$" />
<file src="..\Shared\bin\Release\$targetframework$\$ProjectName$.Shared.Oqtane.pdb" target="lib\$targetframework$" />
<file src="..\Server\obj\Release\net9.0\staticwebassets\msbuild.$ProjectName$.Microsoft.AspNetCore.StaticWebAssetEndpoints.props" target="build\Microsoft.AspNetCore.StaticWebAssetEndpoints.props" />
<file src="..\Server\obj\Release\net9.0\staticwebassets\msbuild.$ProjectName$.Microsoft.AspNetCore.StaticWebAssets.props" target="build\Microsoft.AspNetCore.StaticWebAssets.props" />
<file src="..\Server\obj\Release\net9.0\staticwebassets\msbuild.build.$ProjectName$.props" target="build\$ProjectName$.props" />
<file src="..\Server\obj\Release\net9.0\staticwebassets\msbuild.buildMultiTargeting.$ProjectName$.props" target="buildMultiTargeting\$ProjectName$.props" />
<file src="..\Server\obj\Release\net9.0\staticwebassets\msbuild.buildTransitive.$ProjectName$.props" target="buildTransitive\$ProjectName$.props" />
<file src="..\Server\wwwroot\**\*.*" target="staticwebassets" />
<file src="icon.png" target="" />
</files>
</package>

11
Package/debug.cmd Normal file
View File

@@ -0,0 +1,11 @@
@echo off
set TargetFramework=%1
set ProjectName=%2
XCOPY "..\Client\bin\Debug\%TargetFramework%\%ProjectName%.Client.Oqtane.dll" "..\..\oqtane.framework\Oqtane.Server\bin\Debug\%TargetFramework%\" /Y
XCOPY "..\Client\bin\Debug\%TargetFramework%\%ProjectName%.Client.Oqtane.pdb" "..\..\oqtane.framework\Oqtane.Server\bin\Debug\%TargetFramework%\" /Y
XCOPY "..\Server\bin\Debug\%TargetFramework%\%ProjectName%.Server.Oqtane.dll" "..\..\oqtane.framework\Oqtane.Server\bin\Debug\%TargetFramework%\" /Y
XCOPY "..\Server\bin\Debug\%TargetFramework%\%ProjectName%.Server.Oqtane.pdb" "..\..\oqtane.framework\Oqtane.Server\bin\Debug\%TargetFramework%\" /Y
XCOPY "..\Shared\bin\Debug\%TargetFramework%\%ProjectName%.Shared.Oqtane.dll" "..\..\oqtane.framework\Oqtane.Server\bin\Debug\%TargetFramework%\" /Y
XCOPY "..\Shared\bin\Debug\%TargetFramework%\%ProjectName%.Shared.Oqtane.pdb" "..\..\oqtane.framework\Oqtane.Server\bin\Debug\%TargetFramework%\" /Y
XCOPY "..\Server\wwwroot\*" "..\..\oqtane.framework\Oqtane.Server\wwwroot\_content\%ProjectName%\" /Y /S /I

12
Package/debug.sh Normal file
View File

@@ -0,0 +1,12 @@
#!/bin/bash
TargetFramework=$1
ProjectName=$2
cp -f "../Client/bin/Debug/$TargetFramework/$ProjectName$.Client.Oqtane.dll" "../../oqtane.framework/Oqtane.Server/bin/Debug/$TargetFramework/"
cp -f "../Client/bin/Debug/$TargetFramework/$ProjectName$.Client.Oqtane.pdb" "../../oqtane.framework/Oqtane.Server/bin/Debug/$TargetFramework/"
cp -f "../Server/bin/Debug/$TargetFramework/$ProjectName$.Server.Oqtane.dll" "../../oqtane.framework/Oqtane.Server/bin/Debug/$TargetFramework/"
cp -f "../Server/bin/Debug/$TargetFramework/$ProjectName$.Server.Oqtane.pdb" "../../oqtane.framework/Oqtane.Server/bin/Debug/$TargetFramework/"
cp -f "../Shared/bin/Debug/$TargetFramework/$ProjectName$.Shared.Oqtane.dll" "../../oqtane.framework/Oqtane.Server/bin/Debug/$TargetFramework/"
cp -f "../Shared/bin/Debug/$TargetFramework/$ProjectName$.Shared.Oqtane.pdb" "../../oqtane.framework/Oqtane.Server/bin/Debug/$TargetFramework/"
cp -rf "../Server/wwwroot/"* "../../oqtane.framework/Oqtane.Server/wwwroot/_content/%ProjectName%/"

BIN
Package/icon.png Normal file

Binary file not shown.

View File

@@ -0,0 +1,335 @@
{
"format": 1,
"restore": {
"C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Package\\SZUAbsolventenverein.Module.AdminModules.Package.csproj": {}
},
"projects": {
"C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Client\\SZUAbsolventenverein.Module.AdminModules.Client.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Client\\SZUAbsolventenverein.Module.AdminModules.Client.csproj",
"projectName": "SZUAbsolventenverein.Module.AdminModules.Client.Oqtane",
"projectPath": "C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Client\\SZUAbsolventenverein.Module.AdminModules.Client.csproj",
"packagesPath": "C:\\Users\\Konstantin\\.nuget\\packages\\",
"outputPath": "C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Client\\obj\\",
"projectStyle": "PackageReference",
"fallbackFolders": [
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
],
"configFilePaths": [
"C:\\Users\\Konstantin\\AppData\\Roaming\\NuGet\\NuGet.Config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
],
"originalTargetFrameworks": [
"net9.0"
],
"sources": {
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"net9.0": {
"targetAlias": "net9.0",
"projectReferences": {
"C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Shared\\SZUAbsolventenverein.Module.AdminModules.Shared.csproj": {
"projectPath": "C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Shared\\SZUAbsolventenverein.Module.AdminModules.Shared.csproj"
}
}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
},
"restoreAuditProperties": {
"enableAudit": "true",
"auditLevel": "low",
"auditMode": "direct"
},
"SdkAnalysisLevel": "9.0.300"
},
"frameworks": {
"net9.0": {
"targetAlias": "net9.0",
"dependencies": {
"Microsoft.AspNetCore.Components.WebAssembly": {
"target": "Package",
"version": "[9.0.8, )"
},
"Microsoft.AspNetCore.Components.WebAssembly.Authentication": {
"target": "Package",
"version": "[9.0.8, )"
},
"Microsoft.Extensions.Http": {
"target": "Package",
"version": "[9.0.8, )"
},
"Microsoft.Extensions.Localization": {
"target": "Package",
"version": "[9.0.8, )"
},
"System.Net.Http.Json": {
"target": "Package",
"version": "[9.0.8, )"
}
},
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48",
"net481"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.305/PortableRuntimeIdentifierGraph.json"
}
}
},
"C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Package\\SZUAbsolventenverein.Module.AdminModules.Package.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Package\\SZUAbsolventenverein.Module.AdminModules.Package.csproj",
"projectName": "SZUAbsolventenverein.Module.AdminModules.Package",
"projectPath": "C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Package\\SZUAbsolventenverein.Module.AdminModules.Package.csproj",
"packagesPath": "C:\\Users\\Konstantin\\.nuget\\packages\\",
"outputPath": "C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Package\\obj\\",
"projectStyle": "PackageReference",
"fallbackFolders": [
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
],
"configFilePaths": [
"C:\\Users\\Konstantin\\AppData\\Roaming\\NuGet\\NuGet.Config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
],
"originalTargetFrameworks": [
"net9.0"
],
"sources": {
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"net9.0": {
"targetAlias": "net9.0",
"projectReferences": {
"C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Client\\SZUAbsolventenverein.Module.AdminModules.Client.csproj": {
"projectPath": "C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Client\\SZUAbsolventenverein.Module.AdminModules.Client.csproj"
},
"C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Server\\SZUAbsolventenverein.Module.AdminModules.Server.csproj": {
"projectPath": "C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Server\\SZUAbsolventenverein.Module.AdminModules.Server.csproj"
},
"C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Shared\\SZUAbsolventenverein.Module.AdminModules.Shared.csproj": {
"projectPath": "C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Shared\\SZUAbsolventenverein.Module.AdminModules.Shared.csproj"
}
}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
},
"restoreAuditProperties": {
"enableAudit": "true",
"auditLevel": "low",
"auditMode": "direct"
},
"SdkAnalysisLevel": "9.0.300"
},
"frameworks": {
"net9.0": {
"targetAlias": "net9.0",
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48",
"net481"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.305/PortableRuntimeIdentifierGraph.json"
}
}
},
"C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Server\\SZUAbsolventenverein.Module.AdminModules.Server.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Server\\SZUAbsolventenverein.Module.AdminModules.Server.csproj",
"projectName": "SZUAbsolventenverein.Module.AdminModules.Server.Oqtane",
"projectPath": "C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Server\\SZUAbsolventenverein.Module.AdminModules.Server.csproj",
"packagesPath": "C:\\Users\\Konstantin\\.nuget\\packages\\",
"outputPath": "C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Server\\obj\\",
"projectStyle": "PackageReference",
"fallbackFolders": [
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
],
"configFilePaths": [
"C:\\Users\\Konstantin\\AppData\\Roaming\\NuGet\\NuGet.Config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
],
"originalTargetFrameworks": [
"net9.0"
],
"sources": {
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"net9.0": {
"targetAlias": "net9.0",
"projectReferences": {
"C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Client\\SZUAbsolventenverein.Module.AdminModules.Client.csproj": {
"projectPath": "C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Client\\SZUAbsolventenverein.Module.AdminModules.Client.csproj"
},
"C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Shared\\SZUAbsolventenverein.Module.AdminModules.Shared.csproj": {
"projectPath": "C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Shared\\SZUAbsolventenverein.Module.AdminModules.Shared.csproj"
}
}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
},
"restoreAuditProperties": {
"enableAudit": "true",
"auditLevel": "low",
"auditMode": "direct"
},
"SdkAnalysisLevel": "9.0.300"
},
"frameworks": {
"net9.0": {
"targetAlias": "net9.0",
"dependencies": {
"Microsoft.AspNetCore.Components.WebAssembly.Server": {
"target": "Package",
"version": "[9.0.8, )"
},
"Microsoft.AspNetCore.Identity.EntityFrameworkCore": {
"target": "Package",
"version": "[9.0.8, )"
},
"Microsoft.EntityFrameworkCore": {
"target": "Package",
"version": "[9.0.8, )"
},
"Microsoft.Extensions.Localization": {
"target": "Package",
"version": "[9.0.8, )"
}
},
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48",
"net481"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.305/PortableRuntimeIdentifierGraph.json"
}
}
},
"C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Shared\\SZUAbsolventenverein.Module.AdminModules.Shared.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Shared\\SZUAbsolventenverein.Module.AdminModules.Shared.csproj",
"projectName": "SZUAbsolventenverein.Module.AdminModules.Shared.Oqtane",
"projectPath": "C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Shared\\SZUAbsolventenverein.Module.AdminModules.Shared.csproj",
"packagesPath": "C:\\Users\\Konstantin\\.nuget\\packages\\",
"outputPath": "C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Shared\\obj\\",
"projectStyle": "PackageReference",
"fallbackFolders": [
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
],
"configFilePaths": [
"C:\\Users\\Konstantin\\AppData\\Roaming\\NuGet\\NuGet.Config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
],
"originalTargetFrameworks": [
"net9.0"
],
"sources": {
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"net9.0": {
"targetAlias": "net9.0",
"projectReferences": {}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
},
"restoreAuditProperties": {
"enableAudit": "true",
"auditLevel": "low",
"auditMode": "direct"
},
"SdkAnalysisLevel": "9.0.300"
},
"frameworks": {
"net9.0": {
"targetAlias": "net9.0",
"dependencies": {
"System.ComponentModel.Annotations": {
"target": "Package",
"version": "[5.0.0, )"
}
},
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48",
"net481"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.305/PortableRuntimeIdentifierGraph.json"
}
}
}
}
}

View File

@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
<RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
<ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">$(UserProfile)\.nuget\packages\</NuGetPackageRoot>
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">C:\Users\Konstantin\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages</NuGetPackageFolders>
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">6.14.1</NuGetToolVersion>
</PropertyGroup>
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<SourceRoot Include="C:\Users\Konstantin\.nuget\packages\" />
<SourceRoot Include="C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages\" />
</ItemGroup>
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<Import Project="$(NuGetPackageRoot)microsoft.aspnetcore.components.webassembly.authentication\9.0.8\buildTransitive\Microsoft.AspNetCore.Components.WebAssembly.Authentication.props" Condition="Exists('$(NuGetPackageRoot)microsoft.aspnetcore.components.webassembly.authentication\9.0.8\buildTransitive\Microsoft.AspNetCore.Components.WebAssembly.Authentication.props')" />
<Import Project="$(NuGetPackageRoot)microsoft.entityframeworkcore\9.0.8\buildTransitive\net8.0\Microsoft.EntityFrameworkCore.props" Condition="Exists('$(NuGetPackageRoot)microsoft.entityframeworkcore\9.0.8\buildTransitive\net8.0\Microsoft.EntityFrameworkCore.props')" />
</ImportGroup>
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<PkgMicrosoft_AspNetCore_Components_WebAssembly_Server Condition=" '$(PkgMicrosoft_AspNetCore_Components_WebAssembly_Server)' == '' ">C:\Users\Konstantin\.nuget\packages\microsoft.aspnetcore.components.webassembly.server\9.0.8</PkgMicrosoft_AspNetCore_Components_WebAssembly_Server>
</PropertyGroup>
</Project>

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<Import Project="$(NuGetPackageRoot)microsoft.extensions.options\9.0.8\buildTransitive\net8.0\Microsoft.Extensions.Options.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.options\9.0.8\buildTransitive\net8.0\Microsoft.Extensions.Options.targets')" />
<Import Project="$(NuGetPackageRoot)microsoft.extensions.configuration.binder\9.0.8\buildTransitive\netstandard2.0\Microsoft.Extensions.Configuration.Binder.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.configuration.binder\9.0.8\buildTransitive\netstandard2.0\Microsoft.Extensions.Configuration.Binder.targets')" />
<Import Project="$(NuGetPackageRoot)microsoft.extensions.logging.abstractions\9.0.8\buildTransitive\net8.0\Microsoft.Extensions.Logging.Abstractions.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.logging.abstractions\9.0.8\buildTransitive\net8.0\Microsoft.Extensions.Logging.Abstractions.targets')" />
<Import Project="$(NuGetPackageRoot)microsoft.aspnetcore.components.analyzers\9.0.8\buildTransitive\netstandard2.0\Microsoft.AspNetCore.Components.Analyzers.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.aspnetcore.components.analyzers\9.0.8\buildTransitive\netstandard2.0\Microsoft.AspNetCore.Components.Analyzers.targets')" />
</ImportGroup>
</Project>

File diff suppressed because it is too large Load Diff

8
Package/release.cmd Normal file
View File

@@ -0,0 +1,8 @@
@echo off
set TargetFramework=%1
set ProjectName=%2
del "*.nupkg"
"..\..\oqtane.framework\oqtane.package\FixProps.exe"
"..\..\oqtane.framework\oqtane.package\nuget.exe" pack %ProjectName%.nuspec -Properties targetframework=%TargetFramework%;projectname=%ProjectName%
XCOPY "*.nupkg" "..\..\oqtane.framework\Oqtane.Server\Packages\" /Y

7
Package/release.sh Normal file
View File

@@ -0,0 +1,7 @@
TargetFramework=$1
ProjectName=$2
find . -name "*.nupkg" -delete
"..\..\oqtane.framework\oqtane.package\FixProps.exe"
"..\..\oqtane.framework\oqtane.package\nuget.exe" pack %ProjectName%.nuspec -Properties targetframework=%TargetFramework%;projectname=%ProjectName%
cp -f "*.nupkg" "..\..\oqtane.framework\Oqtane.Server\Packages\"

View File

@@ -0,0 +1,47 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.28621.142
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Oqtane.Server", "..\oqtane.framework\Oqtane.Server\Oqtane.Server.csproj", "{3AB6FCC9-EFEB-4C0E-A2CF-8103914C5196}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SZUAbsolventenverein.Module.AdminModules.Client", "Client\SZUAbsolventenverein.Module.AdminModules.Client.csproj", "{AA8E58A1-CD09-4208-BF66-A8BB341FD669}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SZUAbsolventenverein.Module.AdminModules.Server", "Server\SZUAbsolventenverein.Module.AdminModules.Server.csproj", "{04B05448-788F-433D-92C0-FED35122D45A}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SZUAbsolventenverein.Module.AdminModules.Shared", "Shared\SZUAbsolventenverein.Module.AdminModules.Shared.csproj", "{18D73F73-D7BE-4388-85BA-FBD9AC96FCA2}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SZUAbsolventenverein.Module.AdminModules.Package", "Package\SZUAbsolventenverein.Module.AdminModules.Package.csproj", "{C5CE512D-CBB7-4545-AF0F-9B6591A0C3A7}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{3AB6FCC9-EFEB-4C0E-A2CF-8103914C5196}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3AB6FCC9-EFEB-4C0E-A2CF-8103914C5196}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AA8E58A1-CD09-4208-BF66-A8BB341FD669}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AA8E58A1-CD09-4208-BF66-A8BB341FD669}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AA8E58A1-CD09-4208-BF66-A8BB341FD669}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AA8E58A1-CD09-4208-BF66-A8BB341FD669}.Release|Any CPU.Build.0 = Release|Any CPU
{04B05448-788F-433D-92C0-FED35122D45A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{04B05448-788F-433D-92C0-FED35122D45A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{04B05448-788F-433D-92C0-FED35122D45A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{04B05448-788F-433D-92C0-FED35122D45A}.Release|Any CPU.Build.0 = Release|Any CPU
{18D73F73-D7BE-4388-85BA-FBD9AC96FCA2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{18D73F73-D7BE-4388-85BA-FBD9AC96FCA2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{18D73F73-D7BE-4388-85BA-FBD9AC96FCA2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{18D73F73-D7BE-4388-85BA-FBD9AC96FCA2}.Release|Any CPU.Build.0 = Release|Any CPU
{C5CE512D-CBB7-4545-AF0F-9B6591A0C3A7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C5CE512D-CBB7-4545-AF0F-9B6591A0C3A7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C5CE512D-CBB7-4545-AF0F-9B6591A0C3A7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C5CE512D-CBB7-4545-AF0F-9B6591A0C3A7}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {1D016F15-46FE-4726-8DFD-2E4FD4DC7668}
EndGlobalSection
EndGlobal

4
Server/AssemblyInfo.cs Normal file
View File

@@ -0,0 +1,4 @@
using System.Resources;
using Microsoft.Extensions.Localization;
[assembly: RootNamespace("SZUAbsolventenverein.Module.AdminModules.Server")]

View File

@@ -0,0 +1,132 @@
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Authorization;
using System.Collections.Generic;
using Microsoft.AspNetCore.Http;
using Oqtane.Shared;
using Oqtane.Enums;
using Oqtane.Infrastructure;
using SZUAbsolventenverein.Module.AdminModules.Services;
using Oqtane.Controllers;
using System.Net;
using System.Threading.Tasks;
namespace SZUAbsolventenverein.Module.AdminModules.Controllers
{
[Route(ControllerRoutes.ApiRoute)]
public class AdminModulesController : ModuleControllerBase
{
private readonly IAdminModulesService _AdminModulesService;
public AdminModulesController(IAdminModulesService AdminModulesService, ILogManager logger, IHttpContextAccessor accessor) : base(logger, accessor)
{
_AdminModulesService = AdminModulesService;
}
// GET: api/<controller>?moduleid=x
[HttpGet]
[Authorize(Policy = PolicyNames.ViewModule)]
public async Task<IEnumerable<Models.AdminModules>> Get(string moduleid)
{
int ModuleId;
if (int.TryParse(moduleid, out ModuleId) && IsAuthorizedEntityId(EntityNames.Module, ModuleId))
{
return await _AdminModulesService.GetAdminModulessAsync(ModuleId);
}
else
{
_logger.Log(LogLevel.Error, this, LogFunction.Security, "Unauthorized AdminModules Get Attempt {ModuleId}", moduleid);
HttpContext.Response.StatusCode = (int)HttpStatusCode.Forbidden;
return null;
}
}
// GET api/<controller>/5
[HttpGet("{id}/{moduleid}")]
[Authorize(Policy = PolicyNames.ViewModule)]
public async Task<Models.AdminModules> Get(int id, int moduleid)
{
Models.AdminModules AdminModules = await _AdminModulesService.GetAdminModulesAsync(id, moduleid);
if (AdminModules != null && IsAuthorizedEntityId(EntityNames.Module, AdminModules.ModuleId))
{
return AdminModules;
}
else
{
_logger.Log(LogLevel.Error, this, LogFunction.Security, "Unauthorized AdminModules Get Attempt {AdminModulesId} {ModuleId}", id, moduleid);
HttpContext.Response.StatusCode = (int)HttpStatusCode.Forbidden;
return null;
}
}
// POST api/<controller>
[HttpPost]
[Authorize(Policy = PolicyNames.EditModule)]
public async Task<Models.AdminModules> Post([FromBody] Models.AdminModules AdminModules)
{
if (ModelState.IsValid && IsAuthorizedEntityId(EntityNames.Module, AdminModules.ModuleId))
{
AdminModules = await _AdminModulesService.AddAdminModulesAsync(AdminModules);
}
else
{
_logger.Log(LogLevel.Error, this, LogFunction.Security, "Unauthorized AdminModules Post Attempt {AdminModules}", AdminModules);
HttpContext.Response.StatusCode = (int)HttpStatusCode.Forbidden;
AdminModules = null;
}
return AdminModules;
}
// PUT api/<controller>/5
[HttpPut("{id}")]
[Authorize(Policy = PolicyNames.EditModule)]
public async Task<Models.AdminModules> Put(int id, [FromBody] Models.AdminModules AdminModules)
{
if (ModelState.IsValid && AdminModules.AdminModulesId == id && IsAuthorizedEntityId(EntityNames.Module, AdminModules.ModuleId))
{
AdminModules = await _AdminModulesService.UpdateAdminModulesAsync(AdminModules);
}
else
{
_logger.Log(LogLevel.Error, this, LogFunction.Security, "Unauthorized AdminModules Put Attempt {AdminModules}", AdminModules);
HttpContext.Response.StatusCode = (int)HttpStatusCode.Forbidden;
AdminModules = null;
}
return AdminModules;
}
// DELETE api/<controller>/5
[HttpDelete("{id}/{moduleid}")]
[Authorize(Policy = PolicyNames.EditModule)]
public async Task Delete(int id, int moduleid)
{
Models.AdminModules AdminModules = await _AdminModulesService.GetAdminModulesAsync(id, moduleid);
if (AdminModules != null && IsAuthorizedEntityId(EntityNames.Module, AdminModules.ModuleId))
{
await _AdminModulesService.DeleteAdminModulesAsync(id, AdminModules.ModuleId);
}
else
{
_logger.Log(LogLevel.Error, this, LogFunction.Security, "Unauthorized AdminModules Delete Attempt {AdminModulesId} {ModuleId}", id, moduleid);
HttpContext.Response.StatusCode = (int)HttpStatusCode.Forbidden;
}
}
// GET api/<controller>/5/roles
[HttpGet("roles/{id}")]
[Authorize(Policy = PolicyNames.EditModule)]
public async Task<int> GetUserCount(int id, [FromBody] Models.EmailFields EmailFields)
{
if (ModelState.IsValid && EmailFields.AdminModulesId == id && IsAuthorizedEntityId(EntityNames.Module, EmailFields.ModuleId))
{
return await _AdminModulesService.GetUsercountInRole(EmailFields);
}
else
{
_logger.Log(LogLevel.Error, this, LogFunction.Security, "Unauthorized AdminModules Put Attempt {AdminModules}", EmailFields);
HttpContext.Response.StatusCode = (int)HttpStatusCode.Forbidden;
EmailFields = null;
return -1;
}
}
}
}

View File

@@ -0,0 +1,87 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.Json;
using Oqtane.Modules;
using Oqtane.Models;
using Oqtane.Infrastructure;
using Oqtane.Interfaces;
using Oqtane.Enums;
using Oqtane.Repository;
using SZUAbsolventenverein.Module.AdminModules.Repository;
using System.Threading.Tasks;
namespace SZUAbsolventenverein.Module.AdminModules.Manager
{
public class AdminModulesManager : MigratableModuleBase, IInstallable, IPortable, ISearchable
{
private readonly IAdminModulesRepository _AdminModulesRepository;
private readonly IDBContextDependencies _DBContextDependencies;
public AdminModulesManager(IAdminModulesRepository AdminModulesRepository, IDBContextDependencies DBContextDependencies)
{
_AdminModulesRepository = AdminModulesRepository;
_DBContextDependencies = DBContextDependencies;
}
public bool Install(Tenant tenant, string version)
{
return Migrate(new AdminModulesContext(_DBContextDependencies), tenant, MigrationType.Up);
}
public bool Uninstall(Tenant tenant)
{
return Migrate(new AdminModulesContext(_DBContextDependencies), tenant, MigrationType.Down);
}
public string ExportModule(Oqtane.Models.Module module)
{
string content = "";
List<Models.AdminModules> AdminModuless = _AdminModulesRepository.GetAdminModuless(module.ModuleId).ToList();
if (AdminModuless != null)
{
content = JsonSerializer.Serialize(AdminModuless);
}
return content;
}
public void ImportModule(Oqtane.Models.Module module, string content, string version)
{
List<Models.AdminModules> AdminModuless = null;
if (!string.IsNullOrEmpty(content))
{
AdminModuless = JsonSerializer.Deserialize<List<Models.AdminModules>>(content);
}
if (AdminModuless != null)
{
foreach(var AdminModules in AdminModuless)
{
_AdminModulesRepository.AddAdminModules(new Models.AdminModules { ModuleId = module.ModuleId, Name = AdminModules.Name });
}
}
}
public Task<List<SearchContent>> GetSearchContentsAsync(PageModule pageModule, DateTime lastIndexedOn)
{
var searchContentList = new List<SearchContent>();
foreach (var AdminModules in _AdminModulesRepository.GetAdminModuless(pageModule.ModuleId))
{
if (AdminModules.ModifiedOn >= lastIndexedOn)
{
searchContentList.Add(new SearchContent
{
EntityName = "SZUAbsolventenvereinAdminModules",
EntityId = AdminModules.AdminModulesId.ToString(),
Title = AdminModules.Name,
Body = AdminModules.Name,
ContentModifiedBy = AdminModules.ModifiedBy,
ContentModifiedOn = AdminModules.ModifiedOn
});
}
}
return Task.FromResult(searchContentList);
}
}
}

View File

@@ -0,0 +1,30 @@
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Oqtane.Databases.Interfaces;
using Oqtane.Migrations;
using SZUAbsolventenverein.Module.AdminModules.Migrations.EntityBuilders;
using SZUAbsolventenverein.Module.AdminModules.Repository;
namespace SZUAbsolventenverein.Module.AdminModules.Migrations
{
[DbContext(typeof(AdminModulesContext))]
[Migration("SZUAbsolventenverein.Module.AdminModules.01.00.00.00")]
public class InitializeModule : MultiDatabaseMigration
{
public InitializeModule(IDatabase database) : base(database)
{
}
protected override void Up(MigrationBuilder migrationBuilder)
{
var entityBuilder = new AdminModulesEntityBuilder(migrationBuilder, ActiveDatabase);
entityBuilder.Create();
}
protected override void Down(MigrationBuilder migrationBuilder)
{
var entityBuilder = new AdminModulesEntityBuilder(migrationBuilder, ActiveDatabase);
entityBuilder.Drop();
}
}
}

View File

@@ -0,0 +1,38 @@
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Migrations.Operations;
using Microsoft.EntityFrameworkCore.Migrations.Operations.Builders;
using Oqtane.Databases.Interfaces;
using Oqtane.Migrations;
using Oqtane.Migrations.EntityBuilders;
namespace SZUAbsolventenverein.Module.AdminModules.Migrations.EntityBuilders
{
public class AdminModulesEntityBuilder : AuditableBaseEntityBuilder<AdminModulesEntityBuilder>
{
private const string _entityTableName = "SZUAbsolventenvereinAdminModules";
private readonly PrimaryKey<AdminModulesEntityBuilder> _primaryKey = new("PK_SZUAbsolventenvereinAdminModules", x => x.AdminModulesId);
private readonly ForeignKey<AdminModulesEntityBuilder> _moduleForeignKey = new("FK_SZUAbsolventenvereinAdminModules_Module", x => x.ModuleId, "Module", "ModuleId", ReferentialAction.Cascade);
public AdminModulesEntityBuilder(MigrationBuilder migrationBuilder, IDatabase database) : base(migrationBuilder, database)
{
EntityTableName = _entityTableName;
PrimaryKey = _primaryKey;
ForeignKeys.Add(_moduleForeignKey);
}
protected override AdminModulesEntityBuilder BuildTable(ColumnsBuilder table)
{
AdminModulesId = AddAutoIncrementColumn(table,"AdminModulesId");
ModuleId = AddIntegerColumn(table,"ModuleId");
Name = AddMaxStringColumn(table,"Name");
Content = AddMaxStringColumn(table,"Content");
AddAuditableColumns(table);
return this;
}
public OperationBuilder<AddColumnOperation> AdminModulesId { get; set; }
public OperationBuilder<AddColumnOperation> ModuleId { get; set; }
public OperationBuilder<AddColumnOperation> Name { get; set; }
public OperationBuilder<AddColumnOperation> Content { get; set; }
}
}

View File

@@ -0,0 +1,26 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.AspNetCore.Http;
using Oqtane.Modules;
using Oqtane.Repository;
using Oqtane.Infrastructure;
using Oqtane.Repository.Databases.Interfaces;
namespace SZUAbsolventenverein.Module.AdminModules.Repository
{
public class AdminModulesContext : DBContextBase, ITransientService, IMultiDatabase
{
public virtual DbSet<Models.AdminModules> AdminModules { get; set; }
public AdminModulesContext(IDBContextDependencies DBContextDependencies) : base(DBContextDependencies)
{
// ContextBase handles multi-tenant database connections
}
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
builder.Entity<Models.AdminModules>().ToTable(ActiveDatabase.RewriteName("SZUAbsolventenvereinAdminModules"));
}
}
}

View File

@@ -0,0 +1,75 @@
using Microsoft.EntityFrameworkCore;
using System.Linq;
using System.Collections.Generic;
using Oqtane.Modules;
namespace SZUAbsolventenverein.Module.AdminModules.Repository
{
public interface IAdminModulesRepository
{
IEnumerable<Models.AdminModules> GetAdminModuless(int ModuleId);
Models.AdminModules GetAdminModules(int AdminModulesId);
Models.AdminModules GetAdminModules(int AdminModulesId, bool tracking);
Models.AdminModules AddAdminModules(Models.AdminModules AdminModules);
Models.AdminModules UpdateAdminModules(Models.AdminModules AdminModules);
void DeleteAdminModules(int AdminModulesId);
}
public class AdminModulesRepository : IAdminModulesRepository, ITransientService
{
private readonly IDbContextFactory<AdminModulesContext> _factory;
public AdminModulesRepository(IDbContextFactory<AdminModulesContext> factory)
{
_factory = factory;
}
public IEnumerable<Models.AdminModules> GetAdminModuless(int ModuleId)
{
using var db = _factory.CreateDbContext();
return db.AdminModules.Where(item => item.ModuleId == ModuleId).ToList();
}
public Models.AdminModules GetAdminModules(int AdminModulesId)
{
return GetAdminModules(AdminModulesId, true);
}
public Models.AdminModules GetAdminModules(int AdminModulesId, bool tracking)
{
using var db = _factory.CreateDbContext();
if (tracking)
{
return db.AdminModules.Find(AdminModulesId);
}
else
{
return db.AdminModules.AsNoTracking().FirstOrDefault(item => item.AdminModulesId == AdminModulesId);
}
}
public Models.AdminModules AddAdminModules(Models.AdminModules AdminModules)
{
using var db = _factory.CreateDbContext();
db.AdminModules.Add(AdminModules);
db.SaveChanges();
return AdminModules;
}
public Models.AdminModules UpdateAdminModules(Models.AdminModules AdminModules)
{
using var db = _factory.CreateDbContext();
db.Entry(AdminModules).State = EntityState.Modified;
db.SaveChanges();
return AdminModules;
}
public void DeleteAdminModules(int AdminModulesId)
{
using var db = _factory.CreateDbContext();
Models.AdminModules AdminModules = db.AdminModules.Find(AdminModulesId);
db.AdminModules.Remove(AdminModules);
db.SaveChanges();
}
}
}

View File

@@ -0,0 +1,37 @@
<Project Sdk="Microsoft.NET.Sdk.Razor">
<PropertyGroup>
<TargetFramework>net9.0</TargetFramework>
<AddRazorSupportForMvc>true</AddRazorSupportForMvc>
<Version>1.0.0</Version>
<Product>SZUAbsolventenverein.Module.AdminModules</Product>
<Authors>SZUAbsolventenverein</Authors>
<Company>SZUAbsolventenverein</Company>
<Description>Admin Tools</Description>
<Copyright>SZUAbsolventenverein</Copyright>
<AssemblyName>SZUAbsolventenverein.Module.AdminModules.Server.Oqtane</AssemblyName>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
</PropertyGroup>
<ItemGroup>
<Content Remove="wwwroot\_content\**\*.*" />
<None Include="wwwroot\_content\**\*.*" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="9.0.8" />
<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="9.0.8" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="9.0.8" />
<PackageReference Include="Microsoft.Extensions.Localization" Version="9.0.8" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Client\SZUAbsolventenverein.Module.AdminModules.Client.csproj" />
<ProjectReference Include="..\Shared\SZUAbsolventenverein.Module.AdminModules.Shared.csproj" />
</ItemGroup>
<ItemGroup>
<Reference Include="Oqtane.Server"><HintPath>..\..\oqtane.framework\Oqtane.Server\bin\Debug\net9.0\Oqtane.Server.dll</HintPath></Reference>
<Reference Include="Oqtane.Shared"><HintPath>..\..\oqtane.framework\Oqtane.Server\bin\Debug\net9.0\Oqtane.Shared.dll</HintPath></Reference>
</ItemGroup>
</Project>

View File

@@ -0,0 +1,138 @@
using Microsoft.AspNetCore.Http;
using Oqtane.Enums;
using Oqtane.Extensions;
using Oqtane.Infrastructure;
using Oqtane.Models;
using Oqtane.Repository;
using Oqtane.Security;
using Oqtane.Shared;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Threading.Tasks;
using SZUAbsolventenverein.Module.AdminModules.Models;
using SZUAbsolventenverein.Module.AdminModules.Repository;
namespace SZUAbsolventenverein.Module.AdminModules.Services
{
public class ServerAdminModulesService : IAdminModulesService
{
private readonly IAdminModulesRepository _AdminModulesRepository;
private readonly IUserPermissions _userPermissions;
private readonly IRoleRepository _roleRepository;
private readonly IUserRepository _userRepository;
private readonly IUserRoleRepository _userRoleRepository;
private readonly ILogManager _logger;
private readonly IHttpContextAccessor _accessor;
private readonly Alias _alias;
public ServerAdminModulesService(IAdminModulesRepository AdminModulesRepository, IUserPermissions userPermissions, IRoleRepository roleRepository, IUserRepository userRepository, IUserRoleRepository userRoleRepository, ITenantManager tenantManager, ILogManager logger, IHttpContextAccessor accessor)
{
_AdminModulesRepository = AdminModulesRepository;
_userPermissions = userPermissions;
_roleRepository = roleRepository;
_userRepository = userRepository;
_userRoleRepository = userRoleRepository;
_logger = logger;
_accessor = accessor;
_alias = tenantManager.GetAlias();
}
public Task<List<Models.AdminModules>> GetAdminModulessAsync(int ModuleId)
{
if (_userPermissions.IsAuthorized(_accessor.HttpContext.User, _alias.SiteId, EntityNames.Module, ModuleId, PermissionNames.View))
{
return Task.FromResult(_AdminModulesRepository.GetAdminModuless(ModuleId).ToList());
}
else
{
_logger.Log(LogLevel.Error, this, LogFunction.Security, "Unauthorized AdminModules Get Attempt {ModuleId}", ModuleId);
return null;
}
}
public Task<Models.AdminModules> GetAdminModulesAsync(int AdminModulesId, int ModuleId)
{
if (_userPermissions.IsAuthorized(_accessor.HttpContext.User, _alias.SiteId, EntityNames.Module, ModuleId, PermissionNames.View))
{
return Task.FromResult(_AdminModulesRepository.GetAdminModules(AdminModulesId));
}
else
{
_logger.Log(LogLevel.Error, this, LogFunction.Security, "Unauthorized AdminModules Get Attempt {AdminModulesId} {ModuleId}", AdminModulesId, ModuleId);
return null;
}
}
public Task<Models.AdminModules> AddAdminModulesAsync(Models.AdminModules AdminModules)
{
if (_userPermissions.IsAuthorized(_accessor.HttpContext.User, _alias.SiteId, EntityNames.Module, AdminModules.ModuleId, PermissionNames.Edit))
{
AdminModules = _AdminModulesRepository.AddAdminModules(AdminModules);
_logger.Log(LogLevel.Information, this, LogFunction.Create, "AdminModules Added {AdminModules}", AdminModules);
}
else
{
_logger.Log(LogLevel.Error, this, LogFunction.Security, "Unauthorized AdminModules Add Attempt {AdminModules}", AdminModules);
AdminModules = null;
}
return Task.FromResult(AdminModules);
}
public Task<Models.AdminModules> UpdateAdminModulesAsync(Models.AdminModules AdminModules)
{
if (_userPermissions.IsAuthorized(_accessor.HttpContext.User, _alias.SiteId, EntityNames.Module, AdminModules.ModuleId, PermissionNames.Edit))
{
AdminModules = _AdminModulesRepository.UpdateAdminModules(AdminModules);
_logger.Log(LogLevel.Information, this, LogFunction.Update, "AdminModules Updated {AdminModules}", AdminModules);
}
else
{
_logger.Log(LogLevel.Error, this, LogFunction.Security, "Unauthorized AdminModules Update Attempt {AdminModules}", AdminModules);
AdminModules = null;
}
return Task.FromResult(AdminModules);
}
public Task DeleteAdminModulesAsync(int AdminModulesId, int ModuleId)
{
if (_userPermissions.IsAuthorized(_accessor.HttpContext.User, _alias.SiteId, EntityNames.Module, ModuleId, PermissionNames.Edit))
{
_AdminModulesRepository.DeleteAdminModules(AdminModulesId);
_logger.Log(LogLevel.Information, this, LogFunction.Delete, "AdminModules Deleted {AdminModulesId}", AdminModulesId);
}
else
{
_logger.Log(LogLevel.Error, this, LogFunction.Security, "Unauthorized AdminModules Delete Attempt {AdminModulesId} {ModuleId}", AdminModulesId, ModuleId);
}
return Task.CompletedTask;
}
public Task<int> GetUsercountInRole(EmailFields EmailFields)
{
if (_userPermissions.IsAuthorized(_accessor.HttpContext.User, _alias.SiteId, EntityNames.Module, EmailFields.ModuleId, PermissionNames.View))
{
return Task.FromResult(_userRoleRepository.GetUserRoles(EmailFields.Role.Name, _alias.SiteId).Where(ur => ur.Role == EmailFields.Role).Select(ur => ur.UserId).Distinct().Count());
}
else
{
_logger.Log(LogLevel.Error, this, LogFunction.Security, "Unauthorized AdminModules Get Roles Attempt {AdminModulesId} {ModuleId}", EmailFields.AdminModulesId, EmailFields.ModuleId);
return null;
}
}
public Task<EmailFields> SendMassNotification(EmailFields EmailFields)
{
if (_userPermissions.IsAuthorized(_accessor.HttpContext.User, _alias.SiteId, EntityNames.Module, EmailFields.ModuleId, PermissionNames.View))
{
_userRoleRepository.GetUserRoles(_accessor.HttpContext.User.UserId(), _alias.SiteId).Where(ur => ur.Role == EmailFields.Role).Select(ur => ur.UserId);
return null;
}
else
{
_logger.Log(LogLevel.Error, this, LogFunction.Security, "Unauthorized AdminModules Get Roles Attempt {AdminModulesId} {ModuleId}", EmailFields.AdminModulesId, EmailFields.ModuleId);
return null;
}
}
}
}

View File

@@ -0,0 +1,28 @@
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection;
using Oqtane.Infrastructure;
using SZUAbsolventenverein.Module.AdminModules.Repository;
using SZUAbsolventenverein.Module.AdminModules.Services;
namespace SZUAbsolventenverein.Module.AdminModules.Startup
{
public class ServerStartup : IServerStartup
{
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
// not implemented
}
public void ConfigureMvc(IMvcBuilder mvcBuilder)
{
// not implemented
}
public void ConfigureServices(IServiceCollection services)
{
services.AddTransient<IAdminModulesService, ServerAdminModulesService>();
services.AddDbContextFactory<AdminModulesContext>(opt => { }, ServiceLifetime.Transient);
}
}
}

View File

@@ -0,0 +1,4 @@
// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v9.0", FrameworkDisplayName = ".NET 9.0")]

View File

@@ -0,0 +1 @@
{"GlobalPropertiesHash":"2ilJ2M8+ZdH0swl4cXFj9Ji8kay0R08ISE/fEc+OL0o=","FingerprintPatternsHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["08Xya9u6IUNzOeGEgc4zdd1Hg5y56VW0t7lMcIxBNJw=","BRIlDUau3Zc4UOJw/vQzgn8AWS7v8r1\u002BifBiGxNKAy8=","sF501/zz\u002BnIWQ2QvE48nYHz43WBtom0RNkJH3YrdXMU="],"CachedAssets":{"sF501/zz\u002BnIWQ2QvE48nYHz43WBtom0RNkJH3YrdXMU=":{"Identity":"C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Server\\obj\\Debug\\net9.0\\compressed\\rt007kvfms-r3sb2zw076.gz","SourceId":"SZUAbsolventenverein.Module.AdminModules.Server.Oqtane","SourceType":"Discovered","ContentRoot":"C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Server\\obj\\Debug\\net9.0\\compressed\\","BasePath":"_content/SZUAbsolventenverein.Module.AdminModules.Server.Oqtane","RelativePath":"Module#[.{fingerprint=r3sb2zw076}]?.js.gz","AssetKind":"All","AssetMode":"All","AssetRole":"Alternative","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":"C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Server\\wwwroot\\Module.js","AssetTraitName":"Content-Encoding","AssetTraitValue":"gzip","Fingerprint":"4nbyixhp0t","Integrity":"kMry23BvAUP/fD7ARfFOER5IxAyir7bjEgxrPol8EJU=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Server\\wwwroot\\Module.js","FileLength":97,"LastWriteTime":"2025-10-14T14:52:27.597213+00:00"},"BRIlDUau3Zc4UOJw/vQzgn8AWS7v8r1\u002BifBiGxNKAy8=":{"Identity":"C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Server\\obj\\Debug\\net9.0\\compressed\\goxt6qdqrf-fursb7fvhw.gz","SourceId":"SZUAbsolventenverein.Module.AdminModules.Server.Oqtane","SourceType":"Discovered","ContentRoot":"C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Server\\obj\\Debug\\net9.0\\compressed\\","BasePath":"_content/SZUAbsolventenverein.Module.AdminModules.Server.Oqtane","RelativePath":"Module#[.{fingerprint=fursb7fvhw}]?.css.gz","AssetKind":"All","AssetMode":"All","AssetRole":"Alternative","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":"C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Server\\wwwroot\\Module.css","AssetTraitName":"Content-Encoding","AssetTraitValue":"gzip","Fingerprint":"ccyv3k0uox","Integrity":"ZA1whd6v\u002BNH9oT2VVY4O\u002BS/QSCf/y7Mtl4GSYHNpJMA=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Server\\wwwroot\\Module.css","FileLength":46,"LastWriteTime":"2025-10-14T14:52:27.597213+00:00"},"08Xya9u6IUNzOeGEgc4zdd1Hg5y56VW0t7lMcIxBNJw=":{"Identity":"C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Server\\obj\\Debug\\net9.0\\compressed\\f32kn295nz-gcvjxldlff.gz","SourceId":"Microsoft.AspNetCore.Components.WebAssembly.Authentication","SourceType":"Package","ContentRoot":"C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Server\\obj\\Debug\\net9.0\\compressed\\","BasePath":"_content/Microsoft.AspNetCore.Components.WebAssembly.Authentication","RelativePath":"AuthenticationService.js.gz","AssetKind":"All","AssetMode":"All","AssetRole":"Alternative","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":"C:\\Users\\Konstantin\\.nuget\\packages\\microsoft.aspnetcore.components.webassembly.authentication\\9.0.8\\staticwebassets\\AuthenticationService.js","AssetTraitName":"Content-Encoding","AssetTraitValue":"gzip","Fingerprint":"bl7261sy3y","Integrity":"EcPEzZq/MnP6aPd65UU\u002BhuGs143nnN3gdVpQgChQm8g=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"C:\\Users\\Konstantin\\.nuget\\packages\\microsoft.aspnetcore.components.webassembly.authentication\\9.0.8\\staticwebassets\\AuthenticationService.js","FileLength":74044,"LastWriteTime":"2025-10-14T14:52:27.6145578+00:00"}},"CachedCopyCandidates":{}}

View File

@@ -0,0 +1,23 @@
C:\Users\Konstantin\source\repos\SZUAbsolventenverein.Module.AdminModules\Client\obj\Debug\net9.0\staticwebassets.build.json
C:\Users\Konstantin\source\repos\SZUAbsolventenverein.Module.AdminModules\Client\obj\Debug\net9.0\staticwebassets.build.json
C:\Users\Konstantin\source\repos\SZUAbsolventenverein.Module.AdminModules\Client\obj\Debug\net9.0\staticwebassets.build.json
C:\Users\Konstantin\source\repos\SZUAbsolventenverein.Module.AdminModules\Client\obj\Debug\net9.0\staticwebassets.build.json
C:\Users\Konstantin\source\repos\SZUAbsolventenverein.Module.AdminModules\Client\obj\Debug\net9.0\staticwebassets.build.json
C:\Users\Konstantin\source\repos\SZUAbsolventenverein.Module.AdminModules\Client\obj\Debug\net9.0\staticwebassets.build.json
C:\Users\Konstantin\source\repos\SZUAbsolventenverein.Module.AdminModules\Client\obj\Debug\net9.0\staticwebassets.build.json
C:\Users\Konstantin\source\repos\SZUAbsolventenverein.Module.AdminModules\Client\obj\Debug\net9.0\staticwebassets.build.json
C:\Users\Konstantin\source\repos\SZUAbsolventenverein.Module.AdminModules\Client\obj\Debug\net9.0\staticwebassets.build.json
C:\Users\Konstantin\source\repos\SZUAbsolventenverein.Module.AdminModules\Client\obj\Debug\net9.0\staticwebassets.build.json
C:\Users\Konstantin\source\repos\SZUAbsolventenverein.Module.AdminModules\Client\obj\Debug\net9.0\staticwebassets.build.json
C:\Users\Konstantin\source\repos\SZUAbsolventenverein.Module.AdminModules\Client\obj\Debug\net9.0\staticwebassets.build.json
C:\Users\Konstantin\source\repos\SZUAbsolventenverein.Module.AdminModules\Client\obj\Debug\net9.0\staticwebassets.build.json
C:\Users\Konstantin\source\repos\SZUAbsolventenverein.Module.AdminModules\Client\obj\Debug\net9.0\staticwebassets.build.json
C:\Users\Konstantin\source\repos\SZUAbsolventenverein.Module.AdminModules\Client\obj\Debug\net9.0\staticwebassets.build.json
C:\Users\Konstantin\source\repos\SZUAbsolventenverein.Module.AdminModules\Client\obj\Debug\net9.0\staticwebassets.build.json
C:\Users\Konstantin\source\repos\SZUAbsolventenverein.Module.AdminModules\Client\obj\Debug\net9.0\staticwebassets.build.json
C:\Users\Konstantin\source\repos\SZUAbsolventenverein.Module.AdminModules\Client\obj\Debug\net9.0\staticwebassets.build.json
C:\Users\Konstantin\source\repos\SZUAbsolventenverein.Module.AdminModules\Client\obj\Debug\net9.0\staticwebassets.build.json
C:\Users\Konstantin\source\repos\SZUAbsolventenverein.Module.AdminModules\Client\obj\Debug\net9.0\staticwebassets.build.json
C:\Users\Konstantin\source\repos\SZUAbsolventenverein.Module.AdminModules\Client\obj\Debug\net9.0\staticwebassets.build.json
C:\Users\Konstantin\source\repos\SZUAbsolventenverein.Module.AdminModules\Client\obj\Debug\net9.0\staticwebassets.build.json
C:\Users\Konstantin\source\repos\SZUAbsolventenverein.Module.AdminModules\Client\obj\Debug\net9.0\staticwebassets.build.json

View File

@@ -0,0 +1,260 @@
{
"format": 1,
"restore": {
"C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Server\\SZUAbsolventenverein.Module.AdminModules.Server.csproj": {}
},
"projects": {
"C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Client\\SZUAbsolventenverein.Module.AdminModules.Client.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Client\\SZUAbsolventenverein.Module.AdminModules.Client.csproj",
"projectName": "SZUAbsolventenverein.Module.AdminModules.Client.Oqtane",
"projectPath": "C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Client\\SZUAbsolventenverein.Module.AdminModules.Client.csproj",
"packagesPath": "C:\\Users\\Konstantin\\.nuget\\packages\\",
"outputPath": "C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Client\\obj\\",
"projectStyle": "PackageReference",
"fallbackFolders": [
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
],
"configFilePaths": [
"C:\\Users\\Konstantin\\AppData\\Roaming\\NuGet\\NuGet.Config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
],
"originalTargetFrameworks": [
"net9.0"
],
"sources": {
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"net9.0": {
"targetAlias": "net9.0",
"projectReferences": {
"C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Shared\\SZUAbsolventenverein.Module.AdminModules.Shared.csproj": {
"projectPath": "C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Shared\\SZUAbsolventenverein.Module.AdminModules.Shared.csproj"
}
}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
},
"restoreAuditProperties": {
"enableAudit": "true",
"auditLevel": "low",
"auditMode": "direct"
},
"SdkAnalysisLevel": "9.0.300"
},
"frameworks": {
"net9.0": {
"targetAlias": "net9.0",
"dependencies": {
"Microsoft.AspNetCore.Components.WebAssembly": {
"target": "Package",
"version": "[9.0.8, )"
},
"Microsoft.AspNetCore.Components.WebAssembly.Authentication": {
"target": "Package",
"version": "[9.0.8, )"
},
"Microsoft.Extensions.Http": {
"target": "Package",
"version": "[9.0.8, )"
},
"Microsoft.Extensions.Localization": {
"target": "Package",
"version": "[9.0.8, )"
},
"System.Net.Http.Json": {
"target": "Package",
"version": "[9.0.8, )"
}
},
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48",
"net481"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.305/PortableRuntimeIdentifierGraph.json"
}
}
},
"C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Server\\SZUAbsolventenverein.Module.AdminModules.Server.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Server\\SZUAbsolventenverein.Module.AdminModules.Server.csproj",
"projectName": "SZUAbsolventenverein.Module.AdminModules.Server.Oqtane",
"projectPath": "C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Server\\SZUAbsolventenverein.Module.AdminModules.Server.csproj",
"packagesPath": "C:\\Users\\Konstantin\\.nuget\\packages\\",
"outputPath": "C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Server\\obj\\",
"projectStyle": "PackageReference",
"fallbackFolders": [
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
],
"configFilePaths": [
"C:\\Users\\Konstantin\\AppData\\Roaming\\NuGet\\NuGet.Config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
],
"originalTargetFrameworks": [
"net9.0"
],
"sources": {
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"net9.0": {
"targetAlias": "net9.0",
"projectReferences": {
"C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Client\\SZUAbsolventenverein.Module.AdminModules.Client.csproj": {
"projectPath": "C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Client\\SZUAbsolventenverein.Module.AdminModules.Client.csproj"
},
"C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Shared\\SZUAbsolventenverein.Module.AdminModules.Shared.csproj": {
"projectPath": "C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Shared\\SZUAbsolventenverein.Module.AdminModules.Shared.csproj"
}
}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
},
"restoreAuditProperties": {
"enableAudit": "true",
"auditLevel": "low",
"auditMode": "direct"
},
"SdkAnalysisLevel": "9.0.300"
},
"frameworks": {
"net9.0": {
"targetAlias": "net9.0",
"dependencies": {
"Microsoft.AspNetCore.Components.WebAssembly.Server": {
"target": "Package",
"version": "[9.0.8, )"
},
"Microsoft.AspNetCore.Identity.EntityFrameworkCore": {
"target": "Package",
"version": "[9.0.8, )"
},
"Microsoft.EntityFrameworkCore": {
"target": "Package",
"version": "[9.0.8, )"
},
"Microsoft.Extensions.Localization": {
"target": "Package",
"version": "[9.0.8, )"
}
},
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48",
"net481"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.305/PortableRuntimeIdentifierGraph.json"
}
}
},
"C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Shared\\SZUAbsolventenverein.Module.AdminModules.Shared.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Shared\\SZUAbsolventenverein.Module.AdminModules.Shared.csproj",
"projectName": "SZUAbsolventenverein.Module.AdminModules.Shared.Oqtane",
"projectPath": "C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Shared\\SZUAbsolventenverein.Module.AdminModules.Shared.csproj",
"packagesPath": "C:\\Users\\Konstantin\\.nuget\\packages\\",
"outputPath": "C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Shared\\obj\\",
"projectStyle": "PackageReference",
"fallbackFolders": [
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
],
"configFilePaths": [
"C:\\Users\\Konstantin\\AppData\\Roaming\\NuGet\\NuGet.Config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
],
"originalTargetFrameworks": [
"net9.0"
],
"sources": {
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"net9.0": {
"targetAlias": "net9.0",
"projectReferences": {}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
},
"restoreAuditProperties": {
"enableAudit": "true",
"auditLevel": "low",
"auditMode": "direct"
},
"SdkAnalysisLevel": "9.0.300"
},
"frameworks": {
"net9.0": {
"targetAlias": "net9.0",
"dependencies": {
"System.ComponentModel.Annotations": {
"target": "Package",
"version": "[5.0.0, )"
}
},
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48",
"net481"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.305/PortableRuntimeIdentifierGraph.json"
}
}
}
}
}

View File

@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
<RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
<ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">$(UserProfile)\.nuget\packages\</NuGetPackageRoot>
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">C:\Users\Konstantin\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages</NuGetPackageFolders>
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">6.14.1</NuGetToolVersion>
</PropertyGroup>
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<SourceRoot Include="C:\Users\Konstantin\.nuget\packages\" />
<SourceRoot Include="C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages\" />
</ItemGroup>
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<Import Project="$(NuGetPackageRoot)microsoft.aspnetcore.components.webassembly.authentication\9.0.8\buildTransitive\Microsoft.AspNetCore.Components.WebAssembly.Authentication.props" Condition="Exists('$(NuGetPackageRoot)microsoft.aspnetcore.components.webassembly.authentication\9.0.8\buildTransitive\Microsoft.AspNetCore.Components.WebAssembly.Authentication.props')" />
<Import Project="$(NuGetPackageRoot)microsoft.entityframeworkcore\9.0.8\buildTransitive\net8.0\Microsoft.EntityFrameworkCore.props" Condition="Exists('$(NuGetPackageRoot)microsoft.entityframeworkcore\9.0.8\buildTransitive\net8.0\Microsoft.EntityFrameworkCore.props')" />
</ImportGroup>
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<PkgMicrosoft_AspNetCore_Components_WebAssembly_Server Condition=" '$(PkgMicrosoft_AspNetCore_Components_WebAssembly_Server)' == '' ">C:\Users\Konstantin\.nuget\packages\microsoft.aspnetcore.components.webassembly.server\9.0.8</PkgMicrosoft_AspNetCore_Components_WebAssembly_Server>
</PropertyGroup>
</Project>

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<Import Project="$(NuGetPackageRoot)microsoft.extensions.options\9.0.8\buildTransitive\net8.0\Microsoft.Extensions.Options.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.options\9.0.8\buildTransitive\net8.0\Microsoft.Extensions.Options.targets')" />
<Import Project="$(NuGetPackageRoot)microsoft.extensions.configuration.binder\9.0.8\buildTransitive\netstandard2.0\Microsoft.Extensions.Configuration.Binder.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.configuration.binder\9.0.8\buildTransitive\netstandard2.0\Microsoft.Extensions.Configuration.Binder.targets')" />
<Import Project="$(NuGetPackageRoot)microsoft.extensions.logging.abstractions\9.0.8\buildTransitive\net8.0\Microsoft.Extensions.Logging.Abstractions.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.logging.abstractions\9.0.8\buildTransitive\net8.0\Microsoft.Extensions.Logging.Abstractions.targets')" />
<Import Project="$(NuGetPackageRoot)microsoft.aspnetcore.components.analyzers\9.0.8\buildTransitive\netstandard2.0\Microsoft.AspNetCore.Components.Analyzers.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.aspnetcore.components.analyzers\9.0.8\buildTransitive\netstandard2.0\Microsoft.AspNetCore.Components.Analyzers.targets')" />
<Import Project="$(NuGetPackageRoot)microsoft.aspnetcore.components.webassembly.server\9.0.8\build\Microsoft.AspNetCore.Components.WebAssembly.Server.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.aspnetcore.components.webassembly.server\9.0.8\build\Microsoft.AspNetCore.Components.WebAssembly.Server.targets')" />
</ImportGroup>
</Project>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1 @@
/* Module Custom Styles */

5
Server/wwwroot/Module.js Normal file
View File

@@ -0,0 +1,5 @@
/* Module Script */
var SZUAbsolventenverein = SZUAbsolventenverein || {};
SZUAbsolventenverein.AdminModules = {
};

View File

@@ -0,0 +1,22 @@
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using Oqtane.Models;
namespace SZUAbsolventenverein.Module.AdminModules.Models
{
[Table("SZUAbsolventenvereinAdminModules")]
public class AdminModules : IAuditable
{
[Key]
public int AdminModulesId { get; set; }
public int ModuleId { get; set; }
public string Name { get; set; }
public string Content { get; set; }
public string CreatedBy { get; set; }
public DateTime CreatedOn { get; set; }
public string ModifiedBy { get; set; }
public DateTime ModifiedOn { get; set; }
}
}

View File

@@ -0,0 +1,15 @@
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using Oqtane.Models;
namespace SZUAbsolventenverein.Module.AdminModules.Models
{
public class EmailFields
{
public int AdminModulesId { get; set; }
public int ModuleId { get; set; }
public Role Role { get; set; }
public string Content { get; set; }
}
}

View File

@@ -0,0 +1,22 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net9.0</TargetFramework>
<Version>1.0.0</Version>
<Product>SZUAbsolventenverein.Module.AdminModules</Product>
<Authors>SZUAbsolventenverein</Authors>
<Company>SZUAbsolventenverein</Company>
<Description>Admin Tools</Description>
<Copyright>SZUAbsolventenverein</Copyright>
<AssemblyName>SZUAbsolventenverein.Module.AdminModules.Shared.Oqtane</AssemblyName>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="System.ComponentModel.Annotations" Version="5.0.0" />
</ItemGroup>
<ItemGroup>
<Reference Include="Oqtane.Shared"><HintPath>..\..\oqtane.framework\Oqtane.Server\bin\Debug\net9.0\Oqtane.Shared.dll</HintPath></Reference>
</ItemGroup>
</Project>

View File

@@ -0,0 +1,4 @@
// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v9.0", FrameworkDisplayName = ".NET 9.0")]

View File

@@ -0,0 +1,79 @@
{
"format": 1,
"restore": {
"C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Shared\\SZUAbsolventenverein.Module.AdminModules.Shared.csproj": {}
},
"projects": {
"C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Shared\\SZUAbsolventenverein.Module.AdminModules.Shared.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Shared\\SZUAbsolventenverein.Module.AdminModules.Shared.csproj",
"projectName": "SZUAbsolventenverein.Module.AdminModules.Shared.Oqtane",
"projectPath": "C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Shared\\SZUAbsolventenverein.Module.AdminModules.Shared.csproj",
"packagesPath": "C:\\Users\\Konstantin\\.nuget\\packages\\",
"outputPath": "C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Shared\\obj\\",
"projectStyle": "PackageReference",
"fallbackFolders": [
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
],
"configFilePaths": [
"C:\\Users\\Konstantin\\AppData\\Roaming\\NuGet\\NuGet.Config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
],
"originalTargetFrameworks": [
"net9.0"
],
"sources": {
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"net9.0": {
"targetAlias": "net9.0",
"projectReferences": {}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
},
"restoreAuditProperties": {
"enableAudit": "true",
"auditLevel": "low",
"auditMode": "direct"
},
"SdkAnalysisLevel": "9.0.300"
},
"frameworks": {
"net9.0": {
"targetAlias": "net9.0",
"dependencies": {
"System.ComponentModel.Annotations": {
"target": "Package",
"version": "[5.0.0, )"
}
},
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48",
"net481"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.305/PortableRuntimeIdentifierGraph.json"
}
}
}
}
}

View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
<RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
<ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">$(UserProfile)\.nuget\packages\</NuGetPackageRoot>
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">C:\Users\Konstantin\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages</NuGetPackageFolders>
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">6.14.1</NuGetToolVersion>
</PropertyGroup>
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<SourceRoot Include="C:\Users\Konstantin\.nuget\packages\" />
<SourceRoot Include="C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages\" />
</ItemGroup>
</Project>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />

View File

@@ -0,0 +1,192 @@
{
"version": 3,
"targets": {
"net9.0": {
"System.ComponentModel.Annotations/5.0.0": {
"type": "package",
"compile": {
"ref/netstandard2.1/System.ComponentModel.Annotations.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/netstandard2.1/System.ComponentModel.Annotations.dll": {
"related": ".xml"
}
}
}
}
},
"libraries": {
"System.ComponentModel.Annotations/5.0.0": {
"sha512": "dMkqfy2el8A8/I76n2Hi1oBFEbG1SfxD2l5nhwXV3XjlnOmwxJlQbYpJH4W51odnU9sARCSAgv7S3CyAFMkpYg==",
"type": "package",
"path": "system.componentmodel.annotations/5.0.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
"LICENSE.TXT",
"THIRD-PARTY-NOTICES.TXT",
"lib/MonoAndroid10/_._",
"lib/MonoTouch10/_._",
"lib/net45/_._",
"lib/net461/System.ComponentModel.Annotations.dll",
"lib/netcore50/System.ComponentModel.Annotations.dll",
"lib/netstandard1.4/System.ComponentModel.Annotations.dll",
"lib/netstandard2.0/System.ComponentModel.Annotations.dll",
"lib/netstandard2.1/System.ComponentModel.Annotations.dll",
"lib/netstandard2.1/System.ComponentModel.Annotations.xml",
"lib/portable-net45+win8/_._",
"lib/win8/_._",
"lib/xamarinios10/_._",
"lib/xamarinmac20/_._",
"lib/xamarintvos10/_._",
"lib/xamarinwatchos10/_._",
"ref/MonoAndroid10/_._",
"ref/MonoTouch10/_._",
"ref/net45/_._",
"ref/net461/System.ComponentModel.Annotations.dll",
"ref/net461/System.ComponentModel.Annotations.xml",
"ref/netcore50/System.ComponentModel.Annotations.dll",
"ref/netcore50/System.ComponentModel.Annotations.xml",
"ref/netcore50/de/System.ComponentModel.Annotations.xml",
"ref/netcore50/es/System.ComponentModel.Annotations.xml",
"ref/netcore50/fr/System.ComponentModel.Annotations.xml",
"ref/netcore50/it/System.ComponentModel.Annotations.xml",
"ref/netcore50/ja/System.ComponentModel.Annotations.xml",
"ref/netcore50/ko/System.ComponentModel.Annotations.xml",
"ref/netcore50/ru/System.ComponentModel.Annotations.xml",
"ref/netcore50/zh-hans/System.ComponentModel.Annotations.xml",
"ref/netcore50/zh-hant/System.ComponentModel.Annotations.xml",
"ref/netstandard1.1/System.ComponentModel.Annotations.dll",
"ref/netstandard1.1/System.ComponentModel.Annotations.xml",
"ref/netstandard1.1/de/System.ComponentModel.Annotations.xml",
"ref/netstandard1.1/es/System.ComponentModel.Annotations.xml",
"ref/netstandard1.1/fr/System.ComponentModel.Annotations.xml",
"ref/netstandard1.1/it/System.ComponentModel.Annotations.xml",
"ref/netstandard1.1/ja/System.ComponentModel.Annotations.xml",
"ref/netstandard1.1/ko/System.ComponentModel.Annotations.xml",
"ref/netstandard1.1/ru/System.ComponentModel.Annotations.xml",
"ref/netstandard1.1/zh-hans/System.ComponentModel.Annotations.xml",
"ref/netstandard1.1/zh-hant/System.ComponentModel.Annotations.xml",
"ref/netstandard1.3/System.ComponentModel.Annotations.dll",
"ref/netstandard1.3/System.ComponentModel.Annotations.xml",
"ref/netstandard1.3/de/System.ComponentModel.Annotations.xml",
"ref/netstandard1.3/es/System.ComponentModel.Annotations.xml",
"ref/netstandard1.3/fr/System.ComponentModel.Annotations.xml",
"ref/netstandard1.3/it/System.ComponentModel.Annotations.xml",
"ref/netstandard1.3/ja/System.ComponentModel.Annotations.xml",
"ref/netstandard1.3/ko/System.ComponentModel.Annotations.xml",
"ref/netstandard1.3/ru/System.ComponentModel.Annotations.xml",
"ref/netstandard1.3/zh-hans/System.ComponentModel.Annotations.xml",
"ref/netstandard1.3/zh-hant/System.ComponentModel.Annotations.xml",
"ref/netstandard1.4/System.ComponentModel.Annotations.dll",
"ref/netstandard1.4/System.ComponentModel.Annotations.xml",
"ref/netstandard1.4/de/System.ComponentModel.Annotations.xml",
"ref/netstandard1.4/es/System.ComponentModel.Annotations.xml",
"ref/netstandard1.4/fr/System.ComponentModel.Annotations.xml",
"ref/netstandard1.4/it/System.ComponentModel.Annotations.xml",
"ref/netstandard1.4/ja/System.ComponentModel.Annotations.xml",
"ref/netstandard1.4/ko/System.ComponentModel.Annotations.xml",
"ref/netstandard1.4/ru/System.ComponentModel.Annotations.xml",
"ref/netstandard1.4/zh-hans/System.ComponentModel.Annotations.xml",
"ref/netstandard1.4/zh-hant/System.ComponentModel.Annotations.xml",
"ref/netstandard2.0/System.ComponentModel.Annotations.dll",
"ref/netstandard2.0/System.ComponentModel.Annotations.xml",
"ref/netstandard2.1/System.ComponentModel.Annotations.dll",
"ref/netstandard2.1/System.ComponentModel.Annotations.xml",
"ref/portable-net45+win8/_._",
"ref/win8/_._",
"ref/xamarinios10/_._",
"ref/xamarinmac20/_._",
"ref/xamarintvos10/_._",
"ref/xamarinwatchos10/_._",
"system.componentmodel.annotations.5.0.0.nupkg.sha512",
"system.componentmodel.annotations.nuspec",
"useSharedDesignerContext.txt",
"version.txt"
]
}
},
"projectFileDependencyGroups": {
"net9.0": [
"System.ComponentModel.Annotations >= 5.0.0"
]
},
"packageFolders": {
"C:\\Users\\Konstantin\\.nuget\\packages\\": {},
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages": {}
},
"project": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Shared\\SZUAbsolventenverein.Module.AdminModules.Shared.csproj",
"projectName": "SZUAbsolventenverein.Module.AdminModules.Shared.Oqtane",
"projectPath": "C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Shared\\SZUAbsolventenverein.Module.AdminModules.Shared.csproj",
"packagesPath": "C:\\Users\\Konstantin\\.nuget\\packages\\",
"outputPath": "C:\\Users\\Konstantin\\source\\repos\\SZUAbsolventenverein.Module.AdminModules\\Shared\\obj\\",
"projectStyle": "PackageReference",
"fallbackFolders": [
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
],
"configFilePaths": [
"C:\\Users\\Konstantin\\AppData\\Roaming\\NuGet\\NuGet.Config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
],
"originalTargetFrameworks": [
"net9.0"
],
"sources": {
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"net9.0": {
"targetAlias": "net9.0",
"projectReferences": {}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
},
"restoreAuditProperties": {
"enableAudit": "true",
"auditLevel": "low",
"auditMode": "direct"
},
"SdkAnalysisLevel": "9.0.300"
},
"frameworks": {
"net9.0": {
"targetAlias": "net9.0",
"dependencies": {
"System.ComponentModel.Annotations": {
"target": "Package",
"version": "[5.0.0, )"
}
},
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48",
"net481"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.305/PortableRuntimeIdentifierGraph.json"
}
}
}
}

6
template.json Normal file
View File

@@ -0,0 +1,6 @@
{
"Title": "Default Module Template",
"Type": "External",
"Version": "5.2.0",
"Namespace": "SZUAbsolventenverein.Module.AdminModules"
}