diff --git a/.gitignore b/.gitignore
index 9491a2f..1a12f7a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -360,4 +360,17 @@ MigrationBackup/
.ionide/
# Fody - auto-generated XML schema
-FodyWeavers.xsd
\ No newline at end of file
+FodyWeavers.xsd
+
+# Generated deployment archives and shortcuts
+/Deploy/Generated/
+
+# Generated database source snapshots
+/Database/Generated/
+
+# NuGet cache metadata and local source shortcuts
+**/.nupkg.metadata
+**/.signature.p7s
+**/*.nupkg.sha512
+**/*.lnk
+**/*.url
diff --git a/AGENTS.md b/AGENTS.md
new file mode 100644
index 0000000..d47a062
--- /dev/null
+++ b/AGENTS.md
@@ -0,0 +1,42 @@
+# Repository Guidelines
+
+## Project Structure
+
+`Workspace/Saxonite.sln` contains the Saxonite applications, libraries, and tests. `Assets` and other repository-level materials are outside `Workspace`. The solution consumes projects from the sibling `../../Common-VS/Workspace`; preserve this relative layout and read Common's repository guidance when changing shared dependencies or APIs. The parent workspace map at `../../AGENTS.md` is informational; repository instructions and trackers govern this repository.
+
+## Build and Validation
+
+Run commands from `Workspace`:
+
+```powershell
+dotnet restore Saxonite.sln
+dotnet build Saxonite.sln --configuration Debug
+dotnet test Saxonite.sln --configuration Debug
+```
+
+For Common API, framework, package, or shared-behavior changes, validate Common first, then Saxonite. Coordinate framework upgrades across the dependency boundary. Report any unavailable platform, database, or machine configuration separately from source failures.
+
+## Coding and File Conventions
+
+Follow the existing C# style and this repository's `.gitattributes`. Follow shared file-editing guidance at `../../Common-VS/Workspace/docs/instructions/file-editing-conventions.md`. Do not edit generated files or build output under `bin`, `obj`, or `TestResults`. Keep machine-specific configuration and credentials out of source control.
+
+## Conversation Tracking
+
+Read `docs/README.md`, `docs/topics.md`, and `docs/component-reviews.md` before repository review or follow-up work. Update the trackers when work is identified, started, completed, or a component is reviewed. Use ISO `YYYY-MM-DD` dates and repository-relative links.
+
+## Branches and Pull Requests
+
+- Use short-lived feature branches targeting `master`. Do not create or maintain a shared `develop` branch. Push feature branches and use pull requests; do not push directly to `master`, force-push, or rewrite its history.
+- Before creating a pull request, prepare a concise proposed title and description and ask the user to confirm both. The description starts with a 2–3 sentence summary, followed by short bullets for significant files, file groups, or folders. Omit minor cleanup and cosmetic changes.
+- For functional pull requests, propose incrementing Saxonite's application patch version and obtain the user's confirmation before applying it. The application version is the first three components of `Sax.Version` in `Workspace/SaxoniteStandardBase/Base/App/Sax-Version.cs`; synchronize that value and add the release entry to `Workspace/SaxoniteStandardBase/Resources/Data/Application/VersionHistory.json`. Prefix the confirmed title with `vX.Y.Z ` and end the description with `Application version: X.Y.Z`. Documentation/process-only pull requests do not need a version prefix and use `—` as the tracker version.
+- Do not merge a pull request unless the user asks. After merge, remove its local feature branch; remove the remote branch if the hosting service has not already done so.
+- Before completing or merging a pull request, move its active topic to Completed Topics and record the PR number, confirmed application version (or `—`), and the actual date the work became ready for PR completion. Show the proposed tracker change and wait for review before committing it. After approval, commit and push the tracker update separately, verify it is present, and only then proceed with PR completion.
+- Do not require branch protection checks until CI is available and the relevant check has been verified.
+
+## Security Changes
+
+For encryption changes, follow Common's `../../Common-VS/Workspace/.agents/skills/common-security-change/SKILL.md` and `../../Common-VS/Workspace/docs/authenticated-encryption-migration.md`. Preserve fail-closed behavior, purpose separation, expiry checks, and the documented clean-break compatibility consequences.
+
+## Change Discipline
+
+Check Git status before editing and preserve unrelated work. Treat Common and Saxonite as independent repositories. Do not change Common as part of a Saxonite task unless the user explicitly requests it.
diff --git a/Saxonite.sln b/Saxonite.sln
deleted file mode 100644
index 3a38ba2..0000000
--- a/Saxonite.sln
+++ /dev/null
@@ -1,102 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 17
-VisualStudioVersion = 17.7.34202.233
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SaxoniteCoreWebAdmin", "SaxoniteCoreWebAdmin\SaxoniteCoreWebAdmin.csproj", "{F646283D-F7C2-42DD-AB1E-E741455664BD}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SaxoniteStandardDbas", "SaxoniteStandardDbas\SaxoniteStandardDbas.csproj", "{DA383586-69E3-40EB-A20D-AC1AD24E336C}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SaxoniteStandardBase", "SaxoniteStandardBase\SaxoniteStandardBase.csproj", "{38FBE932-C1D0-4A28-9172-1466347FD62B}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SacsStandardBase", "..\..\Common-VS\Workspace\SacsStandardBase\SacsStandardBase.csproj", "{9C5309DA-3205-4423-BE13-923EE61370A6}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SacsStandardDbas", "..\..\Common-VS\Workspace\SacsStandardDbas\SacsStandardDbas.csproj", "{E211FE36-108E-4D07-BD30-799A156DDDBB}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SaxoniteStandardMob", "SaxoniteStandardMob\SaxoniteStandardMob.csproj", "{89CFDAA1-15C9-45CF-8FBF-88E36E0E32CF}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SaxoniteCoreWeb", "SaxoniteCoreWeb\SaxoniteCoreWeb.csproj", "{CFF91B48-04B7-4075-A5B2-FF3FC0B22BC1}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SaxoniteCoreWebOnline", "SaxoniteCoreWebOnline\SaxoniteCoreWebOnline.csproj", "{C1A3E949-B5EA-4A77-9411-5D8B350056D6}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SacsCoreWeb", "..\..\Common-VS\Workspace\SacsCoreWeb\SacsCoreWeb.csproj", "{BBEEBD5B-7D00-4024-9626-D8B2FBF248A4}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SaxoniteCoreUnitTests", "SaxoniteCoreUnitTests\SaxoniteCoreUnitTests.csproj", "{CA680625-E334-4F76-881B-1327A2F9FE86}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution files", "Solution files", "{BD66A338-2D41-4B64-86B0-670F4F42A489}"
- ProjectSection(SolutionItems) = preProject
- ReadMe.md = ReadMe.md
- EndProjectSection
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SaxoniteCoreUnitTestsOnline", "SaxoniteCoreUnitTestsOnline\SaxoniteCoreUnitTestsOnline.csproj", "{303BA8E9-1B95-41AD-9F51-32037A22C908}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SacsStandardProc", "..\..\Common-VS\Workspace\SacsStandardProc\SacsStandardProc.csproj", "{E012B3D3-CF4D-4C2E-ABC6-9E3A3DAE03C5}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SaxoniteWebApi", "SaxoniteWebApi\SaxoniteWebApi.csproj", "{3E1C2BE2-46C8-4D1D-A1C2-806BB1AD8A7E}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Any CPU = Debug|Any CPU
- Release|Any CPU = Release|Any CPU
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {F646283D-F7C2-42DD-AB1E-E741455664BD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {F646283D-F7C2-42DD-AB1E-E741455664BD}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {F646283D-F7C2-42DD-AB1E-E741455664BD}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {F646283D-F7C2-42DD-AB1E-E741455664BD}.Release|Any CPU.Build.0 = Release|Any CPU
- {DA383586-69E3-40EB-A20D-AC1AD24E336C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {DA383586-69E3-40EB-A20D-AC1AD24E336C}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {DA383586-69E3-40EB-A20D-AC1AD24E336C}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {DA383586-69E3-40EB-A20D-AC1AD24E336C}.Release|Any CPU.Build.0 = Release|Any CPU
- {38FBE932-C1D0-4A28-9172-1466347FD62B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {38FBE932-C1D0-4A28-9172-1466347FD62B}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {38FBE932-C1D0-4A28-9172-1466347FD62B}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {38FBE932-C1D0-4A28-9172-1466347FD62B}.Release|Any CPU.Build.0 = Release|Any CPU
- {9C5309DA-3205-4423-BE13-923EE61370A6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {9C5309DA-3205-4423-BE13-923EE61370A6}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {9C5309DA-3205-4423-BE13-923EE61370A6}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {9C5309DA-3205-4423-BE13-923EE61370A6}.Release|Any CPU.Build.0 = Release|Any CPU
- {E211FE36-108E-4D07-BD30-799A156DDDBB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {E211FE36-108E-4D07-BD30-799A156DDDBB}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {E211FE36-108E-4D07-BD30-799A156DDDBB}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {E211FE36-108E-4D07-BD30-799A156DDDBB}.Release|Any CPU.Build.0 = Release|Any CPU
- {89CFDAA1-15C9-45CF-8FBF-88E36E0E32CF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {89CFDAA1-15C9-45CF-8FBF-88E36E0E32CF}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {89CFDAA1-15C9-45CF-8FBF-88E36E0E32CF}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {89CFDAA1-15C9-45CF-8FBF-88E36E0E32CF}.Release|Any CPU.Build.0 = Release|Any CPU
- {CFF91B48-04B7-4075-A5B2-FF3FC0B22BC1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {CFF91B48-04B7-4075-A5B2-FF3FC0B22BC1}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {CFF91B48-04B7-4075-A5B2-FF3FC0B22BC1}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {CFF91B48-04B7-4075-A5B2-FF3FC0B22BC1}.Release|Any CPU.Build.0 = Release|Any CPU
- {C1A3E949-B5EA-4A77-9411-5D8B350056D6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {C1A3E949-B5EA-4A77-9411-5D8B350056D6}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {C1A3E949-B5EA-4A77-9411-5D8B350056D6}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {C1A3E949-B5EA-4A77-9411-5D8B350056D6}.Release|Any CPU.Build.0 = Release|Any CPU
- {BBEEBD5B-7D00-4024-9626-D8B2FBF248A4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {BBEEBD5B-7D00-4024-9626-D8B2FBF248A4}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {BBEEBD5B-7D00-4024-9626-D8B2FBF248A4}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {BBEEBD5B-7D00-4024-9626-D8B2FBF248A4}.Release|Any CPU.Build.0 = Release|Any CPU
- {CA680625-E334-4F76-881B-1327A2F9FE86}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {CA680625-E334-4F76-881B-1327A2F9FE86}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {CA680625-E334-4F76-881B-1327A2F9FE86}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {CA680625-E334-4F76-881B-1327A2F9FE86}.Release|Any CPU.Build.0 = Release|Any CPU
- {303BA8E9-1B95-41AD-9F51-32037A22C908}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {303BA8E9-1B95-41AD-9F51-32037A22C908}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {303BA8E9-1B95-41AD-9F51-32037A22C908}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {303BA8E9-1B95-41AD-9F51-32037A22C908}.Release|Any CPU.Build.0 = Release|Any CPU
- {E012B3D3-CF4D-4C2E-ABC6-9E3A3DAE03C5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {E012B3D3-CF4D-4C2E-ABC6-9E3A3DAE03C5}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {E012B3D3-CF4D-4C2E-ABC6-9E3A3DAE03C5}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {E012B3D3-CF4D-4C2E-ABC6-9E3A3DAE03C5}.Release|Any CPU.Build.0 = Release|Any CPU
- {3E1C2BE2-46C8-4D1D-A1C2-806BB1AD8A7E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {3E1C2BE2-46C8-4D1D-A1C2-806BB1AD8A7E}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {3E1C2BE2-46C8-4D1D-A1C2-806BB1AD8A7E}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {3E1C2BE2-46C8-4D1D-A1C2-806BB1AD8A7E}.Release|Any CPU.Build.0 = Release|Any CPU
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
- GlobalSection(ExtensibilityGlobals) = postSolution
- SolutionGuid = {0DFC2321-53B9-493B-83D3-2ACD1C47C732}
- EndGlobalSection
-EndGlobal
diff --git a/SaxoniteCoreUnitTests/SaxoniteCoreUnitTests.csproj b/SaxoniteCoreUnitTests/SaxoniteCoreUnitTests.csproj
deleted file mode 100644
index 850e083..0000000
--- a/SaxoniteCoreUnitTests/SaxoniteCoreUnitTests.csproj
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
- net6.0
-
- false
-
- Saxonite.Net.Core
-
-
-
-
-
-
-
-
- all
- runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/SaxoniteCoreUnitTests/UnitTests/Data/Population/SaxoniteRegionPopulation_Tester.cs b/SaxoniteCoreUnitTests/UnitTests/Data/Population/SaxoniteRegionPopulation_Tester.cs
deleted file mode 100644
index b28b107..0000000
--- a/SaxoniteCoreUnitTests/UnitTests/Data/Population/SaxoniteRegionPopulation_Tester.cs
+++ /dev/null
@@ -1,14 +0,0 @@
-using Microsoft.VisualStudio.TestTools.UnitTesting;
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace Saxonite.Net.Core.UnitTests.Data.Population
-{
- //=======================================================================
- [TestClass]
- public class SaxoniteRegionPopulation_Tester
- {
- }
- //=======================================================================
-}
diff --git a/SaxoniteCoreUnitTestsOnline/SaxoniteCoreUnitTestsOnline.csproj b/SaxoniteCoreUnitTestsOnline/SaxoniteCoreUnitTestsOnline.csproj
deleted file mode 100644
index b4637c2..0000000
--- a/SaxoniteCoreUnitTestsOnline/SaxoniteCoreUnitTestsOnline.csproj
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
- net6.0
-
- false
-
- Saxonite.Net.Core
-
-
-
-
-
-
-
-
- all
- runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/SaxoniteCoreWebAdmin/Views/Shared/_GoogleAnalytics.cshtml b/SaxoniteCoreWebAdmin/Views/Shared/_GoogleAnalytics.cshtml
deleted file mode 100644
index 6fc5754..0000000
--- a/SaxoniteCoreWebAdmin/Views/Shared/_GoogleAnalytics.cshtml
+++ /dev/null
@@ -1 +0,0 @@
-
Google Analytics
\ No newline at end of file
diff --git a/SaxoniteCoreWebAdmin/Views/_ViewStart.cshtml b/SaxoniteCoreWebAdmin/Views/_ViewStart.cshtml
deleted file mode 100644
index fcb0d94..0000000
--- a/SaxoniteCoreWebAdmin/Views/_ViewStart.cshtml
+++ /dev/null
@@ -1,4 +0,0 @@
-@inject Saxonite.Net.Core.Web.Base.App.SaxLocaliser Localiser
-@{
- Layout = "_Layout";
-}
diff --git a/SaxoniteCoreWebOnline/Views/Shared/_GoogleAnalytics.cshtml b/SaxoniteCoreWebOnline/Views/Shared/_GoogleAnalytics.cshtml
deleted file mode 100644
index 6fc5754..0000000
--- a/SaxoniteCoreWebOnline/Views/Shared/_GoogleAnalytics.cshtml
+++ /dev/null
@@ -1 +0,0 @@
-Google Analytics
\ No newline at end of file
diff --git a/SaxoniteCoreWebOnline/Views/_ViewStart.cshtml b/SaxoniteCoreWebOnline/Views/_ViewStart.cshtml
deleted file mode 100644
index fcb0d94..0000000
--- a/SaxoniteCoreWebOnline/Views/_ViewStart.cshtml
+++ /dev/null
@@ -1,4 +0,0 @@
-@inject Saxonite.Net.Core.Web.Base.App.SaxLocaliser Localiser
-@{
- Layout = "_Layout";
-}
diff --git a/SaxoniteStandardBase/Resources/Data/Application/VersionHistory.json b/SaxoniteStandardBase/Resources/Data/Application/VersionHistory.json
deleted file mode 100644
index d9e82ab..0000000
--- a/SaxoniteStandardBase/Resources/Data/Application/VersionHistory.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "Versions": [
- {
- "On": "2021-05-03",
- "Version": "1.0.0",
- "Topics": [
- "Admin/Online security.",
- "Admin Users, Organisations, Regions, Sports",
- "Online Journalist Articles (header)."
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/Workspace/Saxonite.sln b/Workspace/Saxonite.sln
new file mode 100644
index 0000000..473a505
--- /dev/null
+++ b/Workspace/Saxonite.sln
@@ -0,0 +1,238 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.7.34202.233
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SaxoniteCoreWebAdmin", "SaxoniteCoreWebAdmin\SaxoniteCoreWebAdmin.csproj", "{F646283D-F7C2-42DD-AB1E-E741455664BD}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SaxoniteStandardDbas", "SaxoniteStandardDbas\SaxoniteStandardDbas.csproj", "{DA383586-69E3-40EB-A20D-AC1AD24E336C}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SaxoniteStandardBase", "SaxoniteStandardBase\SaxoniteStandardBase.csproj", "{38FBE932-C1D0-4A28-9172-1466347FD62B}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SacsStandardBase", "..\..\..\Common-VS\Workspace\SacsStandardBase\SacsStandardBase.csproj", "{9C5309DA-3205-4423-BE13-923EE61370A6}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SacsStandardDbas", "..\..\..\Common-VS\Workspace\SacsStandardDbas\SacsStandardDbas.csproj", "{E211FE36-108E-4D07-BD30-799A156DDDBB}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SaxoniteStandardMob", "SaxoniteStandardMob\SaxoniteStandardMob.csproj", "{89CFDAA1-15C9-45CF-8FBF-88E36E0E32CF}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SaxoniteCoreWeb", "SaxoniteCoreWeb\SaxoniteCoreWeb.csproj", "{CFF91B48-04B7-4075-A5B2-FF3FC0B22BC1}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SaxoniteCoreWebOnline", "SaxoniteCoreWebOnline\SaxoniteCoreWebOnline.csproj", "{C1A3E949-B5EA-4A77-9411-5D8B350056D6}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SacsCoreWeb", "..\..\..\Common-VS\Workspace\SacsCoreWeb\SacsCoreWeb.csproj", "{BBEEBD5B-7D00-4024-9626-D8B2FBF248A4}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SaxoniteUnitTestsAdmin", "SaxoniteUnitTestsAdmin\SaxoniteUnitTestsAdmin.csproj", "{CA680625-E334-4F76-881B-1327A2F9FE86}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution files", "Solution files", "{BD66A338-2D41-4B64-86B0-670F4F42A489}"
+ ProjectSection(SolutionItems) = preProject
+ ReadMe.md = ReadMe.md
+ EndProjectSection
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SaxoniteUnitTestsOnline", "SaxoniteUnitTestsOnline\SaxoniteUnitTestsOnline.csproj", "{303BA8E9-1B95-41AD-9F51-32037A22C908}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SacsStandardProc", "..\..\..\Common-VS\Workspace\SacsStandardProc\SacsStandardProc.csproj", "{E012B3D3-CF4D-4C2E-ABC6-9E3A3DAE03C5}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SaxoniteWebApi", "SaxoniteWebApi\SaxoniteWebApi.csproj", "{3E1C2BE2-46C8-4D1D-A1C2-806BB1AD8A7E}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SacsBusinessBase", "..\..\..\Common-VS\Workspace\SacsBusinessBase\SacsBusinessBase.csproj", "{3D3F98C7-F165-45E1-A2B2-773CB0296962}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SaxoniteUnitTestsShared", "SaxoniteUnitTestsShared\SaxoniteUnitTestsShared.csproj", "{EF62BB9D-8FBC-4B83-BC59-CD123A27BB8E}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Debug|x64 = Debug|x64
+ Debug|x86 = Debug|x86
+ Release|Any CPU = Release|Any CPU
+ Release|x64 = Release|x64
+ Release|x86 = Release|x86
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {F646283D-F7C2-42DD-AB1E-E741455664BD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {F646283D-F7C2-42DD-AB1E-E741455664BD}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F646283D-F7C2-42DD-AB1E-E741455664BD}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {F646283D-F7C2-42DD-AB1E-E741455664BD}.Debug|x64.Build.0 = Debug|Any CPU
+ {F646283D-F7C2-42DD-AB1E-E741455664BD}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {F646283D-F7C2-42DD-AB1E-E741455664BD}.Debug|x86.Build.0 = Debug|Any CPU
+ {F646283D-F7C2-42DD-AB1E-E741455664BD}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {F646283D-F7C2-42DD-AB1E-E741455664BD}.Release|Any CPU.Build.0 = Release|Any CPU
+ {F646283D-F7C2-42DD-AB1E-E741455664BD}.Release|x64.ActiveCfg = Release|Any CPU
+ {F646283D-F7C2-42DD-AB1E-E741455664BD}.Release|x64.Build.0 = Release|Any CPU
+ {F646283D-F7C2-42DD-AB1E-E741455664BD}.Release|x86.ActiveCfg = Release|Any CPU
+ {F646283D-F7C2-42DD-AB1E-E741455664BD}.Release|x86.Build.0 = Release|Any CPU
+ {DA383586-69E3-40EB-A20D-AC1AD24E336C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {DA383586-69E3-40EB-A20D-AC1AD24E336C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {DA383586-69E3-40EB-A20D-AC1AD24E336C}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {DA383586-69E3-40EB-A20D-AC1AD24E336C}.Debug|x64.Build.0 = Debug|Any CPU
+ {DA383586-69E3-40EB-A20D-AC1AD24E336C}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {DA383586-69E3-40EB-A20D-AC1AD24E336C}.Debug|x86.Build.0 = Debug|Any CPU
+ {DA383586-69E3-40EB-A20D-AC1AD24E336C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {DA383586-69E3-40EB-A20D-AC1AD24E336C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {DA383586-69E3-40EB-A20D-AC1AD24E336C}.Release|x64.ActiveCfg = Release|Any CPU
+ {DA383586-69E3-40EB-A20D-AC1AD24E336C}.Release|x64.Build.0 = Release|Any CPU
+ {DA383586-69E3-40EB-A20D-AC1AD24E336C}.Release|x86.ActiveCfg = Release|Any CPU
+ {DA383586-69E3-40EB-A20D-AC1AD24E336C}.Release|x86.Build.0 = Release|Any CPU
+ {38FBE932-C1D0-4A28-9172-1466347FD62B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {38FBE932-C1D0-4A28-9172-1466347FD62B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {38FBE932-C1D0-4A28-9172-1466347FD62B}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {38FBE932-C1D0-4A28-9172-1466347FD62B}.Debug|x64.Build.0 = Debug|Any CPU
+ {38FBE932-C1D0-4A28-9172-1466347FD62B}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {38FBE932-C1D0-4A28-9172-1466347FD62B}.Debug|x86.Build.0 = Debug|Any CPU
+ {38FBE932-C1D0-4A28-9172-1466347FD62B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {38FBE932-C1D0-4A28-9172-1466347FD62B}.Release|Any CPU.Build.0 = Release|Any CPU
+ {38FBE932-C1D0-4A28-9172-1466347FD62B}.Release|x64.ActiveCfg = Release|Any CPU
+ {38FBE932-C1D0-4A28-9172-1466347FD62B}.Release|x64.Build.0 = Release|Any CPU
+ {38FBE932-C1D0-4A28-9172-1466347FD62B}.Release|x86.ActiveCfg = Release|Any CPU
+ {38FBE932-C1D0-4A28-9172-1466347FD62B}.Release|x86.Build.0 = Release|Any CPU
+ {9C5309DA-3205-4423-BE13-923EE61370A6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {9C5309DA-3205-4423-BE13-923EE61370A6}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {9C5309DA-3205-4423-BE13-923EE61370A6}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {9C5309DA-3205-4423-BE13-923EE61370A6}.Debug|x64.Build.0 = Debug|Any CPU
+ {9C5309DA-3205-4423-BE13-923EE61370A6}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {9C5309DA-3205-4423-BE13-923EE61370A6}.Debug|x86.Build.0 = Debug|Any CPU
+ {9C5309DA-3205-4423-BE13-923EE61370A6}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {9C5309DA-3205-4423-BE13-923EE61370A6}.Release|Any CPU.Build.0 = Release|Any CPU
+ {9C5309DA-3205-4423-BE13-923EE61370A6}.Release|x64.ActiveCfg = Release|Any CPU
+ {9C5309DA-3205-4423-BE13-923EE61370A6}.Release|x64.Build.0 = Release|Any CPU
+ {9C5309DA-3205-4423-BE13-923EE61370A6}.Release|x86.ActiveCfg = Release|Any CPU
+ {9C5309DA-3205-4423-BE13-923EE61370A6}.Release|x86.Build.0 = Release|Any CPU
+ {E211FE36-108E-4D07-BD30-799A156DDDBB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {E211FE36-108E-4D07-BD30-799A156DDDBB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E211FE36-108E-4D07-BD30-799A156DDDBB}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {E211FE36-108E-4D07-BD30-799A156DDDBB}.Debug|x64.Build.0 = Debug|Any CPU
+ {E211FE36-108E-4D07-BD30-799A156DDDBB}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {E211FE36-108E-4D07-BD30-799A156DDDBB}.Debug|x86.Build.0 = Debug|Any CPU
+ {E211FE36-108E-4D07-BD30-799A156DDDBB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {E211FE36-108E-4D07-BD30-799A156DDDBB}.Release|Any CPU.Build.0 = Release|Any CPU
+ {E211FE36-108E-4D07-BD30-799A156DDDBB}.Release|x64.ActiveCfg = Release|Any CPU
+ {E211FE36-108E-4D07-BD30-799A156DDDBB}.Release|x64.Build.0 = Release|Any CPU
+ {E211FE36-108E-4D07-BD30-799A156DDDBB}.Release|x86.ActiveCfg = Release|Any CPU
+ {E211FE36-108E-4D07-BD30-799A156DDDBB}.Release|x86.Build.0 = Release|Any CPU
+ {89CFDAA1-15C9-45CF-8FBF-88E36E0E32CF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {89CFDAA1-15C9-45CF-8FBF-88E36E0E32CF}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {89CFDAA1-15C9-45CF-8FBF-88E36E0E32CF}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {89CFDAA1-15C9-45CF-8FBF-88E36E0E32CF}.Debug|x64.Build.0 = Debug|Any CPU
+ {89CFDAA1-15C9-45CF-8FBF-88E36E0E32CF}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {89CFDAA1-15C9-45CF-8FBF-88E36E0E32CF}.Debug|x86.Build.0 = Debug|Any CPU
+ {89CFDAA1-15C9-45CF-8FBF-88E36E0E32CF}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {89CFDAA1-15C9-45CF-8FBF-88E36E0E32CF}.Release|Any CPU.Build.0 = Release|Any CPU
+ {89CFDAA1-15C9-45CF-8FBF-88E36E0E32CF}.Release|x64.ActiveCfg = Release|Any CPU
+ {89CFDAA1-15C9-45CF-8FBF-88E36E0E32CF}.Release|x64.Build.0 = Release|Any CPU
+ {89CFDAA1-15C9-45CF-8FBF-88E36E0E32CF}.Release|x86.ActiveCfg = Release|Any CPU
+ {89CFDAA1-15C9-45CF-8FBF-88E36E0E32CF}.Release|x86.Build.0 = Release|Any CPU
+ {CFF91B48-04B7-4075-A5B2-FF3FC0B22BC1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {CFF91B48-04B7-4075-A5B2-FF3FC0B22BC1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {CFF91B48-04B7-4075-A5B2-FF3FC0B22BC1}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {CFF91B48-04B7-4075-A5B2-FF3FC0B22BC1}.Debug|x64.Build.0 = Debug|Any CPU
+ {CFF91B48-04B7-4075-A5B2-FF3FC0B22BC1}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {CFF91B48-04B7-4075-A5B2-FF3FC0B22BC1}.Debug|x86.Build.0 = Debug|Any CPU
+ {CFF91B48-04B7-4075-A5B2-FF3FC0B22BC1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {CFF91B48-04B7-4075-A5B2-FF3FC0B22BC1}.Release|Any CPU.Build.0 = Release|Any CPU
+ {CFF91B48-04B7-4075-A5B2-FF3FC0B22BC1}.Release|x64.ActiveCfg = Release|Any CPU
+ {CFF91B48-04B7-4075-A5B2-FF3FC0B22BC1}.Release|x64.Build.0 = Release|Any CPU
+ {CFF91B48-04B7-4075-A5B2-FF3FC0B22BC1}.Release|x86.ActiveCfg = Release|Any CPU
+ {CFF91B48-04B7-4075-A5B2-FF3FC0B22BC1}.Release|x86.Build.0 = Release|Any CPU
+ {C1A3E949-B5EA-4A77-9411-5D8B350056D6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {C1A3E949-B5EA-4A77-9411-5D8B350056D6}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {C1A3E949-B5EA-4A77-9411-5D8B350056D6}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {C1A3E949-B5EA-4A77-9411-5D8B350056D6}.Debug|x64.Build.0 = Debug|Any CPU
+ {C1A3E949-B5EA-4A77-9411-5D8B350056D6}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {C1A3E949-B5EA-4A77-9411-5D8B350056D6}.Debug|x86.Build.0 = Debug|Any CPU
+ {C1A3E949-B5EA-4A77-9411-5D8B350056D6}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {C1A3E949-B5EA-4A77-9411-5D8B350056D6}.Release|Any CPU.Build.0 = Release|Any CPU
+ {C1A3E949-B5EA-4A77-9411-5D8B350056D6}.Release|x64.ActiveCfg = Release|Any CPU
+ {C1A3E949-B5EA-4A77-9411-5D8B350056D6}.Release|x64.Build.0 = Release|Any CPU
+ {C1A3E949-B5EA-4A77-9411-5D8B350056D6}.Release|x86.ActiveCfg = Release|Any CPU
+ {C1A3E949-B5EA-4A77-9411-5D8B350056D6}.Release|x86.Build.0 = Release|Any CPU
+ {BBEEBD5B-7D00-4024-9626-D8B2FBF248A4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {BBEEBD5B-7D00-4024-9626-D8B2FBF248A4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {BBEEBD5B-7D00-4024-9626-D8B2FBF248A4}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {BBEEBD5B-7D00-4024-9626-D8B2FBF248A4}.Debug|x64.Build.0 = Debug|Any CPU
+ {BBEEBD5B-7D00-4024-9626-D8B2FBF248A4}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {BBEEBD5B-7D00-4024-9626-D8B2FBF248A4}.Debug|x86.Build.0 = Debug|Any CPU
+ {BBEEBD5B-7D00-4024-9626-D8B2FBF248A4}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {BBEEBD5B-7D00-4024-9626-D8B2FBF248A4}.Release|Any CPU.Build.0 = Release|Any CPU
+ {BBEEBD5B-7D00-4024-9626-D8B2FBF248A4}.Release|x64.ActiveCfg = Release|Any CPU
+ {BBEEBD5B-7D00-4024-9626-D8B2FBF248A4}.Release|x64.Build.0 = Release|Any CPU
+ {BBEEBD5B-7D00-4024-9626-D8B2FBF248A4}.Release|x86.ActiveCfg = Release|Any CPU
+ {BBEEBD5B-7D00-4024-9626-D8B2FBF248A4}.Release|x86.Build.0 = Release|Any CPU
+ {CA680625-E334-4F76-881B-1327A2F9FE86}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {CA680625-E334-4F76-881B-1327A2F9FE86}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {CA680625-E334-4F76-881B-1327A2F9FE86}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {CA680625-E334-4F76-881B-1327A2F9FE86}.Debug|x64.Build.0 = Debug|Any CPU
+ {CA680625-E334-4F76-881B-1327A2F9FE86}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {CA680625-E334-4F76-881B-1327A2F9FE86}.Debug|x86.Build.0 = Debug|Any CPU
+ {CA680625-E334-4F76-881B-1327A2F9FE86}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {CA680625-E334-4F76-881B-1327A2F9FE86}.Release|Any CPU.Build.0 = Release|Any CPU
+ {CA680625-E334-4F76-881B-1327A2F9FE86}.Release|x64.ActiveCfg = Release|Any CPU
+ {CA680625-E334-4F76-881B-1327A2F9FE86}.Release|x64.Build.0 = Release|Any CPU
+ {CA680625-E334-4F76-881B-1327A2F9FE86}.Release|x86.ActiveCfg = Release|Any CPU
+ {CA680625-E334-4F76-881B-1327A2F9FE86}.Release|x86.Build.0 = Release|Any CPU
+ {303BA8E9-1B95-41AD-9F51-32037A22C908}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {303BA8E9-1B95-41AD-9F51-32037A22C908}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {303BA8E9-1B95-41AD-9F51-32037A22C908}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {303BA8E9-1B95-41AD-9F51-32037A22C908}.Debug|x64.Build.0 = Debug|Any CPU
+ {303BA8E9-1B95-41AD-9F51-32037A22C908}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {303BA8E9-1B95-41AD-9F51-32037A22C908}.Debug|x86.Build.0 = Debug|Any CPU
+ {303BA8E9-1B95-41AD-9F51-32037A22C908}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {303BA8E9-1B95-41AD-9F51-32037A22C908}.Release|Any CPU.Build.0 = Release|Any CPU
+ {303BA8E9-1B95-41AD-9F51-32037A22C908}.Release|x64.ActiveCfg = Release|Any CPU
+ {303BA8E9-1B95-41AD-9F51-32037A22C908}.Release|x64.Build.0 = Release|Any CPU
+ {303BA8E9-1B95-41AD-9F51-32037A22C908}.Release|x86.ActiveCfg = Release|Any CPU
+ {303BA8E9-1B95-41AD-9F51-32037A22C908}.Release|x86.Build.0 = Release|Any CPU
+ {E012B3D3-CF4D-4C2E-ABC6-9E3A3DAE03C5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {E012B3D3-CF4D-4C2E-ABC6-9E3A3DAE03C5}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E012B3D3-CF4D-4C2E-ABC6-9E3A3DAE03C5}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {E012B3D3-CF4D-4C2E-ABC6-9E3A3DAE03C5}.Debug|x64.Build.0 = Debug|Any CPU
+ {E012B3D3-CF4D-4C2E-ABC6-9E3A3DAE03C5}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {E012B3D3-CF4D-4C2E-ABC6-9E3A3DAE03C5}.Debug|x86.Build.0 = Debug|Any CPU
+ {E012B3D3-CF4D-4C2E-ABC6-9E3A3DAE03C5}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {E012B3D3-CF4D-4C2E-ABC6-9E3A3DAE03C5}.Release|Any CPU.Build.0 = Release|Any CPU
+ {E012B3D3-CF4D-4C2E-ABC6-9E3A3DAE03C5}.Release|x64.ActiveCfg = Release|Any CPU
+ {E012B3D3-CF4D-4C2E-ABC6-9E3A3DAE03C5}.Release|x64.Build.0 = Release|Any CPU
+ {E012B3D3-CF4D-4C2E-ABC6-9E3A3DAE03C5}.Release|x86.ActiveCfg = Release|Any CPU
+ {E012B3D3-CF4D-4C2E-ABC6-9E3A3DAE03C5}.Release|x86.Build.0 = Release|Any CPU
+ {3E1C2BE2-46C8-4D1D-A1C2-806BB1AD8A7E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {3E1C2BE2-46C8-4D1D-A1C2-806BB1AD8A7E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {3E1C2BE2-46C8-4D1D-A1C2-806BB1AD8A7E}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {3E1C2BE2-46C8-4D1D-A1C2-806BB1AD8A7E}.Debug|x64.Build.0 = Debug|Any CPU
+ {3E1C2BE2-46C8-4D1D-A1C2-806BB1AD8A7E}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {3E1C2BE2-46C8-4D1D-A1C2-806BB1AD8A7E}.Debug|x86.Build.0 = Debug|Any CPU
+ {3E1C2BE2-46C8-4D1D-A1C2-806BB1AD8A7E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {3E1C2BE2-46C8-4D1D-A1C2-806BB1AD8A7E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {3E1C2BE2-46C8-4D1D-A1C2-806BB1AD8A7E}.Release|x64.ActiveCfg = Release|Any CPU
+ {3E1C2BE2-46C8-4D1D-A1C2-806BB1AD8A7E}.Release|x64.Build.0 = Release|Any CPU
+ {3E1C2BE2-46C8-4D1D-A1C2-806BB1AD8A7E}.Release|x86.ActiveCfg = Release|Any CPU
+ {3E1C2BE2-46C8-4D1D-A1C2-806BB1AD8A7E}.Release|x86.Build.0 = Release|Any CPU
+ {3D3F98C7-F165-45E1-A2B2-773CB0296962}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {3D3F98C7-F165-45E1-A2B2-773CB0296962}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {3D3F98C7-F165-45E1-A2B2-773CB0296962}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {3D3F98C7-F165-45E1-A2B2-773CB0296962}.Debug|x64.Build.0 = Debug|Any CPU
+ {3D3F98C7-F165-45E1-A2B2-773CB0296962}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {3D3F98C7-F165-45E1-A2B2-773CB0296962}.Debug|x86.Build.0 = Debug|Any CPU
+ {3D3F98C7-F165-45E1-A2B2-773CB0296962}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {3D3F98C7-F165-45E1-A2B2-773CB0296962}.Release|Any CPU.Build.0 = Release|Any CPU
+ {3D3F98C7-F165-45E1-A2B2-773CB0296962}.Release|x64.ActiveCfg = Release|Any CPU
+ {3D3F98C7-F165-45E1-A2B2-773CB0296962}.Release|x64.Build.0 = Release|Any CPU
+ {3D3F98C7-F165-45E1-A2B2-773CB0296962}.Release|x86.ActiveCfg = Release|Any CPU
+ {3D3F98C7-F165-45E1-A2B2-773CB0296962}.Release|x86.Build.0 = Release|Any CPU
+ {EF62BB9D-8FBC-4B83-BC59-CD123A27BB8E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {EF62BB9D-8FBC-4B83-BC59-CD123A27BB8E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {EF62BB9D-8FBC-4B83-BC59-CD123A27BB8E}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {EF62BB9D-8FBC-4B83-BC59-CD123A27BB8E}.Debug|x64.Build.0 = Debug|Any CPU
+ {EF62BB9D-8FBC-4B83-BC59-CD123A27BB8E}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {EF62BB9D-8FBC-4B83-BC59-CD123A27BB8E}.Debug|x86.Build.0 = Debug|Any CPU
+ {EF62BB9D-8FBC-4B83-BC59-CD123A27BB8E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {EF62BB9D-8FBC-4B83-BC59-CD123A27BB8E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {EF62BB9D-8FBC-4B83-BC59-CD123A27BB8E}.Release|x64.ActiveCfg = Release|Any CPU
+ {EF62BB9D-8FBC-4B83-BC59-CD123A27BB8E}.Release|x64.Build.0 = Release|Any CPU
+ {EF62BB9D-8FBC-4B83-BC59-CD123A27BB8E}.Release|x86.ActiveCfg = Release|Any CPU
+ {EF62BB9D-8FBC-4B83-BC59-CD123A27BB8E}.Release|x86.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {0DFC2321-53B9-493B-83D3-2ACD1C47C732}
+ EndGlobalSection
+EndGlobal
diff --git a/SaxoniteCoreWeb/Base/App/SaxAppConfig.cs b/Workspace/SaxoniteCoreWeb/Base/App/SaxAppConfig.cs
similarity index 99%
rename from SaxoniteCoreWeb/Base/App/SaxAppConfig.cs
rename to Workspace/SaxoniteCoreWeb/Base/App/SaxAppConfig.cs
index 421bda4..df5aa72 100644
--- a/SaxoniteCoreWeb/Base/App/SaxAppConfig.cs
+++ b/Workspace/SaxoniteCoreWeb/Base/App/SaxAppConfig.cs
@@ -1,4 +1,4 @@
-using Microsoft.Extensions.Configuration;
+using Microsoft.Extensions.Configuration;
using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Utils;
diff --git a/SaxoniteCoreWeb/Base/App/SaxApplication_Web.cs b/Workspace/SaxoniteCoreWeb/Base/App/SaxApplication_Web.cs
similarity index 99%
rename from SaxoniteCoreWeb/Base/App/SaxApplication_Web.cs
rename to Workspace/SaxoniteCoreWeb/Base/App/SaxApplication_Web.cs
index 9e83679..769291f 100644
--- a/SaxoniteCoreWeb/Base/App/SaxApplication_Web.cs
+++ b/Workspace/SaxoniteCoreWeb/Base/App/SaxApplication_Web.cs
@@ -1,4 +1,4 @@
-using Microsoft.AspNetCore.Hosting;
+using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Sarand.Net.Standard.Base.App;
diff --git a/SaxoniteCoreWeb/Base/App/SaxGlobals_Web.cs b/Workspace/SaxoniteCoreWeb/Base/App/SaxGlobals_Web.cs
similarity index 93%
rename from SaxoniteCoreWeb/Base/App/SaxGlobals_Web.cs
rename to Workspace/SaxoniteCoreWeb/Base/App/SaxGlobals_Web.cs
index ec2aced..5c9fe4c 100644
--- a/SaxoniteCoreWeb/Base/App/SaxGlobals_Web.cs
+++ b/Workspace/SaxoniteCoreWeb/Base/App/SaxGlobals_Web.cs
@@ -1,4 +1,4 @@
-using Saxonite.Net.Standard.Base.Consoles;
+using Saxonite.Net.Standard.Base.Consoles;
using System;
using System.Collections.Generic;
using System.Text;
diff --git a/SaxoniteCoreWeb/Base/App/SaxLocaliser.cs b/Workspace/SaxoniteCoreWeb/Base/App/SaxLocaliser.cs
similarity index 99%
rename from SaxoniteCoreWeb/Base/App/SaxLocaliser.cs
rename to Workspace/SaxoniteCoreWeb/Base/App/SaxLocaliser.cs
index 5935540..84f2767 100644
--- a/SaxoniteCoreWeb/Base/App/SaxLocaliser.cs
+++ b/Workspace/SaxoniteCoreWeb/Base/App/SaxLocaliser.cs
@@ -1,4 +1,4 @@
-using Microsoft.AspNetCore.Html;
+using Microsoft.AspNetCore.Html;
using Microsoft.AspNetCore.Mvc.Localization;
using Microsoft.Extensions.Localization;
using Microsoft.Extensions.Logging;
diff --git a/SaxoniteCoreWeb/Base/App/SaxSessionContext_Web.cs b/Workspace/SaxoniteCoreWeb/Base/App/SaxSessionContext_Web.cs
similarity index 94%
rename from SaxoniteCoreWeb/Base/App/SaxSessionContext_Web.cs
rename to Workspace/SaxoniteCoreWeb/Base/App/SaxSessionContext_Web.cs
index f9c03e6..8e147b5 100644
--- a/SaxoniteCoreWeb/Base/App/SaxSessionContext_Web.cs
+++ b/Workspace/SaxoniteCoreWeb/Base/App/SaxSessionContext_Web.cs
@@ -1,4 +1,4 @@
-using Saxonite.Net.Standard.Base.App;
+using Saxonite.Net.Standard.Base.App;
using System;
using System.Collections.Generic;
using System.Linq;
diff --git a/SaxoniteCoreWeb/Base/App/SaxSessionData_Web.cs b/Workspace/SaxoniteCoreWeb/Base/App/SaxSessionData_Web.cs
similarity index 95%
rename from SaxoniteCoreWeb/Base/App/SaxSessionData_Web.cs
rename to Workspace/SaxoniteCoreWeb/Base/App/SaxSessionData_Web.cs
index 4472a99..7f1bcb6 100644
--- a/SaxoniteCoreWeb/Base/App/SaxSessionData_Web.cs
+++ b/Workspace/SaxoniteCoreWeb/Base/App/SaxSessionData_Web.cs
@@ -1,4 +1,4 @@
-using Saxonite.Net.Standard.Base.App;
+using Saxonite.Net.Standard.Base.App;
using Saxonite.Net.Standard.Base.Bus;
using System;
using System.Collections.Generic;
diff --git a/SaxoniteCoreWeb/Base/App/SaxStartup.cs b/Workspace/SaxoniteCoreWeb/Base/App/SaxStartup.cs
similarity index 99%
rename from SaxoniteCoreWeb/Base/App/SaxStartup.cs
rename to Workspace/SaxoniteCoreWeb/Base/App/SaxStartup.cs
index 17b8ef4..f11bb52 100644
--- a/SaxoniteCoreWeb/Base/App/SaxStartup.cs
+++ b/Workspace/SaxoniteCoreWeb/Base/App/SaxStartup.cs
@@ -1,4 +1,4 @@
-using Microsoft.AspNetCore.Builder;
+using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Localization;
diff --git a/SaxoniteCoreWeb/Base/App/SaxSystem_Web.cs b/Workspace/SaxoniteCoreWeb/Base/App/SaxSystem_Web.cs
similarity index 99%
rename from SaxoniteCoreWeb/Base/App/SaxSystem_Web.cs
rename to Workspace/SaxoniteCoreWeb/Base/App/SaxSystem_Web.cs
index 5f02a38..2322b7d 100644
--- a/SaxoniteCoreWeb/Base/App/SaxSystem_Web.cs
+++ b/Workspace/SaxoniteCoreWeb/Base/App/SaxSystem_Web.cs
@@ -1,4 +1,4 @@
-using Sarand.Net.Standard.Base.Core;
+using Sarand.Net.Standard.Base.Core;
using Saxonite.Net.Standard.Dbas.App;
using Saxonite.Net.Standard.Base.App;
using Saxonite.Net.Standard.Base.Mgr;
diff --git a/SaxoniteCoreWeb/Base/Consoles/SaxActivityConsole_Web.cs b/Workspace/SaxoniteCoreWeb/Base/Consoles/SaxActivityConsole_Web.cs
similarity index 99%
rename from SaxoniteCoreWeb/Base/Consoles/SaxActivityConsole_Web.cs
rename to Workspace/SaxoniteCoreWeb/Base/Consoles/SaxActivityConsole_Web.cs
index 36b6878..735224f 100644
--- a/SaxoniteCoreWeb/Base/Consoles/SaxActivityConsole_Web.cs
+++ b/Workspace/SaxoniteCoreWeb/Base/Consoles/SaxActivityConsole_Web.cs
@@ -1,4 +1,4 @@
-using Sarand.Net.Standard.Base.App;
+using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Dbas;
@@ -35,14 +35,6 @@ namespace Saxonite.Net.Core.Web.Base.Consoles
base(sessionContext)
{
}
- protected override void Dispose(bool disposing)
- {
- if (disposing)
- {
- }
- base.Dispose(disposing);
- }
-
//-------------------------------------------------------------------
// Query Activity Index Entries for User Context.
//-------------------------------------------------------------------
diff --git a/SaxoniteCoreWeb/Base/Consoles/SaxConsoleHelper_Web.cs b/Workspace/SaxoniteCoreWeb/Base/Consoles/SaxConsoleHelper_Web.cs
similarity index 93%
rename from SaxoniteCoreWeb/Base/Consoles/SaxConsoleHelper_Web.cs
rename to Workspace/SaxoniteCoreWeb/Base/Consoles/SaxConsoleHelper_Web.cs
index 71c43ae..022ea05 100644
--- a/SaxoniteCoreWeb/Base/Consoles/SaxConsoleHelper_Web.cs
+++ b/Workspace/SaxoniteCoreWeb/Base/Consoles/SaxConsoleHelper_Web.cs
@@ -1,4 +1,4 @@
-using Saxonite.Net.Standard.Base.Consoles;
+using Saxonite.Net.Standard.Base.Consoles;
using System;
using System.Collections.Generic;
using System.Text;
diff --git a/SaxoniteCoreWeb/Base/Consoles/SaxDataCacheConsole_Web.cs b/Workspace/SaxoniteCoreWeb/Base/Consoles/SaxDataCacheConsole_Web.cs
similarity index 99%
rename from SaxoniteCoreWeb/Base/Consoles/SaxDataCacheConsole_Web.cs
rename to Workspace/SaxoniteCoreWeb/Base/Consoles/SaxDataCacheConsole_Web.cs
index 6d18cde..ec95a60 100644
--- a/SaxoniteCoreWeb/Base/Consoles/SaxDataCacheConsole_Web.cs
+++ b/Workspace/SaxoniteCoreWeb/Base/Consoles/SaxDataCacheConsole_Web.cs
@@ -1,4 +1,4 @@
-using Microsoft.IdentityModel.Tokens;
+using Microsoft.IdentityModel.Tokens;
using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Utils;
diff --git a/SaxoniteCoreWeb/Base/Consoles/SaxEmailConsole_Web.cs b/Workspace/SaxoniteCoreWeb/Base/Consoles/SaxEmailConsole_Web.cs
similarity index 92%
rename from SaxoniteCoreWeb/Base/Consoles/SaxEmailConsole_Web.cs
rename to Workspace/SaxoniteCoreWeb/Base/Consoles/SaxEmailConsole_Web.cs
index dc1ae68..93ca4cb 100644
--- a/SaxoniteCoreWeb/Base/Consoles/SaxEmailConsole_Web.cs
+++ b/Workspace/SaxoniteCoreWeb/Base/Consoles/SaxEmailConsole_Web.cs
@@ -1,4 +1,4 @@
-using Saxonite.Net.Standard.Base.Consoles;
+using Saxonite.Net.Standard.Base.Consoles;
using System;
using System.Collections.Generic;
using System.Text;
diff --git a/SaxoniteCoreWeb/Base/Consoles/SaxHostedServiceConsole_Web.cs b/Workspace/SaxoniteCoreWeb/Base/Consoles/SaxHostedServiceConsole_Web.cs
similarity index 98%
rename from SaxoniteCoreWeb/Base/Consoles/SaxHostedServiceConsole_Web.cs
rename to Workspace/SaxoniteCoreWeb/Base/Consoles/SaxHostedServiceConsole_Web.cs
index 3bfdd2c..1c7bc7c 100644
--- a/SaxoniteCoreWeb/Base/Consoles/SaxHostedServiceConsole_Web.cs
+++ b/Workspace/SaxoniteCoreWeb/Base/Consoles/SaxHostedServiceConsole_Web.cs
@@ -1,4 +1,4 @@
-using Microsoft.Extensions.Hosting;
+using Microsoft.Extensions.Hosting;
using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Tasks;
diff --git a/SaxoniteCoreWeb/Base/Consoles/SaxSessionDataConsole_Web.cs b/Workspace/SaxoniteCoreWeb/Base/Consoles/SaxSessionDataConsole_Web.cs
similarity index 85%
rename from SaxoniteCoreWeb/Base/Consoles/SaxSessionDataConsole_Web.cs
rename to Workspace/SaxoniteCoreWeb/Base/Consoles/SaxSessionDataConsole_Web.cs
index cc32a9f..14d119f 100644
--- a/SaxoniteCoreWeb/Base/Consoles/SaxSessionDataConsole_Web.cs
+++ b/Workspace/SaxoniteCoreWeb/Base/Consoles/SaxSessionDataConsole_Web.cs
@@ -1,4 +1,4 @@
-using Saxonite.Net.Standard.Base.App;
+using Saxonite.Net.Standard.Base.App;
using Saxonite.Net.Standard.Base.Consoles;
using System;
using System.Collections.Generic;
@@ -21,14 +21,6 @@ namespace Saxonite.Net.Core.Web.Base.Consoles
base(sessionContext)
{
}
- protected override void Dispose(bool disposing)
- {
- if (disposing)
- {
- }
- base.Dispose(disposing);
- }
-
//-------------------------------------------------------------------
//-------------------------------------------------------------------
diff --git a/SaxoniteCoreWeb/Base/Controllers/SaxController_Base.cs b/Workspace/SaxoniteCoreWeb/Base/Controllers/SaxController_Base.cs
similarity index 99%
rename from SaxoniteCoreWeb/Base/Controllers/SaxController_Base.cs
rename to Workspace/SaxoniteCoreWeb/Base/Controllers/SaxController_Base.cs
index fa171f1..72f6eb1 100644
--- a/SaxoniteCoreWeb/Base/Controllers/SaxController_Base.cs
+++ b/Workspace/SaxoniteCoreWeb/Base/Controllers/SaxController_Base.cs
@@ -1,4 +1,4 @@
-using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc;
using Sacs.Web.Components;
using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus;
diff --git a/SaxoniteCoreWeb/Base/Controllers/SaxController_Web.cs b/Workspace/SaxoniteCoreWeb/Base/Controllers/SaxController_Web.cs
similarity index 94%
rename from SaxoniteCoreWeb/Base/Controllers/SaxController_Web.cs
rename to Workspace/SaxoniteCoreWeb/Base/Controllers/SaxController_Web.cs
index bbc7be1..3847c66 100644
--- a/SaxoniteCoreWeb/Base/Controllers/SaxController_Web.cs
+++ b/Workspace/SaxoniteCoreWeb/Base/Controllers/SaxController_Web.cs
@@ -1,4 +1,4 @@
-using Microsoft.AspNetCore.Mvc.Filters;
+using Microsoft.AspNetCore.Mvc.Filters;
using Microsoft.Net.Http.Headers;
using Newtonsoft.Json;
using Newtonsoft.Json.Serialization;
@@ -108,13 +108,10 @@ namespace Saxonite.Net.Core.Web.Base.Controllers
//-------------------------------------------------------------------
// Online encryption parameters.
//-------------------------------------------------------------------
- // Online Request Password encryption parameters (key & IV) are defined in
+ // Online Request Password encryption parameters are defined in
// the base Controller so that they can be shared with the Admin application.
- // NB IV value is generated from the key and fixed so that it doesn't change when the application restarts.
- // IV Must be regenerated if key is changed.
protected static String Base64Key_RequestPassword_Online { get; } = SacsEncryptionHelper.EncodePlainKey("{~Saxonite@@Request^Password=}", SacsEncryptionHelper.KeyLength);
- //private static String Base64IV_RequestPassword_Generated_Online { get; } = SacsEncryptionHelper.InitSymmetricEncryptionIV(Base64Key_RequestPassword_Online);
- protected static String Base64IV_RequestPassword_Online { get; } = "1VAWYTW6d72n/6HDNhbqow==";
+ protected const String Purpose_RequestPassword_Online = "Saxonite.Online.RequestPassword";
//-------------------------------------------------------------------
// Session.
diff --git a/SaxoniteCoreWeb/Base/Helpers/SaxAppConfigHelper.cs b/Workspace/SaxoniteCoreWeb/Base/Helpers/SaxAppConfigHelper.cs
similarity index 98%
rename from SaxoniteCoreWeb/Base/Helpers/SaxAppConfigHelper.cs
rename to Workspace/SaxoniteCoreWeb/Base/Helpers/SaxAppConfigHelper.cs
index e96410d..34a081e 100644
--- a/SaxoniteCoreWeb/Base/Helpers/SaxAppConfigHelper.cs
+++ b/Workspace/SaxoniteCoreWeb/Base/Helpers/SaxAppConfigHelper.cs
@@ -1,4 +1,4 @@
-using Microsoft.Extensions.Configuration;
+using Microsoft.Extensions.Configuration;
using Sarand.Net.Standard.Base.Core;
using Saxonite.Net.Standard.Base.App;
using Saxonite.Net.Core.Web.Base.App;
diff --git a/SaxoniteCoreWeb/Base/Helpers/SaxEmailConfigHelper.cs b/Workspace/SaxoniteCoreWeb/Base/Helpers/SaxEmailConfigHelper.cs
similarity index 98%
rename from SaxoniteCoreWeb/Base/Helpers/SaxEmailConfigHelper.cs
rename to Workspace/SaxoniteCoreWeb/Base/Helpers/SaxEmailConfigHelper.cs
index 3cdbf7e..9a8a743 100644
--- a/SaxoniteCoreWeb/Base/Helpers/SaxEmailConfigHelper.cs
+++ b/Workspace/SaxoniteCoreWeb/Base/Helpers/SaxEmailConfigHelper.cs
@@ -1,4 +1,4 @@
-using Microsoft.Extensions.Configuration;
+using Microsoft.Extensions.Configuration;
using Sarand.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Email;
using Saxonite.Net.Standard.Base.App;
diff --git a/SaxoniteCoreWeb/Base/Helpers/SaxResourceHelper_Web.cs b/Workspace/SaxoniteCoreWeb/Base/Helpers/SaxResourceHelper_Web.cs
similarity index 97%
rename from SaxoniteCoreWeb/Base/Helpers/SaxResourceHelper_Web.cs
rename to Workspace/SaxoniteCoreWeb/Base/Helpers/SaxResourceHelper_Web.cs
index 731e6ac..7203ebe 100644
--- a/SaxoniteCoreWeb/Base/Helpers/SaxResourceHelper_Web.cs
+++ b/Workspace/SaxoniteCoreWeb/Base/Helpers/SaxResourceHelper_Web.cs
@@ -1,4 +1,4 @@
-using Sarand.Net.Standard.Base.Helpers;
+using Sarand.Net.Standard.Base.Helpers;
using Sarand.Net.Standard.Base.Utils;
using System;
using System.Collections.Generic;
diff --git a/SaxoniteCoreWeb/Base/Middleware/SaxAuthenticationHandler.cs b/Workspace/SaxoniteCoreWeb/Base/Middleware/SaxAuthenticationHandler.cs
similarity index 97%
rename from SaxoniteCoreWeb/Base/Middleware/SaxAuthenticationHandler.cs
rename to Workspace/SaxoniteCoreWeb/Base/Middleware/SaxAuthenticationHandler.cs
index 5c18399..e075b27 100644
--- a/SaxoniteCoreWeb/Base/Middleware/SaxAuthenticationHandler.cs
+++ b/Workspace/SaxoniteCoreWeb/Base/Middleware/SaxAuthenticationHandler.cs
@@ -1,4 +1,4 @@
-using Microsoft.AspNetCore.Authentication;
+using Microsoft.AspNetCore.Authentication;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
diff --git a/SaxoniteCoreWeb/Base/Middleware/SaxMetadataProvider.cs b/Workspace/SaxoniteCoreWeb/Base/Middleware/SaxMetadataProvider.cs
similarity index 92%
rename from SaxoniteCoreWeb/Base/Middleware/SaxMetadataProvider.cs
rename to Workspace/SaxoniteCoreWeb/Base/Middleware/SaxMetadataProvider.cs
index cab9fd0..8fd5a86 100644
--- a/SaxoniteCoreWeb/Base/Middleware/SaxMetadataProvider.cs
+++ b/Workspace/SaxoniteCoreWeb/Base/Middleware/SaxMetadataProvider.cs
@@ -1,4 +1,4 @@
-using Microsoft.AspNetCore.Mvc.ModelBinding.Metadata;
+using Microsoft.AspNetCore.Mvc.ModelBinding.Metadata;
using System;
using System.Collections.Generic;
using System.Text;
diff --git a/SaxoniteCoreWeb/Base/Middleware/SaxModelBinder.cs b/Workspace/SaxoniteCoreWeb/Base/Middleware/SaxModelBinder.cs
similarity index 98%
rename from SaxoniteCoreWeb/Base/Middleware/SaxModelBinder.cs
rename to Workspace/SaxoniteCoreWeb/Base/Middleware/SaxModelBinder.cs
index 31b74b3..a1b8429 100644
--- a/SaxoniteCoreWeb/Base/Middleware/SaxModelBinder.cs
+++ b/Workspace/SaxoniteCoreWeb/Base/Middleware/SaxModelBinder.cs
@@ -1,4 +1,4 @@
-using Microsoft.AspNetCore.Mvc.ModelBinding;
+using Microsoft.AspNetCore.Mvc.ModelBinding;
using Microsoft.AspNetCore.Mvc.ModelBinding.Binders;
using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Core;
diff --git a/SaxoniteCoreWeb/Base/Middleware/SaxModelBinderProvider.cs b/Workspace/SaxoniteCoreWeb/Base/Middleware/SaxModelBinderProvider.cs
similarity index 96%
rename from SaxoniteCoreWeb/Base/Middleware/SaxModelBinderProvider.cs
rename to Workspace/SaxoniteCoreWeb/Base/Middleware/SaxModelBinderProvider.cs
index fac2439..6bc7a13 100644
--- a/SaxoniteCoreWeb/Base/Middleware/SaxModelBinderProvider.cs
+++ b/Workspace/SaxoniteCoreWeb/Base/Middleware/SaxModelBinderProvider.cs
@@ -1,4 +1,4 @@
-using Microsoft.AspNetCore.Mvc.ModelBinding;
+using Microsoft.AspNetCore.Mvc.ModelBinding;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
diff --git a/SaxoniteCoreWeb/Base/Middleware/ValidateAntiForgeryTokenMiddleware.cs b/Workspace/SaxoniteCoreWeb/Base/Middleware/ValidateAntiForgeryTokenMiddleware.cs
similarity index 97%
rename from SaxoniteCoreWeb/Base/Middleware/ValidateAntiForgeryTokenMiddleware.cs
rename to Workspace/SaxoniteCoreWeb/Base/Middleware/ValidateAntiForgeryTokenMiddleware.cs
index 927063c..bf373ec 100644
--- a/SaxoniteCoreWeb/Base/Middleware/ValidateAntiForgeryTokenMiddleware.cs
+++ b/Workspace/SaxoniteCoreWeb/Base/Middleware/ValidateAntiForgeryTokenMiddleware.cs
@@ -1,4 +1,4 @@
-using Microsoft.AspNetCore.Antiforgery;
+using Microsoft.AspNetCore.Antiforgery;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
diff --git a/SaxoniteCoreWeb/Base/Models/SaxModel_Base.cs b/Workspace/SaxoniteCoreWeb/Base/Models/SaxModel_Base.cs
similarity index 98%
rename from SaxoniteCoreWeb/Base/Models/SaxModel_Base.cs
rename to Workspace/SaxoniteCoreWeb/Base/Models/SaxModel_Base.cs
index 40edf31..6abe9c7 100644
--- a/SaxoniteCoreWeb/Base/Models/SaxModel_Base.cs
+++ b/Workspace/SaxoniteCoreWeb/Base/Models/SaxModel_Base.cs
@@ -1,4 +1,4 @@
-using Microsoft.AspNetCore.Html;
+using Microsoft.AspNetCore.Html;
using Microsoft.AspNetCore.Mvc.ModelBinding.Validation;
using Microsoft.AspNetCore.Mvc.Rendering;
using Sacs.Web.Components;
@@ -44,6 +44,13 @@ namespace Saxonite.Net.Core.Web.Base.Models
protected SaxSystem_Web System { get { return App.System_Web; } }
public String SessionCookieName { get { return App.SessionCookieName; } }
public SaxLocaliser Localiser { get; }
+ public override String GetText(String textKey, String defaultText)
+ {
+ String text = Localiser[textKey];
+ if (StringUtil.IsBlank(text) || text.EqualsCI(textKey))
+ return defaultText;
+ return text;
+ }
// Session properties.
public SaxSessionData SessionData { get; set; }
public SaxSessionContext SessionContext { get { return SessionData?.SessionContext ?? App.SessionContext; } }
diff --git a/SaxoniteCoreWeb/Base/Procs/Data/UploadFileData.cs b/Workspace/SaxoniteCoreWeb/Base/Procs/Data/UploadFileData.cs
similarity index 98%
rename from SaxoniteCoreWeb/Base/Procs/Data/UploadFileData.cs
rename to Workspace/SaxoniteCoreWeb/Base/Procs/Data/UploadFileData.cs
index 6cca7a3..aeb39be 100644
--- a/SaxoniteCoreWeb/Base/Procs/Data/UploadFileData.cs
+++ b/Workspace/SaxoniteCoreWeb/Base/Procs/Data/UploadFileData.cs
@@ -1,4 +1,4 @@
-using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Http;
using Sarand.Net.Standard.Base.Core;
using System;
using System.Collections.Generic;
diff --git a/SaxoniteCoreWeb/Base/Procs/SaxGolfUsgaDataLookup-ScheduledUsgaDataLookup.cs b/Workspace/SaxoniteCoreWeb/Base/Procs/SaxGolfUsgaDataLookup-ScheduledUsgaDataLookup.cs
similarity index 99%
rename from SaxoniteCoreWeb/Base/Procs/SaxGolfUsgaDataLookup-ScheduledUsgaDataLookup.cs
rename to Workspace/SaxoniteCoreWeb/Base/Procs/SaxGolfUsgaDataLookup-ScheduledUsgaDataLookup.cs
index b955645..c4ff7ca 100644
--- a/SaxoniteCoreWeb/Base/Procs/SaxGolfUsgaDataLookup-ScheduledUsgaDataLookup.cs
+++ b/Workspace/SaxoniteCoreWeb/Base/Procs/SaxGolfUsgaDataLookup-ScheduledUsgaDataLookup.cs
@@ -1,4 +1,4 @@
-using DocumentFormat.OpenXml.Drawing.Diagrams;
+using DocumentFormat.OpenXml.Drawing.Diagrams;
using DocumentFormat.OpenXml.Office2016.Excel;
using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus;
@@ -37,7 +37,7 @@ namespace Saxonite.Net.Core.Web.Base.Procs
{
SaLogger.Debug($"{SysUtil.Fn}");
- using (DisposableCollection disposableItems = new DisposableCollection())
+ using (DisposableCollection disposableItems = new DisposableCollection())
{
SaxInternals internals = new SaxInternals(sessionContext);
disposableItems.Add(internals);
diff --git a/SaxoniteCoreWeb/Base/Procs/SaxGolfUsgaDataLookup.cs b/Workspace/SaxoniteCoreWeb/Base/Procs/SaxGolfUsgaDataLookup.cs
similarity index 98%
rename from SaxoniteCoreWeb/Base/Procs/SaxGolfUsgaDataLookup.cs
rename to Workspace/SaxoniteCoreWeb/Base/Procs/SaxGolfUsgaDataLookup.cs
index 01ef8c3..4f34393 100644
--- a/SaxoniteCoreWeb/Base/Procs/SaxGolfUsgaDataLookup.cs
+++ b/Workspace/SaxoniteCoreWeb/Base/Procs/SaxGolfUsgaDataLookup.cs
@@ -1,4 +1,4 @@
-using DocumentFormat.OpenXml.InkML;
+using DocumentFormat.OpenXml.InkML;
using HtmlAgilityPack;
using MailKit;
using Microsoft.Net.Http.Headers;
@@ -357,7 +357,7 @@ namespace Saxonite.Net.Core.Web.Base.Procs
UsgaRequestData usgaRequestData = GetUsgaRequestData();
- using (DisposableCollection disposableItems = new DisposableCollection())
+ using (DisposableCollection disposableItems = new DisposableCollection())
{
// Retrieve and validate country.
SaxGolfUsgaCountry.Params prmCountry = new SaxGolfUsgaCountry.Params();
@@ -470,7 +470,7 @@ namespace Saxonite.Net.Core.Web.Base.Procs
UsgaRequestData usgaRequestData = GetUsgaRequestData();
- using (DisposableCollection disposableItems = new DisposableCollection())
+ using (DisposableCollection disposableItems = new DisposableCollection())
{
// Retrieve and validate country.
SaxGolfUsgaCountry.Params prmCountry = new SaxGolfUsgaCountry.Params();
@@ -756,7 +756,7 @@ namespace Saxonite.Net.Core.Web.Base.Procs
int courseCaptionsCorrected = 0;
// Verify Course captions.
- using (DisposableCollection disposables = new DisposableCollection())
+ using (DisposableCollection disposables = new DisposableCollection())
{
// Local function to allow break/return from within nested loop.
void CompareCourse()
@@ -777,7 +777,7 @@ namespace Saxonite.Net.Core.Web.Base.Procs
disposables.Add(province);
// Separate disposables for each province to restrict volume handled on each disposal.
- using (DisposableCollection disposablesProvince = new DisposableCollection())
+ using (DisposableCollection disposablesProvince = new DisposableCollection())
{
// Facilities.
@@ -874,7 +874,7 @@ namespace Saxonite.Net.Core.Web.Base.Procs
if (!SysId.IsValid(usgaCourseId)) return markersData.Markers;
MarkerColumnData markerColumns = new MarkerColumnData();
- using (DisposableCollection disposableItems = new DisposableCollection())
+ using (DisposableCollection disposableItems = new DisposableCollection())
{
// Retrieve and validate course.
SaxGolfUsgaCourse.Params prmCourse = new SaxGolfUsgaCourse.Params();
@@ -1157,7 +1157,7 @@ namespace Saxonite.Net.Core.Web.Base.Procs
//int maxMarkers = 0;
int markersCorrected = 0;
- using (DisposableCollection disposables = new DisposableCollection())
+ using (DisposableCollection disposables = new DisposableCollection())
{
// Local function to allow break/return from within nested loop.
void CleanseMarkers()
@@ -1178,7 +1178,7 @@ namespace Saxonite.Net.Core.Web.Base.Procs
disposables.Add(province);
// Separate disposables for each province to restrict volume handled on each disposal.
- using (DisposableCollection disposablesProvince = new DisposableCollection())
+ using (DisposableCollection disposablesProvince = new DisposableCollection())
{
// Facilities.
diff --git a/SaxoniteCoreWeb/Base/Procs/SaxOrganisationEventsLookup.cs b/Workspace/SaxoniteCoreWeb/Base/Procs/SaxOrganisationEventsLookup.cs
similarity index 97%
rename from SaxoniteCoreWeb/Base/Procs/SaxOrganisationEventsLookup.cs
rename to Workspace/SaxoniteCoreWeb/Base/Procs/SaxOrganisationEventsLookup.cs
index 935a5f0..e72e099 100644
--- a/SaxoniteCoreWeb/Base/Procs/SaxOrganisationEventsLookup.cs
+++ b/Workspace/SaxoniteCoreWeb/Base/Procs/SaxOrganisationEventsLookup.cs
@@ -1,4 +1,4 @@
-using DocumentFormat.OpenXml.InkML;
+using DocumentFormat.OpenXml.InkML;
using HtmlAgilityPack;
using MailKit;
using Microsoft.Net.Http.Headers;
@@ -96,7 +96,7 @@ namespace Saxonite.Net.Core.Web.Base.Procs
{
if (!OK) return false;
- using (DisposableCollection disposableItems = new DisposableCollection())
+ using (DisposableCollection disposableItems = new DisposableCollection())
{
foreach (SysId organisationId in config.OrganisationIdsIncluded)
{
diff --git a/SaxoniteCoreWeb/Base/Procs/SaxProcess_Web.cs b/Workspace/SaxoniteCoreWeb/Base/Procs/SaxProcess_Web.cs
similarity index 97%
rename from SaxoniteCoreWeb/Base/Procs/SaxProcess_Web.cs
rename to Workspace/SaxoniteCoreWeb/Base/Procs/SaxProcess_Web.cs
index f55b649..735d1f8 100644
--- a/SaxoniteCoreWeb/Base/Procs/SaxProcess_Web.cs
+++ b/Workspace/SaxoniteCoreWeb/Base/Procs/SaxProcess_Web.cs
@@ -1,4 +1,4 @@
-using Sarand.Net.Standard.Base.Dbas;
+using Sarand.Net.Standard.Base.Dbas;
using Sarand.Net.Standard.Proc.Excel;
using Saxonite.Net.Standard.Base.App;
using Saxonite.Net.Standard.Base.Procs;
diff --git a/SaxoniteCoreWeb/SaxoniteCoreWeb.csproj b/Workspace/SaxoniteCoreWeb/SaxoniteCoreWeb.csproj
similarity index 60%
rename from SaxoniteCoreWeb/SaxoniteCoreWeb.csproj
rename to Workspace/SaxoniteCoreWeb/SaxoniteCoreWeb.csproj
index e6a4202..70e436d 100644
--- a/SaxoniteCoreWeb/SaxoniteCoreWeb.csproj
+++ b/Workspace/SaxoniteCoreWeb/SaxoniteCoreWeb.csproj
@@ -1,14 +1,14 @@
- net6.0
+ net10.0
Saxonite.Net.Core.Web
-
-
-
+
+
+
@@ -23,8 +23,8 @@
-
-
+
+
diff --git a/SaxoniteCoreWebAdmin/.config/dotnet-tools.json b/Workspace/SaxoniteCoreWebAdmin/.config/dotnet-tools.json
similarity index 100%
rename from SaxoniteCoreWebAdmin/.config/dotnet-tools.json
rename to Workspace/SaxoniteCoreWebAdmin/.config/dotnet-tools.json
diff --git a/SaxoniteCoreWebAdmin/Admin/App/Program.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/App/Program.cs
similarity index 100%
rename from SaxoniteCoreWebAdmin/Admin/App/Program.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/App/Program.cs
diff --git a/SaxoniteCoreWebAdmin/Admin/App/SaxApplication_Admin.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/App/SaxApplication_Admin.cs
similarity index 99%
rename from SaxoniteCoreWebAdmin/Admin/App/SaxApplication_Admin.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/App/SaxApplication_Admin.cs
index 5a122ef..2d1b5b3 100644
--- a/SaxoniteCoreWebAdmin/Admin/App/SaxApplication_Admin.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/App/SaxApplication_Admin.cs
@@ -1,4 +1,4 @@
-using Microsoft.AspNetCore.Hosting;
+using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Sarand.Net.Standard.Base.App;
diff --git a/SaxoniteCoreWebAdmin/Admin/App/SaxLocaliser_Admin.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/App/SaxLocaliser_Admin.cs
similarity index 97%
rename from SaxoniteCoreWebAdmin/Admin/App/SaxLocaliser_Admin.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/App/SaxLocaliser_Admin.cs
index aa061e7..3bbe42e 100644
--- a/SaxoniteCoreWebAdmin/Admin/App/SaxLocaliser_Admin.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/App/SaxLocaliser_Admin.cs
@@ -1,4 +1,4 @@
-using Microsoft.Extensions.Localization;
+using Microsoft.Extensions.Localization;
using Saxonite.Net.Core.Web.Base.App;
using System;
using System.Collections.Generic;
diff --git a/SaxoniteCoreWebAdmin/Admin/App/SaxSessionData_Admin.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/App/SaxSessionData_Admin.cs
similarity index 92%
rename from SaxoniteCoreWebAdmin/Admin/App/SaxSessionData_Admin.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/App/SaxSessionData_Admin.cs
index 47e5e19..46d3bff 100644
--- a/SaxoniteCoreWebAdmin/Admin/App/SaxSessionData_Admin.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/App/SaxSessionData_Admin.cs
@@ -1,4 +1,4 @@
-using Newtonsoft.Json;
+using Newtonsoft.Json;
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Helpers;
using Saxonite.Net.Core.Web.Admin.Controllers;
@@ -85,9 +85,6 @@ namespace Saxonite.Net.Core.Web.Admin.App
public SystemData System { get; private set; } = new SystemData();
//-------------------------------------------------------------------
- // Online application encryption IV value - for consistent encryption during session.
- public String Base64IV_AdminApp { get; private set; } = SacsEncryptionHelper.InitSymmetricEncryptionIV(SaxController_Admin.Base64Key_AdminApp);
-
//-------------------------------------------------------------------
}
//=======================================================================
diff --git a/SaxoniteCoreWebAdmin/Admin/App/SaxStartup_Admin.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/App/SaxStartup_Admin.cs
similarity index 100%
rename from SaxoniteCoreWebAdmin/Admin/App/SaxStartup_Admin.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/App/SaxStartup_Admin.cs
diff --git a/SaxoniteCoreWebAdmin/Admin/Consoles/SaxActivityConsole_Admin.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Consoles/SaxActivityConsole_Admin.cs
similarity index 96%
rename from SaxoniteCoreWebAdmin/Admin/Consoles/SaxActivityConsole_Admin.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Consoles/SaxActivityConsole_Admin.cs
index 1af04b8..cd435be 100644
--- a/SaxoniteCoreWebAdmin/Admin/Consoles/SaxActivityConsole_Admin.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/Consoles/SaxActivityConsole_Admin.cs
@@ -1,4 +1,4 @@
-using Sarand.Net.Standard.Base.App;
+using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Utils;
using Saxonite.Net.Core.Web.Base.Consoles;
using Saxonite.Net.Standard.Base.App;
diff --git a/SaxoniteCoreWebAdmin/Admin/Consoles/SaxConsoleHelper_Admin.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Consoles/SaxConsoleHelper_Admin.cs
similarity index 98%
rename from SaxoniteCoreWebAdmin/Admin/Consoles/SaxConsoleHelper_Admin.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Consoles/SaxConsoleHelper_Admin.cs
index cd73e30..d54a7ad 100644
--- a/SaxoniteCoreWebAdmin/Admin/Consoles/SaxConsoleHelper_Admin.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/Consoles/SaxConsoleHelper_Admin.cs
@@ -1,4 +1,4 @@
-using Sarand.Net.Standard.Base.Utils;
+using Sarand.Net.Standard.Base.Utils;
using Saxonite.Net.Core.Web.Admin.App;
using Saxonite.Net.Core.Web.Base.Consoles;
using Saxonite.Net.Standard.Base.App;
diff --git a/SaxoniteCoreWebAdmin/Admin/Consoles/SaxHostedServiceConsole_Admin.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Consoles/SaxHostedServiceConsole_Admin.cs
similarity index 99%
rename from SaxoniteCoreWebAdmin/Admin/Consoles/SaxHostedServiceConsole_Admin.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Consoles/SaxHostedServiceConsole_Admin.cs
index a081a90..acfe6bb 100644
--- a/SaxoniteCoreWebAdmin/Admin/Consoles/SaxHostedServiceConsole_Admin.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/Consoles/SaxHostedServiceConsole_Admin.cs
@@ -1,4 +1,4 @@
-using Sarand.Net.Standard.Base.App;
+using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Dbas;
diff --git a/SaxoniteCoreWebAdmin/Admin/Consoles/SaxProcessConsole_Admin.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Consoles/SaxProcessConsole_Admin.cs
similarity index 99%
rename from SaxoniteCoreWebAdmin/Admin/Consoles/SaxProcessConsole_Admin.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Consoles/SaxProcessConsole_Admin.cs
index 6309f5a..02c0d19 100644
--- a/SaxoniteCoreWebAdmin/Admin/Consoles/SaxProcessConsole_Admin.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/Consoles/SaxProcessConsole_Admin.cs
@@ -1,4 +1,4 @@
-using MimeKit;
+using MimeKit;
using Sarand.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Procs;
using Saxonite.Net.Core.Web.Admin.Procs;
diff --git a/SaxoniteCoreWebAdmin/Admin/Controllers/HomeController-Ajax-ApplicationStats.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/HomeController-Ajax-ApplicationStats.cs
similarity index 99%
rename from SaxoniteCoreWebAdmin/Admin/Controllers/HomeController-Ajax-ApplicationStats.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/HomeController-Ajax-ApplicationStats.cs
index c4cfd3d..e0d8bf8 100644
--- a/SaxoniteCoreWebAdmin/Admin/Controllers/HomeController-Ajax-ApplicationStats.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/HomeController-Ajax-ApplicationStats.cs
@@ -1,4 +1,4 @@
-using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Routing;
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core;
diff --git a/SaxoniteCoreWebAdmin/Admin/Controllers/HomeController.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/HomeController.cs
similarity index 98%
rename from SaxoniteCoreWebAdmin/Admin/Controllers/HomeController.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/HomeController.cs
index 834461d..417fc4a 100644
--- a/SaxoniteCoreWebAdmin/Admin/Controllers/HomeController.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/HomeController.cs
@@ -1,4 +1,4 @@
-using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus;
diff --git a/SaxoniteCoreWebAdmin/Admin/Controllers/ImageController.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/ImageController.cs
similarity index 99%
rename from SaxoniteCoreWebAdmin/Admin/Controllers/ImageController.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/ImageController.cs
index 2242785..2ef0d10 100644
--- a/SaxoniteCoreWebAdmin/Admin/Controllers/ImageController.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/ImageController.cs
@@ -1,4 +1,4 @@
-using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using Microsoft.Net.Http.Headers;
using Sarand.Net.Standard.Base.Bus;
diff --git a/SaxoniteCoreWebAdmin/Admin/Controllers/OrganisationController-Ajax-Activation.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/OrganisationController-Ajax-Activation.cs
similarity index 89%
rename from SaxoniteCoreWebAdmin/Admin/Controllers/OrganisationController-Ajax-Activation.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/OrganisationController-Ajax-Activation.cs
index a607eb9..b7c2195 100644
--- a/SaxoniteCoreWebAdmin/Admin/Controllers/OrganisationController-Ajax-Activation.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/OrganisationController-Ajax-Activation.cs
@@ -1,4 +1,4 @@
-using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc;
using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core;
@@ -45,18 +45,18 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
return GetAjaxResult_InvalidSession(responseData);
// Record disposable items as they are created so all can be disposed when needed.
- using (DisposableCollection disposableItems = new DisposableCollection())
+ using (DisposableCollection disposableItems = new DisposableCollection())
{
if (StringUtil.IsEmpty(AppConfig.URL.Online.Root))
- return Json(responseData.SetMessage(messageTitle, "Root online URL not specified."));
+ return Json(responseData.SetPopupMessage(messageTitle, "Root online URL not specified."));
// Identify item.
SysId organisationId = SysId.ToSysId(model.OrganisationId);
if (!SysId.IsValid(organisationId))
{
SaLogger.Warn($"{SysUtil.Fn} Request to get activation info without valid organisation Id.");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.id.not.specified"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.item.id.not.specified"]));
}
// Retrieve item.
@@ -65,7 +65,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
if (organisation == null)
{
SaLogger.Warn($"{SysUtil.Fn} Failed to retrieve organisation. Id: '{model.OrganisationId}'");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
}
// Organisation address.
@@ -114,7 +114,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
return GetAjaxResult_InvalidSession(responseData);
// Record disposable items as they are created so all can be disposed when needed.
- using (DisposableCollection disposableItems = new DisposableCollection())
+ using (DisposableCollection disposableItems = new DisposableCollection())
{
// Retrieve existing item.
@@ -124,7 +124,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
if (organisation == null)
{
SaLogger.Warn($"{SysUtil.Fn} Failed to retrieve organisation. Id: '{model.OrganisationId}'");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
}
// Organisation address.
@@ -143,17 +143,17 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
if (organisationMember.UserOrganisation == null)
{
SaLogger.Warn($"{SysUtil.Fn} Failed to retrieve user organisation. Id: '{userOrganisationId}'");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.system"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.system"]));
}
if (organisationMember.UserAccount == null)
{
SaLogger.Warn($"{SysUtil.Fn} Failed to retrieve user account . Id: '{organisationMember.UserOrganisation.UserAccountId}'");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.system"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.system"]));
}
if (organisationMember.UserAccount.Status != SaStatus.Awaiting)
{
SaLogger.Warn($"{SysUtil.Fn} User organisation is not awaiting. Id: '{userOrganisationId}'. Status: {organisationMember.UserAccount.StatusDesc}");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.system"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.system"]));
}
// Check if this user is to be activated.
bool activateUser = false;
@@ -177,7 +177,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
if (AccountMgr.GetOrganisationMemberCount(organisation.Id) < 1)
{
SaLogger.Warn($"{SysUtil.Fn} Unable to activate Organisation - no active members. Id: '{SysId.ToString(organisationId)}");
- return Json(responseData.SetMessage(messageTitle, Localiser["organisation.activate.msg.no.active.members"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["organisation.activate.msg.no.active.members"]));
}
}
@@ -186,7 +186,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
if (!AccountMgr.UpdateOrganisation(organisation, DbUpdateInfo))
{
SaLogger.Warn($"{SysUtil.Fn} Failed to update organisation [Id:{SysId.ToString(organisation.Id)}]: {AccountMgr.ErrorStateMessage}");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.update.failed"] + "\n\n" + AccountMgr.ErrorStateMessage));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.item.update.failed"] + "\n\n" + AccountMgr.ErrorStateMessage));
}
// Activate awaiting members and send welcome email to each.
diff --git a/SaxoniteCoreWebAdmin/Admin/Controllers/OrganisationController-Ajax-Associations.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/OrganisationController-Ajax-Associations.cs
similarity index 89%
rename from SaxoniteCoreWebAdmin/Admin/Controllers/OrganisationController-Ajax-Associations.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/OrganisationController-Ajax-Associations.cs
index a922edb..ed5fa76 100644
--- a/SaxoniteCoreWebAdmin/Admin/Controllers/OrganisationController-Ajax-Associations.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/OrganisationController-Ajax-Associations.cs
@@ -1,4 +1,4 @@
-using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc;
using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core;
@@ -164,7 +164,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
if (!SysId.IsValid(organisationId))
{
SaLogger.Warn($"{SysUtil.Fn} Request to retrieve associations without valid organisation Id.");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.id.not.specified"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.item.id.not.specified"]));
}
// Reference data - association types.
@@ -192,7 +192,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
private void GetOrganisationAssociations(SaxModel_Admin model, SysId organisationId, List associations)
{
// Record disposable items as they are created so all can be disposed when needed.
- using (DisposableCollection disposableItems = new DisposableCollection())
+ using (DisposableCollection disposableItems = new DisposableCollection())
{
// Item filter.
@@ -312,13 +312,13 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
return GetAjaxResult_InvalidSession(responseData);
// Record disposable items as they are created so all can be disposed when needed.
- using (DisposableCollection disposableItems = new DisposableCollection())
+ using (DisposableCollection disposableItems = new DisposableCollection())
{
// Identify item.
SysId itemAssociationId = SysId.ToSysId(model.ItemAssociationId);
if (!SysId.IsValid(itemAssociationId))
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.id.not.specified"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.item.id.not.specified"]));
// Retrieve association.
SaxItemAssociation itemAssociation = ItemDataMgr.GetItemAssociationById(itemAssociationId);
@@ -326,7 +326,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
if (itemAssociation == null)
{
SaLogger.Warn($"{SysUtil.Fn} Failed to retrieve Item Association for Id: '{model.ItemAssociationId}'");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
}
// Identify organisations.
@@ -335,19 +335,19 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
if (!SysId.IsValid(organisationId))
{
SaLogger.Warn($"{SysUtil.Fn} Organisation Id must be supplied.");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.data.incomplete"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.data.incomplete"]));
}
// Validate the association.
if (itemAssociation.ItemIdFrom.Type != (int)Sax.DataItemType.Organisation)
{
SaLogger.Warn($"{SysUtil.Fn} Inconsistent association 'From' item type: {AssociationTypeCodes.GetCodeForType(itemAssociation.ItemIdFrom.Type)}. Expected: Organisation.");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.data.inconsistent"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.data.inconsistent"]));
}
if (itemAssociation.ItemIdTo.Type != (int)Sax.DataItemType.Organisation)
{
SaLogger.Warn($"{SysUtil.Fn} Inconsistent association 'To' item type: {AssociationTypeCodes.GetCodeForType(itemAssociation.ItemIdTo.Type)}. Expected: Organisation.");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.data.inconsistent"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.data.inconsistent"]));
}
// Identify organisations from association items.
@@ -359,7 +359,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
else
{
SaLogger.Warn($"{SysUtil.Fn} Inconsistent association - Specified organisation is neither item.");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.data.inconsistent"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.data.inconsistent"]));
}
// Retrieve Organisation.
@@ -368,7 +368,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
if (organisation == null)
{
SaLogger.Warn($"{SysUtil.Fn} Failed to retrieve Organisation for Id: '{organisationId}'");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.system"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.system"]));
}
// Retrieve associated Organisation.
@@ -377,7 +377,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
if (organisationAssoc == null)
{
SaLogger.Warn($"{SysUtil.Fn} Failed to retrieve associated Organisation for Id: '{organisationIdAssoc}'");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.system"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.system"]));
}
// Construct response.
@@ -408,7 +408,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
return Json(responseData);
// Record disposable items as they are created so all can be disposed when needed.
- using (DisposableCollection disposableItems = new DisposableCollection())
+ using (DisposableCollection disposableItems = new DisposableCollection())
{
// Organisation.
@@ -418,7 +418,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
if (organisation == null)
{
SaLogger.Warn($"{SysUtil.Fn} Failed to retrieve Organisation for Id: {model.OrganisationId}");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.data.incomplete"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.data.incomplete"]));
}
// Associated Organisation.
@@ -428,12 +428,12 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
if (organisationAssoc == null)
{
SaLogger.Warn($"{SysUtil.Fn} Failed to retrieve associated Organisation for Id: {model.OrganisationIdAssoc}");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.data.incomplete"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.data.incomplete"]));
}
if (organisationIdAssoc.Equals(organisationId))
{
SaLogger.Warn($"{SysUtil.Fn} Associated organisation must not be the same as the organisation.");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.data.inconsistent"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.data.inconsistent"]));
}
// Association type.
@@ -441,18 +441,18 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
if ((int)associationType < 1)
{
SaLogger.Warn($"{SysUtil.Fn} Association Type must be specified.");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.data.inconsistent"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.data.inconsistent"]));
}
Sax.AssociationTypeOption associationTypeOption = model.Association.GetAssociationTypeOption();
if ((int)associationTypeOption < 1)
{
SaLogger.Warn($"{SysUtil.Fn} Association Type Option must be specified.");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.data.inconsistent"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.data.inconsistent"]));
}
if (!model.IsConsistentWith(associationTypeOption, associationType))
{
SaLogger.Warn($"{SysUtil.Fn} Association Type Option ({associationTypeOption}) is inconsistent with Association Type ({associationType}).");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.data.inconsistent"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.data.inconsistent"]));
}
// Identify From/To items.
@@ -470,7 +470,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
{
// Inconsistentcy between the 'Existing' flag and whether the Item Association Id has been specified.
SaLogger.Warn($"{SysUtil.Fn} Item Association Id " + (StringUtil.ToBool(model.NewItem) ? "specified for new item" : "not specified for existing item") + ".");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.data.inconsistent"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.data.inconsistent"]));
}
SaxItemAssociation itemAssociation = ItemDataMgr.GetItemAssociationById(itemAssociationId);
if (itemAssociation == null && StringUtil.ToBool(model.NewItem))
@@ -495,7 +495,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
if (itemAssociation == null && SysId.IsValid(itemAssociationId))
{
SaLogger.Warn($"{SysUtil.Fn} Failed to retrieve item association for Id: '{itemAssociationId}'");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
}
if (itemAssociation != null)
@@ -514,12 +514,12 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
if (!itemAssociation.ItemIdFrom.Equals(itemIdFrom))
{
SaLogger.Warn($"{SysUtil.Fn} Inconsistent association - expected 'From' Item Id: {SysId.ToString(itemIdFrom.Id)}. Found: {SysId.ToString(itemAssociation.ItemIdFrom.Id)}");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.system"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.system"]));
}
if (!itemAssociation.ItemIdTo.Equals(itemIdTo))
{
SaLogger.Warn($"{SysUtil.Fn} Inconsistent association - expected 'To' Item Id: {SysId.ToString(itemIdTo.Id)}. Found: {SysId.ToString(itemAssociation.ItemIdTo.Id)}");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.system"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.system"]));
}
}
else
@@ -549,7 +549,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
if (!ItemDataMgr.InsertItemAssociation(itemAssociation, DbUpdateInfo))
{
SaLogger.Warn($"{SysUtil.Fn} Failed to insert item association: {ItemDataMgr.ErrorStateMessage}");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.insert.failed"] + "\n\n" + ItemDataMgr.ErrorStateMessage));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.item.insert.failed"] + "\n\n" + ItemDataMgr.ErrorStateMessage));
}
}
else
@@ -557,7 +557,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
if (!ItemDataMgr.UpdateItemAssociation(itemAssociation, DbUpdateInfo))
{
SaLogger.Warn($"{SysUtil.Fn} Failed to update item association [Id:{SysId.ToString(itemAssociation.Id)}]: {ItemDataMgr.ErrorStateMessage}");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.update.failed"] + "\n\n" + ItemDataMgr.ErrorStateMessage));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.item.update.failed"] + "\n\n" + ItemDataMgr.ErrorStateMessage));
}
}
@@ -584,7 +584,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
return GetAjaxResult_InvalidSession(responseData);
// Record disposable items as they are created so all can be disposed when needed.
- using (DisposableCollection disposableItems = new DisposableCollection())
+ using (DisposableCollection disposableItems = new DisposableCollection())
{
// Organisation.
@@ -594,7 +594,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
if (organisation == null)
{
SaLogger.Warn($"{SysUtil.Fn} Failed to retrieve Organisation for Id: '{model.OrganisationId}'");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.data.incomplete"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.data.incomplete"]));
}
// Association Organisation.
@@ -604,12 +604,12 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
if (organisationAssoc == null)
{
SaLogger.Warn($"{SysUtil.Fn} Failed to retrieve associated Organisation for Id: '{model.OrganisationIdAssoc}'");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.data.incomplete"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.data.incomplete"]));
}
if (organisationIdAssoc.Equals(organisationId))
{
SaLogger.Warn($"{SysUtil.Fn} Associated organisation must not be the same as the organisation.");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.data.inconsistent"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.data.inconsistent"]));
}
// Item Association.
@@ -619,19 +619,19 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
if (itemAssociation == null)
{
SaLogger.Warn($"{SysUtil.Fn} Failed to retrieve Item Association for Id: '{itemAssociationId}'");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
}
// Validate association Item Ids.
if (!itemAssociation.ItemIdFrom.Id.Equals(organisation.Id) && !itemAssociation.ItemIdTo.Id.Equals(organisation.Id))
{
SaLogger.Warn($"{SysUtil.Fn} Inconsistent item association properties. Organisation must be 'From' or 'To' item");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.data.inconsistent"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.data.inconsistent"]));
}
if (!itemAssociation.ItemIdFrom.Id.Equals(organisationAssoc.Id) && !itemAssociation.ItemIdTo.Id.Equals(organisationAssoc.Id))
{
SaLogger.Warn($"{SysUtil.Fn} Inconsistent item association properties. Associated Organisation must be 'From' or 'To' item");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.data.inconsistent"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.data.inconsistent"]));
}
// Logically delete item.
@@ -639,7 +639,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
if (!ItemDataMgr.UpdateItemAssociation(itemAssociation, DbUpdateInfo))
{
SaLogger.Warn($"{SysUtil.Fn} Failed to update Item Association [Id:{SysId.ToString(itemAssociation.Id)}]: {ItemDataMgr.ErrorStateMessage}");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.update.failed"] + "\n\n" + ItemDataMgr.ErrorStateMessage));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.item.update.failed"] + "\n\n" + ItemDataMgr.ErrorStateMessage));
}
// Construct response.
diff --git a/SaxoniteCoreWebAdmin/Admin/Controllers/OrganisationController-Ajax-Images.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/OrganisationController-Ajax-Images.cs
similarity index 93%
rename from SaxoniteCoreWebAdmin/Admin/Controllers/OrganisationController-Ajax-Images.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/OrganisationController-Ajax-Images.cs
index 14afcd3..d9d1eba 100644
--- a/SaxoniteCoreWebAdmin/Admin/Controllers/OrganisationController-Ajax-Images.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/OrganisationController-Ajax-Images.cs
@@ -1,4 +1,4 @@
-using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus;
@@ -58,7 +58,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
return GetAjaxResult_InvalidSession(responseData);
// Record disposable items as they are created so all can be disposed when needed.
- using (DisposableCollection disposableItems = new DisposableCollection())
+ using (DisposableCollection disposableItems = new DisposableCollection())
{
// Reference data - Image content types.
@@ -67,7 +67,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
// Identify item.
SysId organisationId = SysId.ToSysId(model.OrganisationId);
if (!SysId.IsValid(organisationId))
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.id.not.specified"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.item.id.not.specified"]));
// Retrieve item.
SaxOrganisation organisation = AccountMgr.GetOrganisationById(organisationId);
@@ -75,7 +75,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
if (organisation == null)
{
SaLogger.Warn($"{SysUtil.Fn} Failed to retrieve organisation for Id: '{model.OrganisationId}'");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
}
// Organisation address.
@@ -119,18 +119,18 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
RefreshModel(model);
// Record disposable items as they are created so all can be disposed when needed.
- using (DisposableCollection disposableItems = new DisposableCollection())
+ using (DisposableCollection disposableItems = new DisposableCollection())
{
// Retrieve organisation.
SysId organisationId = SysId.ToSysId(model.OrganisationId);
if (!SysId.IsValid(organisationId))
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.id.not.specified"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.item.id.not.specified"]));
SaxOrganisation organisation = AccountMgr.GetOrganisationById(organisationId);
disposableItems.Add(organisation);
if (organisation == null)
{
SaLogger.Warn($"{SysUtil.Fn} Failed to retrieve organisation for Id: '{model.OrganisationId}'");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
}
// Validate number of images.
@@ -218,7 +218,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
}
// Complete response.
- responseData.SetNotification(messageTitle, "Image uploaded.");
+ responseData.SetNotifyMessage(messageTitle, "Image uploaded.");
responseData.Success = true;
return Json(responseData);
}
@@ -238,7 +238,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
return GetAjaxResult_InvalidSession(responseData);
// Record disposable items as they are created so all can be disposed when needed.
- using (DisposableCollection disposableItems = new DisposableCollection())
+ using (DisposableCollection disposableItems = new DisposableCollection())
{
// Validate item properties.
@@ -253,7 +253,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
if (organisation == null)
{
SaLogger.Warn($"{SysUtil.Fn} Failed to retrieve organisation for Id: '{model.OrganisationId}'");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
}
// Organisation address.
diff --git a/SaxoniteCoreWebAdmin/Admin/Controllers/OrganisationController-Ajax-Members.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/OrganisationController-Ajax-Members.cs
similarity index 89%
rename from SaxoniteCoreWebAdmin/Admin/Controllers/OrganisationController-Ajax-Members.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/OrganisationController-Ajax-Members.cs
index f2e427c..f727fd3 100644
--- a/SaxoniteCoreWebAdmin/Admin/Controllers/OrganisationController-Ajax-Members.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/OrganisationController-Ajax-Members.cs
@@ -1,4 +1,4 @@
-using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc;
using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core;
@@ -103,7 +103,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
if (!SysId.IsValid(organisationId))
{
SaLogger.Warn($"{SysUtil.Fn} Request to retrieve members without valid organisation Id.");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.id.not.specified"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.item.id.not.specified"]));
}
// Reference data - organisation roles.
@@ -210,13 +210,13 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
return GetAjaxResult_InvalidSession(responseData);
// Record disposable items as they are created so all can be disposed when needed.
- using (DisposableCollection disposableItems = new DisposableCollection())
+ using (DisposableCollection disposableItems = new DisposableCollection())
{
// Identify item.
SysId userOrganisationId = SysId.ToSysId(model.UserOrganisationId);
if (!SysId.IsValid(userOrganisationId))
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.id.not.specified"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.item.id.not.specified"]));
// Retrieve item.
SaxUserOrganisation userOrganisation = AccountMgr.GetUserOrganisationById(userOrganisationId);
@@ -224,7 +224,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
if (userOrganisation == null)
{
SaLogger.Warn($"{SysUtil.Fn} Failed to retrieve User Organisation for Id: '{model.UserOrganisationId}'");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
}
// Retrieve User Account.
@@ -233,7 +233,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
if (userAccount == null)
{
SaLogger.Warn($"{SysUtil.Fn} Failed to retrieve user account for Id: '{userOrganisation.UserAccountId}'");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
}
// Retrieve Organisation.
@@ -242,7 +242,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
if (organisation == null)
{
SaLogger.Warn($"{SysUtil.Fn} Failed to retrieve organisation for Id: '{userOrganisation.OrganisationId}'");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
}
// Construct response.
@@ -273,7 +273,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
return Json(responseData);
// Record disposable items as they are created so all can be disposed when needed.
- using (DisposableCollection disposableItems = new DisposableCollection())
+ using (DisposableCollection disposableItems = new DisposableCollection())
{
// User account.
@@ -288,7 +288,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
if (!SysId.IsValid(userAccountId))
{
SaLogger.Warn($"{SysUtil.Fn} User Account must be identified");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.data.incomplete"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.data.incomplete"]));
}
// Organisation.
@@ -297,7 +297,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
if (!SysId.IsValid(organisationId))
{
SaLogger.Warn($"{SysUtil.Fn} Organisation Id must be specified");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.data.incomplete"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.data.incomplete"]));
}
// Retrieve existing item.
@@ -307,13 +307,13 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
if (userOrganisation == null && SysId.IsValid(userOrganisationId))
{
SaLogger.Warn($"{SysUtil.Fn} Failed to retrieve user organisation for Id: '{userOrganisationId}'");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
}
if (userOrganisation != null && (!userOrganisation.UserAccountId.Equals(userAccountId) || !userOrganisation.OrganisationId.Equals(organisationId)))
{
// Either User Account and/or Organisation Ids don't match.
SaLogger.Warn($"{SysUtil.Fn} Inconsistent user organisation properties. UserAccountId: {userOrganisation.UserAccountId} vs {userAccountId}. OrganisationId: {userOrganisation.OrganisationId} vs {organisationId}.");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
}
// User Organisation not identified.
@@ -359,7 +359,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
if (!AccountMgr.InsertUserOrganisation(userOrganisation, DbUpdateInfo))
{
SaLogger.Warn($"{SysUtil.Fn} Failed to insert user organisation: {AccountMgr.ErrorStateMessage}");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.insert.failed"] + "\n\n" + AccountMgr.ErrorStateMessage));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.item.insert.failed"] + "\n\n" + AccountMgr.ErrorStateMessage));
}
}
else
@@ -367,7 +367,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
if (!AccountMgr.UpdateUserOrganisation(userOrganisation, DbUpdateInfo))
{
SaLogger.Warn($"{SysUtil.Fn} Failed to update user organisation [Id:{SysId.ToString(userOrganisation.Id)}]: {AccountMgr.ErrorStateMessage}");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.update.failed"] + "\n\n" + AccountMgr.ErrorStateMessage));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.item.update.failed"] + "\n\n" + AccountMgr.ErrorStateMessage));
}
}
@@ -394,7 +394,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
return GetAjaxResult_InvalidSession(responseData);
// Record disposable items as they are created so all can be disposed when needed.
- using (DisposableCollection disposableItems = new DisposableCollection())
+ using (DisposableCollection disposableItems = new DisposableCollection())
{
// Organisation.
@@ -403,7 +403,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
if (organisation == null)
{
SaLogger.Warn($"{SysUtil.Fn} Failed to retrieve Organisation for Id: '{model.OrganisationId}'");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.data.incomplete"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.data.incomplete"]));
}
disposableItems.Add(organisation);
@@ -414,12 +414,12 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
if (userOrganisation == null)
{
SaLogger.Warn($"{SysUtil.Fn} Failed to retrieve user organisation for Id: '{userOrganisationId}'");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
}
if (!userOrganisation.OrganisationId.Equals(organisation.Id))
{
SaLogger.Warn($"{SysUtil.Fn} Inconsistent user organisation properties. OrganisationId: {userOrganisation.OrganisationId} vs {organisation.Id}.");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.data.inconsistent"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.data.inconsistent"]));
}
// User Account.
@@ -428,7 +428,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
if (userAccount == null)
{
SaLogger.Warn($"{SysUtil.Fn} Failed to retrieve user account for Id: '{userOrganisation.UserAccountId}'");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.system"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.system"]));
}
// Remove all roles and store.
@@ -440,7 +440,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
if (!AccountMgr.InsertUserOrganisation(userOrganisation, DbUpdateInfo))
{
SaLogger.Warn($"{SysUtil.Fn} Failed to insert user organisation: {AccountMgr.ErrorStateMessage}");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.insert.failed"] + "\n\n" + AccountMgr.ErrorStateMessage));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.item.insert.failed"] + "\n\n" + AccountMgr.ErrorStateMessage));
}
}
else
@@ -448,7 +448,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
if (!AccountMgr.UpdateUserOrganisation(userOrganisation, DbUpdateInfo))
{
SaLogger.Warn($"{SysUtil.Fn} Failed to update user organisation [Id:{SysId.ToString(userOrganisation.Id)}]: {AccountMgr.ErrorStateMessage}");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.update.failed"] + "\n\n" + AccountMgr.ErrorStateMessage));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.item.update.failed"] + "\n\n" + AccountMgr.ErrorStateMessage));
}
}
diff --git a/SaxoniteCoreWebAdmin/Admin/Controllers/OrganisationController-Ajax-Upload.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/OrganisationController-Ajax-Upload.cs
similarity index 84%
rename from SaxoniteCoreWebAdmin/Admin/Controllers/OrganisationController-Ajax-Upload.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/OrganisationController-Ajax-Upload.cs
index 66e8312..769a590 100644
--- a/SaxoniteCoreWebAdmin/Admin/Controllers/OrganisationController-Ajax-Upload.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/OrganisationController-Ajax-Upload.cs
@@ -1,4 +1,4 @@
-using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc;
using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core;
@@ -47,26 +47,26 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
return GetAjaxResult_InvalidSession(responseData);
// Record disposable items as they are created so all can be disposed when needed.
- using (DisposableCollection disposableItems = new DisposableCollection())
+ using (DisposableCollection disposableItems = new DisposableCollection())
{
// Process console.
SaxProcessConsole_Admin processConsole = GetProcessConsole_Admin(SessionContext);
if (processConsole == null)
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.system"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.system"]));
try
{
// Check whether upload is in progress.
if (processConsole.IsProcessing(SaxProcessConsole_Admin.ProcessType.OrganisationUpload))
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.process.in.progress"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.process.in.progress"]));
}
catch (Exception exc)
{
SaLogger.Warn(fn + " " + exc.GetType().Name + " initialising organisation uploader.");
- return Json(responseData.SetMessage(messageTitle, exc.GetType().Name + " initialising organisation uploader."));
+ return Json(responseData.SetPopupMessage(messageTitle, exc.GetType().Name + " initialising organisation uploader."));
}
}
@@ -98,7 +98,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
return GetAjaxResult_InvalidSession(responseData);
// Record disposable items as they are created so all can be disposed when needed.
- using (DisposableCollection disposableItems = new DisposableCollection())
+ using (DisposableCollection disposableItems = new DisposableCollection())
{
// Validate supplied data properties.
@@ -108,14 +108,14 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
// Process console.
SaxProcessConsole_Admin processConsole = GetProcessConsole_Admin(SessionContext);
if (processConsole == null)
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.system"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.system"]));
try
{
// Check whether upload is in progress.
if (processConsole.IsProcessing(SaxProcessConsole_Admin.ProcessType.OrganisationUpload))
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.process.in.progress"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.process.in.progress"]));
// Create the upload process.
SaxOrganisationUploader.Config processConfig = new SaxOrganisationUploader.Config(SessionContext, DbUpdateInfo, model.OrganisationDataFile[0]);
@@ -132,7 +132,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
catch (Exception exc)
{
SaLogger.Warn(fn + " " + exc.GetType().Name + " initialising organisation uploader.");
- return Json(responseData.SetMessage(messageTitle, exc.GetType().Name + " initialising organisation uploader."));
+ return Json(responseData.SetPopupMessage(messageTitle, exc.GetType().Name + " initialising organisation uploader."));
}
}
diff --git a/SaxoniteCoreWebAdmin/Admin/Controllers/OrganisationController-Ajax.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/OrganisationController-Ajax.cs
similarity index 96%
rename from SaxoniteCoreWebAdmin/Admin/Controllers/OrganisationController-Ajax.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/OrganisationController-Ajax.cs
index d5ffd8e..d37c9bd 100644
--- a/SaxoniteCoreWebAdmin/Admin/Controllers/OrganisationController-Ajax.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/OrganisationController-Ajax.cs
@@ -1,4 +1,4 @@
-using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc;
using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core;
@@ -281,13 +281,13 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
return GetAjaxResult_InvalidSession(responseData);
// Record disposable items as they are created so all can be disposed when needed.
- using (DisposableCollection disposableItems = new DisposableCollection())
+ using (DisposableCollection disposableItems = new DisposableCollection())
{
// Identify item.
SysId organisationId = SysId.ToSysId(model.OrganisationId);
if (!SysId.IsValid(organisationId))
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.id.not.specified"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.item.id.not.specified"]));
// Retrieve item.
SaxOrganisation organisation = AccountMgr.GetOrganisationById(organisationId);
@@ -295,7 +295,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
if (organisation == null)
{
SaLogger.Warn(fn + " Failed to retrieve organisation for Id: '" + model.OrganisationId + "'");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
}
// Organisation address.
@@ -327,7 +327,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
return GetAjaxResult_InvalidSession(responseData);
// Record disposable items as they are created so all can be disposed when needed.
- using (DisposableCollection disposableItems = new DisposableCollection())
+ using (DisposableCollection disposableItems = new DisposableCollection())
{
// Validate item properties.
@@ -342,7 +342,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
if (organisation == null && SysId.IsValid(organisationId))
{
SaLogger.Warn(fn + " Failed to retrieve organisation for Id: '" + model.OrganisationId + "'");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
}
// Create new item if required.
@@ -385,7 +385,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
if (!AccountMgr.InsertOrganisation(organisation, DbUpdateInfo))
{
SaLogger.Warn(fn + " Failed to insert organisation: " + AccountMgr.ErrorStateMessage);
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.insert.failed"] + "\n\n" + AccountMgr.ErrorStateMessage));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.item.insert.failed"] + "\n\n" + AccountMgr.ErrorStateMessage));
}
}
else
@@ -393,7 +393,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
if (!AccountMgr.UpdateOrganisation(organisation, DbUpdateInfo))
{
SaLogger.Warn(fn + " Failed to update organisation [Id:" + SysId.ToString(organisation.Id) + "]: " + AccountMgr.ErrorStateMessage);
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.update.failed"] + "\n\n" + AccountMgr.ErrorStateMessage));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.item.update.failed"] + "\n\n" + AccountMgr.ErrorStateMessage));
}
}
diff --git a/SaxoniteCoreWebAdmin/Admin/Controllers/OrganisationController-Download.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/OrganisationController-Download.cs
similarity index 94%
rename from SaxoniteCoreWebAdmin/Admin/Controllers/OrganisationController-Download.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/OrganisationController-Download.cs
index 7de69dd..c1ba337 100644
--- a/SaxoniteCoreWebAdmin/Admin/Controllers/OrganisationController-Download.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/OrganisationController-Download.cs
@@ -1,4 +1,4 @@
-using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc;
using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core;
@@ -43,7 +43,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
return Unauthorized();
// Record disposable items as they are created so all can be disposed when needed.
- using (DisposableCollection disposableItems = new DisposableCollection())
+ using (DisposableCollection disposableItems = new DisposableCollection())
{
// Validate supplied data properties.
diff --git a/SaxoniteCoreWebAdmin/Admin/Controllers/OrganisationController.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/OrganisationController.cs
similarity index 99%
rename from SaxoniteCoreWebAdmin/Admin/Controllers/OrganisationController.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/OrganisationController.cs
index 34c6fca..ae26232 100644
--- a/SaxoniteCoreWebAdmin/Admin/Controllers/OrganisationController.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/OrganisationController.cs
@@ -1,4 +1,4 @@
-using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Utils;
diff --git a/SaxoniteCoreWebAdmin/Admin/Controllers/PoliciesController.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/PoliciesController.cs
similarity index 97%
rename from SaxoniteCoreWebAdmin/Admin/Controllers/PoliciesController.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/PoliciesController.cs
index 2adc2f7..81090e4 100644
--- a/SaxoniteCoreWebAdmin/Admin/Controllers/PoliciesController.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/PoliciesController.cs
@@ -1,4 +1,4 @@
-using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using Saxonite.Net.Core.Web.Admin.Models;
using Saxonite.Net.Core.Web.Base.App;
diff --git a/SaxoniteCoreWebAdmin/Admin/Controllers/Reference/ReferenceBaseballController .cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/Reference/ReferenceBaseballController .cs
similarity index 97%
rename from SaxoniteCoreWebAdmin/Admin/Controllers/Reference/ReferenceBaseballController .cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/Reference/ReferenceBaseballController .cs
index 4496c08..33211ae 100644
--- a/SaxoniteCoreWebAdmin/Admin/Controllers/Reference/ReferenceBaseballController .cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/Reference/ReferenceBaseballController .cs
@@ -1,4 +1,4 @@
-using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using Saxonite.Net.Core.Web.Admin.Models.Reference;
using Saxonite.Net.Core.Web.Base.App;
diff --git a/SaxoniteCoreWebAdmin/Admin/Controllers/Reference/ReferenceBaseballController-Ajax-Stats.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/Reference/ReferenceBaseballController-Ajax-Stats.cs
similarity index 98%
rename from SaxoniteCoreWebAdmin/Admin/Controllers/Reference/ReferenceBaseballController-Ajax-Stats.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/Reference/ReferenceBaseballController-Ajax-Stats.cs
index 03e678a..f0a6464 100644
--- a/SaxoniteCoreWebAdmin/Admin/Controllers/Reference/ReferenceBaseballController-Ajax-Stats.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/Reference/ReferenceBaseballController-Ajax-Stats.cs
@@ -1,4 +1,4 @@
-using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc;
using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core;
diff --git a/SaxoniteCoreWebAdmin/Admin/Controllers/Reference/ReferenceBaseballController-Ajax.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/Reference/ReferenceBaseballController-Ajax.cs
similarity index 97%
rename from SaxoniteCoreWebAdmin/Admin/Controllers/Reference/ReferenceBaseballController-Ajax.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/Reference/ReferenceBaseballController-Ajax.cs
index 8acade4..729ac76 100644
--- a/SaxoniteCoreWebAdmin/Admin/Controllers/Reference/ReferenceBaseballController-Ajax.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/Reference/ReferenceBaseballController-Ajax.cs
@@ -1,4 +1,4 @@
-using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc;
using NPOI.SS.Formula.Functions;
using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus;
diff --git a/SaxoniteCoreWebAdmin/Admin/Controllers/Reference/ReferenceController-Ajax-ContactMethods.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/Reference/ReferenceController-Ajax-ContactMethods.cs
similarity index 98%
rename from SaxoniteCoreWebAdmin/Admin/Controllers/Reference/ReferenceController-Ajax-ContactMethods.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/Reference/ReferenceController-Ajax-ContactMethods.cs
index 9475a45..b12614c 100644
--- a/SaxoniteCoreWebAdmin/Admin/Controllers/Reference/ReferenceController-Ajax-ContactMethods.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/Reference/ReferenceController-Ajax-ContactMethods.cs
@@ -1,4 +1,4 @@
-using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc;
using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Utils;
using Saxonite.Net.Core.Web.Admin.Models;
diff --git a/SaxoniteCoreWebAdmin/Admin/Controllers/Reference/ReferenceController-Ajax.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/Reference/ReferenceController-Ajax.cs
similarity index 96%
rename from SaxoniteCoreWebAdmin/Admin/Controllers/Reference/ReferenceController-Ajax.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/Reference/ReferenceController-Ajax.cs
index 55f91e3..04c0c66 100644
--- a/SaxoniteCoreWebAdmin/Admin/Controllers/Reference/ReferenceController-Ajax.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/Reference/ReferenceController-Ajax.cs
@@ -1,4 +1,4 @@
-using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus;
diff --git a/SaxoniteCoreWebAdmin/Admin/Controllers/Reference/ReferenceGolfController-Ajax-Stats.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/Reference/ReferenceGolfController-Ajax-Stats.cs
similarity index 99%
rename from SaxoniteCoreWebAdmin/Admin/Controllers/Reference/ReferenceGolfController-Ajax-Stats.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/Reference/ReferenceGolfController-Ajax-Stats.cs
index 41e7910..2b04b05 100644
--- a/SaxoniteCoreWebAdmin/Admin/Controllers/Reference/ReferenceGolfController-Ajax-Stats.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/Reference/ReferenceGolfController-Ajax-Stats.cs
@@ -1,4 +1,4 @@
-using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc;
using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core;
diff --git a/SaxoniteCoreWebAdmin/Admin/Controllers/Reference/ReferenceGolfController-Ajax.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/Reference/ReferenceGolfController-Ajax.cs
similarity index 98%
rename from SaxoniteCoreWebAdmin/Admin/Controllers/Reference/ReferenceGolfController-Ajax.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/Reference/ReferenceGolfController-Ajax.cs
index 1a2fd8d..d026399 100644
--- a/SaxoniteCoreWebAdmin/Admin/Controllers/Reference/ReferenceGolfController-Ajax.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/Reference/ReferenceGolfController-Ajax.cs
@@ -1,4 +1,4 @@
-using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc;
using NPOI.SS.Formula.Functions;
using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus;
@@ -447,20 +447,20 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers.Reference
return GetAjaxResult_InvalidSession(responseData);
// Record disposable items as they are created so all can be disposed when needed.
- using (DisposableCollection disposableItems = new DisposableCollection())
+ using (DisposableCollection disposableItems = new DisposableCollection())
{
// Process console.
SaxProcessConsole_Admin processConsole = GetProcessConsole_Admin(SessionContext);
if (processConsole == null)
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.system"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.system"]));
try
{
// Check whether process is in progress.
if (processConsole.IsProcessing(SaxProcessConsole_Admin.ProcessType.GolfUsgaDataLookup))
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.process.in.progress"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.process.in.progress"]));
// Configure the process.
SaxGolfUsgaDataLookup.Config processConfig = new SaxGolfUsgaDataLookup.Config(SessionContext, DbUpdateInfo);
@@ -475,12 +475,12 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers.Reference
catch (Exception exc)
{
SaLogger.Warn($"{SysUtil.Fn} {exc.GetType().Name} initialising organisation uploader.");
- return Json(responseData.SetMessage(messageTitle, exc.GetType().Name + " initialising USGA Golf Data Loader."));
+ return Json(responseData.SetPopupMessage(messageTitle, exc.GetType().Name + " initialising USGA Golf Data Loader."));
}
}
// Complete response.
- Json(responseData.SetMessage(messageTitle, "Course caption cleansing is underway."));
+ Json(responseData.SetPopupMessage(messageTitle, "Course caption cleansing is underway."));
responseData.Success = true;
return Json(responseData);
}
diff --git a/SaxoniteCoreWebAdmin/Admin/Controllers/Reference/ReferenceGolfController.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/Reference/ReferenceGolfController.cs
similarity index 97%
rename from SaxoniteCoreWebAdmin/Admin/Controllers/Reference/ReferenceGolfController.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/Reference/ReferenceGolfController.cs
index e337475..fbb7d69 100644
--- a/SaxoniteCoreWebAdmin/Admin/Controllers/Reference/ReferenceGolfController.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/Reference/ReferenceGolfController.cs
@@ -1,4 +1,4 @@
-using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using Saxonite.Net.Core.Web.Admin.Models.Reference;
using Saxonite.Net.Core.Web.Base.App;
diff --git a/SaxoniteCoreWebAdmin/Admin/Controllers/RegionController-Ajax.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/RegionController-Ajax.cs
similarity index 91%
rename from SaxoniteCoreWebAdmin/Admin/Controllers/RegionController-Ajax.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/RegionController-Ajax.cs
index 9f10cde..6beb68a 100644
--- a/SaxoniteCoreWebAdmin/Admin/Controllers/RegionController-Ajax.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/RegionController-Ajax.cs
@@ -1,4 +1,4 @@
-using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc;
using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core;
@@ -167,13 +167,13 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
return GetAjaxResult_InvalidSession(responseData);
// Record disposable items as they are created so all can be disposed when needed.
- using (DisposableCollection disposableItems = new DisposableCollection())
+ using (DisposableCollection disposableItems = new DisposableCollection())
{
// Identify item.
SysId regionId = SysId.ToSysId(model.RegionId);
if (!SysId.IsValid(regionId))
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.id.not.specified"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.item.id.not.specified"]));
// Retrieve item.
SaxRegion region = ReferenceMgr.GetRegionById(regionId);
@@ -181,7 +181,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
if (region == null)
{
SaLogger.Warn(fn + " Failed to retrieve region for Id: '" + model.RegionId + "'");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
}
// Construct response.
@@ -210,7 +210,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
return GetAjaxResult_InvalidSession(responseData);
// Record disposable items as they are created so all can be disposed when needed.
- using (DisposableCollection disposableItems = new DisposableCollection())
+ using (DisposableCollection disposableItems = new DisposableCollection())
{
// Validate item properties.
@@ -225,7 +225,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
if (region == null && SysId.IsValid(regionId))
{
SaLogger.Warn(fn + " Failed to retrieve region for Id: '" + model.RegionId + "'");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
}
// Create new item if required.
@@ -253,7 +253,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
if (!ReferenceMgr.InsertRegion(region, DbUpdateInfo))
{
SaLogger.Warn(fn + " Failed to insert region: " + ReferenceMgr.ErrorStateMessage);
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.insert.failed"] + "\n\n" + ReferenceMgr.ErrorStateMessage));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.item.insert.failed"] + "\n\n" + ReferenceMgr.ErrorStateMessage));
}
}
else
@@ -261,7 +261,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
if (!ReferenceMgr.UpdateRegion(region, DbUpdateInfo))
{
SaLogger.Warn(fn + " Failed to update region [Id:" + SysId.ToString(region.Id) + "]: " + ReferenceMgr.ErrorStateMessage);
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.update.failed"] + "\n\n" + ReferenceMgr.ErrorStateMessage));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.item.update.failed"] + "\n\n" + ReferenceMgr.ErrorStateMessage));
}
}
diff --git a/SaxoniteCoreWebAdmin/Admin/Controllers/RegionController.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/RegionController.cs
similarity index 97%
rename from SaxoniteCoreWebAdmin/Admin/Controllers/RegionController.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/RegionController.cs
index aa9d86c..e4909d2 100644
--- a/SaxoniteCoreWebAdmin/Admin/Controllers/RegionController.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/RegionController.cs
@@ -1,4 +1,4 @@
-using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using Saxonite.Net.Core.Web.Admin.Models;
using Saxonite.Net.Core.Web.Base.App;
diff --git a/SaxoniteCoreWebAdmin/Admin/Controllers/SaxController_Admin.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/SaxController_Admin.cs
similarity index 93%
rename from SaxoniteCoreWebAdmin/Admin/Controllers/SaxController_Admin.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/SaxController_Admin.cs
index 8f4d412..69f8823 100644
--- a/SaxoniteCoreWebAdmin/Admin/Controllers/SaxController_Admin.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/SaxController_Admin.cs
@@ -1,4 +1,4 @@
-using Microsoft.Extensions.Logging;
+using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus;
@@ -65,7 +65,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
String fn = GetType().Name + ".SignUserIn";
// Record disposable items as they are created so all can be disposed when needed.
- using (DisposableCollection disposableItems = new DisposableCollection())
+ using (DisposableCollection disposableItems = new DisposableCollection())
{
List userRoles = AccountMgr.GetRolesForUser(userAccount.Id);
disposableItems.AddRange(userRoles);
@@ -210,8 +210,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
{
public static String CookieName = "SXKLI";
public static String Base64Key = SacsEncryptionHelper.EncodePlainKey("<=Saxonite^{kEEp+1Ogg3d-IN}~32*>", SacsEncryptionHelper.KeyLength);
- public static String Base64IV = "YOX10FIPp1zM1pg5U6fW7A==";
- private static String Base64IV_Generated = SacsEncryptionHelper.InitSymmetricEncryptionIV(KeepLoggedIn.Base64Key);
+ public const String Purpose = "Saxonite.Admin.KeepLoggedIn";
}
//-------------------------------------------------------------------
@@ -221,7 +220,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
{
NameValueCollection keepLoggedInParams = new NameValueCollection();
keepLoggedInParams.Add(ParamName_KeepLoggedIn_UserAccountId, SysId.ToString(SessionData_Admin.User.UserAccountId));
- return EncryptParameters(keepLoggedInParams, KeepLoggedIn.Base64IV, KeepLoggedIn.Base64Key);
+ return EncryptParameters(keepLoggedInParams, KeepLoggedIn.Base64Key, KeepLoggedIn.Purpose);
}
//-------------------------------------------------------------------
@@ -242,7 +241,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
KeepLoggedInParams keepLoggedInParams = new KeepLoggedInParams();
if (!StringUtil.IsEmpty(encryptedParams))
{
- NameValueCollection linkParams = DecryptParameters(encryptedParams, KeepLoggedIn.Base64IV, KeepLoggedIn.Base64Key);
+ NameValueCollection linkParams = DecryptParameters(encryptedParams, KeepLoggedIn.Base64Key, KeepLoggedIn.Purpose);
keepLoggedInParams.UserAccountId = new SysId(StringUtil.ToInt(linkParams.Get(ParamName_KeepLoggedIn_UserAccountId)));
}
if (DebugMode) SaLogger.Info($"{SysUtil.Fn} UserAccountId: " + SysId.ToString(keepLoggedInParams.UserAccountId));
@@ -267,12 +266,12 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
//-------------------------------------------------------------------
// Parameter encryption, eg. for images.
//-------------------------------------------------------------------
- // Encryption key is the same for all users each time the application is started,
- // but a different IV value is generated for each session so that the links/parameters cannot be shared.
+ // Purpose-bound AES-GCM envelopes use a fresh nonce for every encrypted value.
public static String Base64Key_AdminApp { get; } = SacsEncryptionHelper.EncodePlainKey("Saxonite&Admin#Encryption-" + DateTime.Today.Format("ddMMyy"), SacsEncryptionHelper.KeyLength);
+ private const String Purpose_AdminApp = "Saxonite.Admin.Parameters";
protected String EncryptSessionParams(NameValueCollection parameters)
{
- return HttpUtility.UrlEncode(EncryptParameters(parameters, SessionData_Admin.Base64IV_AdminApp, Base64Key_AdminApp));
+ return HttpUtility.UrlEncode(EncryptParameters(parameters, Base64Key_AdminApp, Purpose_AdminApp));
}
public static String EncryptSessionParams(SaxController_Admin controller, NameValueCollection parameters)
{
@@ -280,7 +279,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
}
protected NameValueCollection ExtractSessionParams(String encryptedParams)
{
- return DecryptParameters(encryptedParams, SessionData_Admin.Base64IV_AdminApp, Base64Key_AdminApp);
+ return DecryptParameters(encryptedParams, Base64Key_AdminApp, Purpose_AdminApp);
}
//-------------------------------------------------------------------
diff --git a/SaxoniteCoreWebAdmin/Admin/Controllers/SecurityController-Ajax.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/SecurityController-Ajax.cs
similarity index 93%
rename from SaxoniteCoreWebAdmin/Admin/Controllers/SecurityController-Ajax.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/SecurityController-Ajax.cs
index 7f9a218..f1e1fdd 100644
--- a/SaxoniteCoreWebAdmin/Admin/Controllers/SecurityController-Ajax.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/SecurityController-Ajax.cs
@@ -1,4 +1,4 @@
-using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc;
using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core;
@@ -46,7 +46,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
return Json(responseData);
// Record disposable items as they are created so all can be disposed when needed.
- using (DisposableCollection disposableItems = new DisposableCollection())
+ using (DisposableCollection disposableItems = new DisposableCollection())
{
// Get user account.
@@ -106,7 +106,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
SaxUserAccount userAccount = null;
// Record disposable items as they are created so all can be disposed when needed.
- using (DisposableCollection disposableItems = new DisposableCollection())
+ using (DisposableCollection disposableItems = new DisposableCollection())
{
// Identify user account.
@@ -182,7 +182,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
return Json(responseData.SetSessionExpired(messageTitle, Localiser["security.msg.warn.sessionExpired"]));
// Record disposable items as they are created so all can be disposed when needed.
- using (DisposableCollection disposableItems = new DisposableCollection())
+ using (DisposableCollection disposableItems = new DisposableCollection())
{
// Retrieve user account - in case sign-out needs to be recorded.
@@ -191,7 +191,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
if (userAccount == null)
{
SaLogger.Warn(fn + " System error on sign-out - failed to retrieve account details. Id: " + SysId.ToInt(SessionData_Admin.User.UserAccountId));
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.system"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.system"]));
}
// Clear user session.
@@ -248,7 +248,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
String messageTitle = Localiser["security.caption.change.password"];
// Record disposable items as they are created so all can be disposed when needed.
- using (DisposableCollection disposableItems = new DisposableCollection())
+ using (DisposableCollection disposableItems = new DisposableCollection())
{
// If 'Request Password' encrypted params (from email link) are present,
@@ -324,7 +324,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
// Construct response.
responseData.Success = true;
if (validRequestPasswordParams)
- responseData.SetMessage(messageTitle, Localiser["security.msg.request.password.saved"]);
+ responseData.SetPopupMessage(messageTitle, Localiser["security.msg.request.password.saved"]);
}
return Json(responseData);
@@ -355,7 +355,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
return Json(responseData);
// Record disposable items as they are created so all can be disposed when needed.
- using (DisposableCollection disposableItems = new DisposableCollection())
+ using (DisposableCollection disposableItems = new DisposableCollection())
{
// Retrieve user account.
@@ -412,11 +412,8 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
private static String ParamName_EmailAddress { get; } = "ema";
private static String ParamName_ExpiresAt { get; } = "exp";
private static String ParamName_Token { get; } = "tok";
- // NB IV value is generated from the key and fixed so that it doesn't change when the application restarts.
- // IV Must be regenerated if key is changed.
private static String Base64Key_RequestPassword_Admin { get; } = SacsEncryptionHelper.EncodePlainKey("{~Saxonite@@Request^Password=}", SacsEncryptionHelper.KeyLength);
- //private static String Base64IV_RequestPassword_Generated { get; } = SacsEncryptionHelper.InitSymmetricEncryptionIV(Base64Key_RequestPassword);
- private static String Base64IV_RequestPassword_Admin { get; } = "1VAWYTW6d72n/6HDNhbqow==";
+ private const String Purpose_RequestPassword_Admin = "Saxonite.Admin.RequestPassword";
///
/// Generate Request Password link.
/// NB For an Online application request (from teh ASdmin system), must ensure that the URL and encryption parameters are switched.
@@ -426,7 +423,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
// Base URL.
String baseUrl = onlineContext ? controller.AppConfig.URL.Online.Root : controller.GetRedirectLocation(RedirectLocation.WebAppBase);
String requestPassword_Base64Key = onlineContext ? Base64Key_RequestPassword_Online : Base64Key_RequestPassword_Admin;
- String requestPassword_ase64IV = onlineContext ? Base64IV_RequestPassword_Online : Base64IV_RequestPassword_Admin;
+ String requestPassword_Purpose = onlineContext ? Purpose_RequestPassword_Online : Purpose_RequestPassword_Admin;
NameValueCollection parameters = new NameValueCollection();
parameters.Add(ParamName_UserAccountId, SysId.ToString(userAccountId));
@@ -435,7 +432,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
parameters.Add(ParamName_Token, requestPasswordToken);
String link =
baseUrl + "Security/ChangePassword?" +
- ParamName_RequestPasswordEncrypted + "=" + HttpUtility.UrlEncode(EncryptParameters(parameters, requestPassword_ase64IV, requestPassword_Base64Key));
+ ParamName_RequestPasswordEncrypted + "=" + HttpUtility.UrlEncode(EncryptParameters(parameters, requestPassword_Base64Key, requestPassword_Purpose));
return link;
}
internal static int GetRequestPasswordEmailLinkExpiresMinutes(SaxController_Admin controller)
@@ -488,7 +485,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
RequestPasswordParams requestPasswordParams = new RequestPasswordParams();
if (!StringUtil.IsEmpty(encryptedParams))
{
- NameValueCollection linkParams = DecryptParameters(encryptedParams, Base64IV_RequestPassword_Admin, Base64Key_RequestPassword_Admin);
+ NameValueCollection linkParams = DecryptParameters(encryptedParams, Base64Key_RequestPassword_Admin, Purpose_RequestPassword_Admin);
requestPasswordParams.UserAccountId = new SysId(StringUtil.ToInt(linkParams.Get(ParamName_UserAccountId)));
requestPasswordParams.EmailAddress = linkParams.Get(ParamName_EmailAddress);
requestPasswordParams.ExpiresAt = DateUtil.ParseXmlDateTime(linkParams.Get(ParamName_ExpiresAt));
diff --git a/SaxoniteCoreWebAdmin/Admin/Controllers/SecurityController.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/SecurityController.cs
similarity index 99%
rename from SaxoniteCoreWebAdmin/Admin/Controllers/SecurityController.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/SecurityController.cs
index 2df9baf..9d16828 100644
--- a/SaxoniteCoreWebAdmin/Admin/Controllers/SecurityController.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/SecurityController.cs
@@ -1,4 +1,4 @@
-using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Primitives;
diff --git a/SaxoniteCoreWebAdmin/Admin/Controllers/SportController-Ajax.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/SportController-Ajax.cs
similarity index 92%
rename from SaxoniteCoreWebAdmin/Admin/Controllers/SportController-Ajax.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/SportController-Ajax.cs
index fdc1a40..2da11c3 100644
--- a/SaxoniteCoreWebAdmin/Admin/Controllers/SportController-Ajax.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/SportController-Ajax.cs
@@ -1,4 +1,4 @@
-using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc;
using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core;
@@ -164,13 +164,13 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
return GetAjaxResult_InvalidSession(responseData);
// Record disposable items as they are created so all can be disposed when needed.
- using (DisposableCollection disposableItems = new DisposableCollection())
+ using (DisposableCollection disposableItems = new DisposableCollection())
{
// Identify item.
SysId sportId = SysId.ToSysId(model.SportId);
if (!SysId.IsValid(sportId))
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.id.not.specified"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.item.id.not.specified"]));
// Retrieve item.
SaxSport sport = ReferenceMgr.GetSportById(sportId);
@@ -178,7 +178,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
if (sport == null)
{
SaLogger.Warn(fn + " Failed to retrieve sport for Id: '" + model.SportId + "'");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
}
// Parent sport.
@@ -211,7 +211,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
return GetAjaxResult_InvalidSession(responseData);
// Record disposable items as they are created so all can be disposed when needed.
- using (DisposableCollection disposableItems = new DisposableCollection())
+ using (DisposableCollection disposableItems = new DisposableCollection())
{
// Validate item properties.
@@ -226,7 +226,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
if (sport == null && SysId.IsValid(sportId))
{
SaLogger.Warn(fn + " Failed to retrieve sport for Id: '" + model.SportId + "'");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
}
// Create new item if required.
@@ -254,7 +254,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
if (!ReferenceMgr.InsertSport(sport, DbUpdateInfo))
{
SaLogger.Warn(fn + " Failed to insert sport: " + ReferenceMgr.ErrorStateMessage);
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.insert.failed"] + "\n\n" + ReferenceMgr.ErrorStateMessage));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.item.insert.failed"] + "\n\n" + ReferenceMgr.ErrorStateMessage));
}
}
else
@@ -262,7 +262,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
if (!ReferenceMgr.UpdateSport(sport, DbUpdateInfo))
{
SaLogger.Warn(fn + " Failed to update sport [Id:" + SysId.ToString(sport.Id) + "]: " + ReferenceMgr.ErrorStateMessage);
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.update.failed"] + "\n\n" + ReferenceMgr.ErrorStateMessage));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.item.update.failed"] + "\n\n" + ReferenceMgr.ErrorStateMessage));
}
}
diff --git a/SaxoniteCoreWebAdmin/Admin/Controllers/SportController.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/SportController.cs
similarity index 97%
rename from SaxoniteCoreWebAdmin/Admin/Controllers/SportController.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/SportController.cs
index 38f8cf1..7202a90 100644
--- a/SaxoniteCoreWebAdmin/Admin/Controllers/SportController.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/SportController.cs
@@ -1,4 +1,4 @@
-using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using Saxonite.Net.Core.Web.Admin.Models;
using Saxonite.Net.Core.Web.Base.App;
diff --git a/SaxoniteCoreWebAdmin/Admin/Controllers/Support/Controller_UserReport-Ajax.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/Support/Controller_UserReport-Ajax.cs
similarity index 93%
rename from SaxoniteCoreWebAdmin/Admin/Controllers/Support/Controller_UserReport-Ajax.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/Support/Controller_UserReport-Ajax.cs
index 2df2724..a851e0b 100644
--- a/SaxoniteCoreWebAdmin/Admin/Controllers/Support/Controller_UserReport-Ajax.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/Support/Controller_UserReport-Ajax.cs
@@ -1,4 +1,4 @@
-using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus;
@@ -220,13 +220,13 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers.Support
return GetAjaxResult_InvalidSession(responseData);
// Record disposable items as they are created so all can be disposed when needed.
- using (DisposableCollection disposableItems = new DisposableCollection())
+ using (DisposableCollection disposableItems = new DisposableCollection())
{
// Identify item.
SysId userReportId = SysId.ToSysId(model.UserReport.Id);
if (!SysId.IsValid(userReportId))
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.id.not.specified"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.item.id.not.specified"]));
// Retrieve item.
SaxUserReport userReport = SupportMgr.GetUserReportById(userReportId);
@@ -234,7 +234,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers.Support
if (userReport == null)
{
SaLogger.Warn(fn + " Failed to retrieve userReport for Id: '" + model.UserReport.Id + "'");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
}
// Retrieve user.
@@ -267,7 +267,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers.Support
return GetAjaxResult_InvalidSession(responseData);
// Record disposable items as they are created so all can be disposed when needed.
- using (DisposableCollection disposableItems = new DisposableCollection())
+ using (DisposableCollection disposableItems = new DisposableCollection())
{
// Validate item properties.
@@ -280,19 +280,19 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers.Support
if (StringUtil.ToBool(model.UserReport.Exists) && !SysId.IsValid(userReportId))
{
SaLogger.Warn(fn + " Item Id not supplied for existing item.");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.system"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.system"]));
}
if (!StringUtil.ToBool(model.UserReport.Exists) && SysId.IsValid(userReportId))
{
SaLogger.Warn(fn + " Item Id supplied for new item: '" + model.UserReport.Id + "'");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.system"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.system"]));
}
SaxUserReport userReport = SupportMgr.GetUserReportById(userReportId);
disposableItems.Add(userReport);
if (userReport == null && SysId.IsValid(userReportId))
{
SaLogger.Warn(fn + " Failed to retrieve userReport for Id: '" + model.UserReport.Id + "'");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
}
// Create new item if required.
@@ -319,7 +319,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers.Support
if (!SupportMgr.InsertUserReport(userReport, DbUpdateInfo))
{
SaLogger.Warn(fn + " Failed to insert userReport: " + SupportMgr.ErrorStateMessage);
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.insert.failed"] + "\n\n" + SupportMgr.ErrorStateMessage));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.item.insert.failed"] + "\n\n" + SupportMgr.ErrorStateMessage));
}
}
else
@@ -327,7 +327,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers.Support
if (!SupportMgr.UpdateUserReport(userReport, DbUpdateInfo))
{
SaLogger.Warn(fn + " Failed to update userReport [Id:" + SysId.ToString(userReport.Id) + "]: " + SupportMgr.ErrorStateMessage);
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.update.failed"] + "\n\n" + SupportMgr.ErrorStateMessage));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.item.update.failed"] + "\n\n" + SupportMgr.ErrorStateMessage));
}
}
diff --git a/SaxoniteCoreWebAdmin/Admin/Controllers/Support/Controller_UserReport.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/Support/Controller_UserReport.cs
similarity index 97%
rename from SaxoniteCoreWebAdmin/Admin/Controllers/Support/Controller_UserReport.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/Support/Controller_UserReport.cs
index 95c4292..c707cf8 100644
--- a/SaxoniteCoreWebAdmin/Admin/Controllers/Support/Controller_UserReport.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/Support/Controller_UserReport.cs
@@ -1,4 +1,4 @@
-using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using Saxonite.Net.Core.Web.Admin.Models.Support;
using Saxonite.Net.Core.Web.Base.App;
diff --git a/SaxoniteCoreWebAdmin/Admin/Controllers/Support/SaxController_Admin_Support.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/Support/SaxController_Admin_Support.cs
similarity index 96%
rename from SaxoniteCoreWebAdmin/Admin/Controllers/Support/SaxController_Admin_Support.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/Support/SaxController_Admin_Support.cs
index 16301e1..7479b26 100644
--- a/SaxoniteCoreWebAdmin/Admin/Controllers/Support/SaxController_Admin_Support.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/Support/SaxController_Admin_Support.cs
@@ -1,4 +1,4 @@
-using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using Saxonite.Net.Core.Web.Admin.Models.Support;
using Saxonite.Net.Core.Web.Base.App;
diff --git a/SaxoniteCoreWebAdmin/Admin/Controllers/System/SystemController-Ajax-Database.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/System/SystemController-Ajax-Database.cs
similarity index 93%
rename from SaxoniteCoreWebAdmin/Admin/Controllers/System/SystemController-Ajax-Database.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/System/SystemController-Ajax-Database.cs
index 5896fe8..b858ceb 100644
--- a/SaxoniteCoreWebAdmin/Admin/Controllers/System/SystemController-Ajax-Database.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/System/SystemController-Ajax-Database.cs
@@ -1,4 +1,4 @@
-using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc;
using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core;
@@ -61,7 +61,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers.System
return GetAjaxResult_InvalidSession(responseData);
// Record disposable items as they are created so all can be disposed when needed.
- using (DisposableCollection disposableItems = new DisposableCollection())
+ using (DisposableCollection disposableItems = new DisposableCollection())
{
// Database connection.
Sax.Database databaseInstance = EnumUtil.ParseEnum(StringUtil.EmptyOnNull(model.DatabaseFilter.Instance), Sax.Database.Core);
@@ -146,32 +146,32 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers.System
return GetAjaxResult_InvalidSession(responseData);
// Record disposable items as they are created so all can be disposed when needed.
- using (DisposableCollection disposableItems = new DisposableCollection())
+ using (DisposableCollection disposableItems = new DisposableCollection())
{
// Database instance.
Sax.Database databaseInstance = EnumUtil.ParseEnum(StringUtil.EmptyOnNull(model.DatabaseFilter.Instance), Sax.Database.Unknown);
if (databaseInstance <= 0)
- return Json(responseData.SetMessage(messageTitle, "Database instance must be specified"));
+ return Json(responseData.SetPopupMessage(messageTitle, "Database instance must be specified"));
responseData.Instance = databaseInstance.ToString();
// Database connection.
ISacsDatabase db = App.GetDatabase(SessionContext, databaseInstance);
if (db == null)
- return Json(responseData.SetMessage(messageTitle, "Unrecognised database instance specified: " + model.DatabaseFilter.Instance));
+ return Json(responseData.SetPopupMessage(messageTitle, "Unrecognised database instance specified: " + model.DatabaseFilter.Instance));
// Retrieve XML database schema definition.
var assembly = typeof(SaxSystem_Dbas).GetTypeInfo().Assembly;
String xmlSchema = SacsResourceHelper.GetManifestResourceAsText(assembly, "", "SaxDbDfn_" + databaseInstance.ToString() + ".xml");
if (StringUtil.IsEmpty(xmlSchema))
- return Json(responseData.SetMessage(messageTitle, "Failed to extract XML schema definition."));
+ return Json(responseData.SetPopupMessage(messageTitle, "Failed to extract XML schema definition."));
// Extract schema from XML definition.
SaDbProcess_ConvertDbSchema.Config cfgSchemaConvert = new SaDbProcess_ConvertDbSchema.Config();
SaDbProcess_ConvertDbSchema procSchemaConvert = new SaDbProcess_ConvertDbSchema(cfgSchemaConvert);
List tables = procSchemaConvert.ConvertXmlToTables(xmlSchema);
if (procSchemaConvert.HasErrorMessage())
- return Json(responseData.SetMessage(messageTitle, "Failed to convert XML schema: " + procSchemaConvert.GetErrorMessage()));
+ return Json(responseData.SetPopupMessage(messageTitle, "Failed to convert XML schema: " + procSchemaConvert.GetErrorMessage()));
SaDbProcess_CompareDatabaseSchemas.Config cfgSchemaCompare = new SaDbProcess_CompareDatabaseSchemas.Config(tables, db);
cfgSchemaCompare.HideIdenticalObjects = true;
@@ -342,17 +342,17 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers.System
return GetAjaxResult_InvalidSession(responseData);
// Record disposable items as they are created so all can be disposed when needed.
- using (DisposableCollection disposableItems = new DisposableCollection())
+ using (DisposableCollection disposableItems = new DisposableCollection())
{
// Parameters.
if (StringUtil.IsEmpty(model.DatabaseTable.Name))
- return Json(responseData.SetMessage(messageTitle, "Table name must be supplied."));
+ return Json(responseData.SetPopupMessage(messageTitle, "Table name must be supplied."));
// Database instance.
Sax.Database databaseInstance = EnumUtil.ParseEnum(StringUtil.EmptyOnNull(model.DatabaseTable.Instance), Sax.Database.Unknown);
if (databaseInstance <= 0)
- return Json(responseData.SetMessage(messageTitle, "Database instance must be specified"));
+ return Json(responseData.SetPopupMessage(messageTitle, "Database instance must be specified"));
// Database connection.
ISacsDatabase db = App.GetDatabase(SessionContext, databaseInstance);
@@ -360,7 +360,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers.System
// Table definition.
DbDfnTable tableDfn = db.GetTableDfn(model.DatabaseTable.Name, true);
if (tableDfn == null)
- return Json(responseData.SetMessage(messageTitle, "Invalid Table name supplied."));
+ return Json(responseData.SetPopupMessage(messageTitle, "Invalid Table name supplied."));
// Populate table response.
responseData.Table = new AjaxResponseData_Table(tableDfn);
diff --git a/SaxoniteCoreWebAdmin/Admin/Controllers/System/SystemController-Ajax-Logs.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/System/SystemController-Ajax-Logs.cs
similarity index 99%
rename from SaxoniteCoreWebAdmin/Admin/Controllers/System/SystemController-Ajax-Logs.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/System/SystemController-Ajax-Logs.cs
index 8f3e9eb..cc1daf4 100644
--- a/SaxoniteCoreWebAdmin/Admin/Controllers/System/SystemController-Ajax-Logs.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/System/SystemController-Ajax-Logs.cs
@@ -1,4 +1,4 @@
-using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus;
diff --git a/SaxoniteCoreWebAdmin/Admin/Controllers/System/SystemController.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/System/SystemController.cs
similarity index 98%
rename from SaxoniteCoreWebAdmin/Admin/Controllers/System/SystemController.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/System/SystemController.cs
index 60cb975..bd7ed31 100644
--- a/SaxoniteCoreWebAdmin/Admin/Controllers/System/SystemController.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/System/SystemController.cs
@@ -1,4 +1,4 @@
-using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus;
diff --git a/SaxoniteCoreWebAdmin/Admin/Controllers/UserController-Ajax.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/UserController-Ajax.cs
similarity index 92%
rename from SaxoniteCoreWebAdmin/Admin/Controllers/UserController-Ajax.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/UserController-Ajax.cs
index c50a305..4b9b63c 100644
--- a/SaxoniteCoreWebAdmin/Admin/Controllers/UserController-Ajax.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/UserController-Ajax.cs
@@ -1,4 +1,4 @@
-using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc;
using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core;
@@ -264,13 +264,13 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
RefreshModel(model);
// Record disposable items as they are created so all can be disposed when needed.
- using (DisposableCollection disposableItems = new DisposableCollection())
+ using (DisposableCollection disposableItems = new DisposableCollection())
{
// Identify item.
SysId userAccountId = SysId.ToSysId(model.UserId);
if (!SysId.IsValid(userAccountId))
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.id.not.specified"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.item.id.not.specified"]));
// Retrieve item.
SaxUserAccount user = AccountMgr.GetUserAccountById(userAccountId);
@@ -278,7 +278,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
if (user == null)
{
SaLogger.Warn(fn + " Failed to retrieve user for Id: '" + userAccountId + "'");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
}
// User Sports.
@@ -314,7 +314,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
RefreshModel(model);
// Record disposable items as they are created so all can be disposed when needed.
- using (DisposableCollection disposableItems = new DisposableCollection())
+ using (DisposableCollection disposableItems = new DisposableCollection())
{
// Identify user.
@@ -371,7 +371,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
return Json(responseData);
// Record disposable items as they are created so all can be disposed when needed.
- using (DisposableCollection disposableItems = new DisposableCollection())
+ using (DisposableCollection disposableItems = new DisposableCollection())
{
// Retrieve existing item.
@@ -381,7 +381,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
if (user == null && SysId.IsValid(userAccountId))
{
SaLogger.Warn(fn + " Failed to retrieve user for Id: '" + model.UserId + "'");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
}
// User roles, including deleted in case of reassignment.
@@ -439,7 +439,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
if (!AccountMgr.InsertUserAccount(user, DbUpdateInfo))
{
SaLogger.Warn(fn + " Failed to insert user: " + AccountMgr.ErrorStateMessage);
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.insert.failed"] + "\n\n" + AccountMgr.ErrorStateMessage));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.item.insert.failed"] + "\n\n" + AccountMgr.ErrorStateMessage));
}
}
else
@@ -447,7 +447,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
if (!AccountMgr.UpdateUserAccount(user, DbUpdateInfo))
{
SaLogger.Warn(fn + " Failed to update user [Id:" + SysId.ToString(user.Id) + "]: " + AccountMgr.ErrorStateMessage);
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.update.failed"] + "\n\n" + AccountMgr.ErrorStateMessage));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.item.update.failed"] + "\n\n" + AccountMgr.ErrorStateMessage));
}
}
@@ -501,7 +501,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
RefreshModel(model);
// Record disposable items as they are created so all can be disposed when needed.
- using (DisposableCollection disposableItems = new DisposableCollection())
+ using (DisposableCollection disposableItems = new DisposableCollection())
{
// Retrieve user.
@@ -511,7 +511,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
if (userAccount == null)
{
SaLogger.Warn(fn + " Failed to retrieve user for Id: '" + model.UserId + "'");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
}
// User roles.
@@ -524,28 +524,28 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
bool sendRequestPasswordOnline = StringUtil.ToBool(model.UserEmailRequestPasswordOnline);
bool sendRequestPasswordAdmin = StringUtil.ToBool(model.UserEmailRequestPasswordAdmin);
if (!sendAcountActivationOnline && !sendRequestPasswordOnline && !sendRequestPasswordAdmin)
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.validation.select.option"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.validation.select.option"]));
if (sendRequestPasswordAdmin && !systemAdmin)
- return Json(responseData.SetMessage(messageTitle, Localiser["user.msg.not.system.admin"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["user.msg.not.system.admin"]));
// Send emails.
int emailsSentCount = 0;
if (sendAcountActivationOnline)
{
if (!OrganisationController.SendAccountActivatedEmail(this, userAccount))
- return Json(responseData.SetMessage(messageTitle, "Failed to send Online Account Activation email."));
+ return Json(responseData.SetPopupMessage(messageTitle, "Failed to send Online Account Activation email."));
emailsSentCount++;
}
if (sendRequestPasswordOnline)
{
if (!SecurityController.SendRequestPasswordEmail(this, userAccount, true))
- return Json(responseData.SetMessage(messageTitle, "Failed to send Online Request Password email."));
+ return Json(responseData.SetPopupMessage(messageTitle, "Failed to send Online Request Password email."));
emailsSentCount++;
}
if (sendRequestPasswordAdmin)
{
if (!SecurityController.SendRequestPasswordEmail(this, userAccount, false))
- return Json(responseData.SetMessage(messageTitle, "Failed to send Admin Request Password email."));
+ return Json(responseData.SetPopupMessage(messageTitle, "Failed to send Admin Request Password email."));
emailsSentCount++;
}
@@ -555,7 +555,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
// Construct response.
PopulateUserResponseItemData(model, responseData.user, userAccount, userSports, userRoles.GetUserRolesByStatus(SaStatus.Active));
- responseData.SetNotification(messageTitle, "Emails sent: " + emailsSentCount);
+ responseData.SetNotifyMessage(messageTitle, "Emails sent: " + emailsSentCount);
responseData.Success = true;
}
return Json(responseData);
diff --git a/SaxoniteCoreWebAdmin/Admin/Controllers/UserController.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/UserController.cs
similarity index 98%
rename from SaxoniteCoreWebAdmin/Admin/Controllers/UserController.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/UserController.cs
index 4d72925..f23d686 100644
--- a/SaxoniteCoreWebAdmin/Admin/Controllers/UserController.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/UserController.cs
@@ -1,4 +1,4 @@
-using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using Sarand.Net.Standard.Base.Utils;
using Saxonite.Net.Core.Web.Admin.Models;
diff --git a/SaxoniteCoreWebAdmin/Admin/Controllers/UsersOnlineController-Ajax.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/UsersOnlineController-Ajax.cs
similarity index 95%
rename from SaxoniteCoreWebAdmin/Admin/Controllers/UsersOnlineController-Ajax.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/UsersOnlineController-Ajax.cs
index 68aca68..ca859f9 100644
--- a/SaxoniteCoreWebAdmin/Admin/Controllers/UsersOnlineController-Ajax.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/UsersOnlineController-Ajax.cs
@@ -1,4 +1,4 @@
-using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc;
using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core;
@@ -156,13 +156,13 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
RefreshModel(model);
// Record disposable items as they are created so all can be disposed when needed.
- using (DisposableCollection disposableItems = new DisposableCollection())
+ using (DisposableCollection disposableItems = new DisposableCollection())
{
// Identify item.
SysId userAccountId = SysId.ToSysId(model.UserId);
if (!SysId.IsValid(userAccountId))
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.id.not.specified"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.item.id.not.specified"]));
// Retrieve item.
SaxUserAccount user = AccountMgr.GetUserAccountById(userAccountId);
@@ -170,7 +170,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers
if (user == null)
{
SaLogger.Warn(fn + " Failed to retrieve user for Id: '" + userAccountId + "'");
- return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
+ return Json(responseData.SetPopupMessage(messageTitle, Localiser["msg.error.item.id.not.found"]));
}
// User Online.
diff --git a/SaxoniteCoreWebAdmin/Admin/Controllers/UsersOnlineController.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/UsersOnlineController.cs
similarity index 97%
rename from SaxoniteCoreWebAdmin/Admin/Controllers/UsersOnlineController.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/UsersOnlineController.cs
index 2376ed5..6c32b8f 100644
--- a/SaxoniteCoreWebAdmin/Admin/Controllers/UsersOnlineController.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/Controllers/UsersOnlineController.cs
@@ -1,4 +1,4 @@
-using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using Sarand.Net.Standard.Base.Utils;
using Saxonite.Net.Core.Web.Admin.Models;
diff --git a/SaxoniteCoreWebAdmin/Admin/Models/ErrorViewModel.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Models/ErrorViewModel.cs
similarity index 100%
rename from SaxoniteCoreWebAdmin/Admin/Models/ErrorViewModel.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Models/ErrorViewModel.cs
diff --git a/SaxoniteCoreWebAdmin/Admin/Models/ModelData_Address.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Models/ModelData_Address.cs
similarity index 99%
rename from SaxoniteCoreWebAdmin/Admin/Models/ModelData_Address.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Models/ModelData_Address.cs
index 3f3408f..7772222 100644
--- a/SaxoniteCoreWebAdmin/Admin/Models/ModelData_Address.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/Models/ModelData_Address.cs
@@ -1,4 +1,4 @@
-using Sacs.Web.Components;
+using Sacs.Web.Components;
using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core;
diff --git a/SaxoniteCoreWebAdmin/Admin/Models/ModelData_Online.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Models/ModelData_Online.cs
similarity index 96%
rename from SaxoniteCoreWebAdmin/Admin/Models/ModelData_Online.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Models/ModelData_Online.cs
index 733c682..909acc4 100644
--- a/SaxoniteCoreWebAdmin/Admin/Models/ModelData_Online.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/Models/ModelData_Online.cs
@@ -1,4 +1,4 @@
-using Sarand.Net.Standard.Base.App;
+using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Helpers;
diff --git a/SaxoniteCoreWebAdmin/Admin/Models/Model_ContactMethod.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Models/Model_ContactMethod.cs
similarity index 95%
rename from SaxoniteCoreWebAdmin/Admin/Models/Model_ContactMethod.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Models/Model_ContactMethod.cs
index 9adfeb9..9e47516 100644
--- a/SaxoniteCoreWebAdmin/Admin/Models/Model_ContactMethod.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/Models/Model_ContactMethod.cs
@@ -1,4 +1,4 @@
-using Saxonite.Net.Core.Web.Base.App;
+using Saxonite.Net.Core.Web.Base.App;
using Saxonite.Net.Core.Web.Base.Models;
using System;
using System.Collections.Generic;
diff --git a/SaxoniteCoreWebAdmin/Admin/Models/Model_Home.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Models/Model_Home.cs
similarity index 94%
rename from SaxoniteCoreWebAdmin/Admin/Models/Model_Home.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Models/Model_Home.cs
index fd14dcb..a7233ce 100644
--- a/SaxoniteCoreWebAdmin/Admin/Models/Model_Home.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/Models/Model_Home.cs
@@ -1,4 +1,4 @@
-using Saxonite.Net.Core.Web.Base.App;
+using Saxonite.Net.Core.Web.Base.App;
using Saxonite.Net.Core.Web.Base.Models;
using System;
using System.Collections.Generic;
diff --git a/SaxoniteCoreWebAdmin/Admin/Models/Model_Organisation.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Models/Model_Organisation.cs
similarity index 98%
rename from SaxoniteCoreWebAdmin/Admin/Models/Model_Organisation.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Models/Model_Organisation.cs
index 1825d01..4331e2b 100644
--- a/SaxoniteCoreWebAdmin/Admin/Models/Model_Organisation.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/Models/Model_Organisation.cs
@@ -1,4 +1,4 @@
-using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc.Rendering;
using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus;
@@ -211,7 +211,7 @@ namespace Saxonite.Net.Core.Web.Admin.Models
if (ContactData.Methods.Count != ContactMethods.ToInt())
{
SaLogger.Warn(fn + " Inconsistent Contact Methods received. Expected: " + ContactMethods + ". Received: " + ContactData.Methods.Count);
- responseData.SetMessage(Localiser["caption.contact.method"], "System error");
+ responseData.SetPopupMessage(Localiser["caption.contact.method"], "System error");
}
}
diff --git a/SaxoniteCoreWebAdmin/Admin/Models/Model_OrganisationActivation.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Models/Model_OrganisationActivation.cs
similarity index 97%
rename from SaxoniteCoreWebAdmin/Admin/Models/Model_OrganisationActivation.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Models/Model_OrganisationActivation.cs
index 615a342..372bc1f 100644
--- a/SaxoniteCoreWebAdmin/Admin/Models/Model_OrganisationActivation.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/Models/Model_OrganisationActivation.cs
@@ -1,4 +1,4 @@
-using Sarand.Net.Standard.Base.App;
+using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Utils;
diff --git a/SaxoniteCoreWebAdmin/Admin/Models/Model_OrganisationAssociations.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Models/Model_OrganisationAssociations.cs
similarity index 99%
rename from SaxoniteCoreWebAdmin/Admin/Models/Model_OrganisationAssociations.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Models/Model_OrganisationAssociations.cs
index f3aafd2..177ce9a 100644
--- a/SaxoniteCoreWebAdmin/Admin/Models/Model_OrganisationAssociations.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/Models/Model_OrganisationAssociations.cs
@@ -1,4 +1,4 @@
-using Sarand.Net.Standard.Base.App;
+using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Utils;
diff --git a/SaxoniteCoreWebAdmin/Admin/Models/Model_OrganisationDownload.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Models/Model_OrganisationDownload.cs
similarity index 97%
rename from SaxoniteCoreWebAdmin/Admin/Models/Model_OrganisationDownload.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Models/Model_OrganisationDownload.cs
index 81799dc..3ef4ca0 100644
--- a/SaxoniteCoreWebAdmin/Admin/Models/Model_OrganisationDownload.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/Models/Model_OrganisationDownload.cs
@@ -1,4 +1,4 @@
-using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Http;
using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core;
diff --git a/SaxoniteCoreWebAdmin/Admin/Models/Model_OrganisationMembers.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Models/Model_OrganisationMembers.cs
similarity index 99%
rename from SaxoniteCoreWebAdmin/Admin/Models/Model_OrganisationMembers.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Models/Model_OrganisationMembers.cs
index 6a69d85..f0a577d 100644
--- a/SaxoniteCoreWebAdmin/Admin/Models/Model_OrganisationMembers.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/Models/Model_OrganisationMembers.cs
@@ -1,4 +1,4 @@
-using Sarand.Net.Standard.Base.App;
+using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Utils;
diff --git a/SaxoniteCoreWebAdmin/Admin/Models/Model_OrganisationUpload.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Models/Model_OrganisationUpload.cs
similarity index 98%
rename from SaxoniteCoreWebAdmin/Admin/Models/Model_OrganisationUpload.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Models/Model_OrganisationUpload.cs
index c3a6b56..308d46c 100644
--- a/SaxoniteCoreWebAdmin/Admin/Models/Model_OrganisationUpload.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/Models/Model_OrganisationUpload.cs
@@ -1,4 +1,4 @@
-using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Http;
using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core;
diff --git a/SaxoniteCoreWebAdmin/Admin/Models/Model_Policies.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Models/Model_Policies.cs
similarity index 94%
rename from SaxoniteCoreWebAdmin/Admin/Models/Model_Policies.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Models/Model_Policies.cs
index 4ecd978..eba3ab7 100644
--- a/SaxoniteCoreWebAdmin/Admin/Models/Model_Policies.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/Models/Model_Policies.cs
@@ -1,4 +1,4 @@
-using Saxonite.Net.Core.Web.Base.App;
+using Saxonite.Net.Core.Web.Base.App;
using Saxonite.Net.Core.Web.Base.Models;
using System;
using System.Collections.Generic;
diff --git a/SaxoniteCoreWebAdmin/Admin/Models/Model_Region.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Models/Model_Region.cs
similarity index 99%
rename from SaxoniteCoreWebAdmin/Admin/Models/Model_Region.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Models/Model_Region.cs
index cd8e9b5..577f393 100644
--- a/SaxoniteCoreWebAdmin/Admin/Models/Model_Region.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/Models/Model_Region.cs
@@ -1,4 +1,4 @@
-using Sarand.Net.Standard.Base.App;
+using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Utils;
diff --git a/SaxoniteCoreWebAdmin/Admin/Models/Model_Security.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Models/Model_Security.cs
similarity index 99%
rename from SaxoniteCoreWebAdmin/Admin/Models/Model_Security.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Models/Model_Security.cs
index 843bf31..a68526c 100644
--- a/SaxoniteCoreWebAdmin/Admin/Models/Model_Security.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/Models/Model_Security.cs
@@ -1,4 +1,4 @@
-using Sarand.Net.Standard.Base.Core;
+using Sarand.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Helpers;
using Sarand.Net.Standard.Base.Utils;
using Saxonite.Net.Core.Web.Base.App;
diff --git a/SaxoniteCoreWebAdmin/Admin/Models/Model_Sport.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Models/Model_Sport.cs
similarity index 97%
rename from SaxoniteCoreWebAdmin/Admin/Models/Model_Sport.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Models/Model_Sport.cs
index 23104b1..2ddc9a2 100644
--- a/SaxoniteCoreWebAdmin/Admin/Models/Model_Sport.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/Models/Model_Sport.cs
@@ -1,4 +1,4 @@
-using Sarand.Net.Standard.Base.App;
+using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Utils;
@@ -55,7 +55,7 @@ namespace Saxonite.Net.Core.Web.Admin.Models
public bool ValidateSportData(SaxController_Base.AjaxResponse_Data responseData)
{
// Record disposable items as they are created so all can be disposed when needed.
- using (DisposableCollection disposableItems = new DisposableCollection())
+ using (DisposableCollection disposableItems = new DisposableCollection())
{
// Sport Grouping.
diff --git a/SaxoniteCoreWebAdmin/Admin/Models/Model_System.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Models/Model_System.cs
similarity index 98%
rename from SaxoniteCoreWebAdmin/Admin/Models/Model_System.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Models/Model_System.cs
index 353fbd5..dca55b1 100644
--- a/SaxoniteCoreWebAdmin/Admin/Models/Model_System.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/Models/Model_System.cs
@@ -1,4 +1,4 @@
-using Microsoft.AspNetCore.Mvc.Rendering;
+using Microsoft.AspNetCore.Mvc.Rendering;
using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Core;
using Saxonite.Net.Core.Web.Base.App;
diff --git a/SaxoniteCoreWebAdmin/Admin/Models/Model_User.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Models/Model_User.cs
similarity index 98%
rename from SaxoniteCoreWebAdmin/Admin/Models/Model_User.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Models/Model_User.cs
index 397561d..f41cee6 100644
--- a/SaxoniteCoreWebAdmin/Admin/Models/Model_User.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/Models/Model_User.cs
@@ -1,4 +1,4 @@
-using Microsoft.AspNetCore.Mvc.Rendering;
+using Microsoft.AspNetCore.Mvc.Rendering;
using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core;
@@ -97,7 +97,7 @@ namespace Saxonite.Net.Core.Web.Admin.Models
public bool ValidateUserData(SaxController_Base.AjaxResponse_Data responseData)
{
// Record disposable items as they are created so all can be disposed when needed.
- using (DisposableCollection disposableItems = new DisposableCollection())
+ using (DisposableCollection disposableItems = new DisposableCollection())
{
// User email.
diff --git a/SaxoniteCoreWebAdmin/Admin/Models/Model_UsersOnline.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Models/Model_UsersOnline.cs
similarity index 97%
rename from SaxoniteCoreWebAdmin/Admin/Models/Model_UsersOnline.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Models/Model_UsersOnline.cs
index a0aa640..0def8a0 100644
--- a/SaxoniteCoreWebAdmin/Admin/Models/Model_UsersOnline.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/Models/Model_UsersOnline.cs
@@ -1,4 +1,4 @@
-using Microsoft.AspNetCore.Mvc.Rendering;
+using Microsoft.AspNetCore.Mvc.Rendering;
using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core;
diff --git a/SaxoniteCoreWebAdmin/Admin/Models/Reference/Model_ReferenceBaseball.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Models/Reference/Model_ReferenceBaseball.cs
similarity index 92%
rename from SaxoniteCoreWebAdmin/Admin/Models/Reference/Model_ReferenceBaseball.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Models/Reference/Model_ReferenceBaseball.cs
index 18d97f6..b9f8dd9 100644
--- a/SaxoniteCoreWebAdmin/Admin/Models/Reference/Model_ReferenceBaseball.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/Models/Reference/Model_ReferenceBaseball.cs
@@ -1,4 +1,4 @@
-using Sarand.Net.Standard.Base.App;
+using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Utils;
@@ -43,7 +43,7 @@ namespace Saxonite.Net.Core.Web.Admin.Models.Reference
public bool ValidateReferenceBaseballData(Sacs.Web.Components.SaController.AjaxResponse_Data responseData)
{
// Record disposable items as they are created so all can be disposed when needed.
- using (DisposableCollection disposables = new DisposableCollection())
+ using (DisposableCollection disposables = new DisposableCollection())
{
}
diff --git a/SaxoniteCoreWebAdmin/Admin/Models/Reference/Model_ReferenceGolf.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Models/Reference/Model_ReferenceGolf.cs
similarity index 93%
rename from SaxoniteCoreWebAdmin/Admin/Models/Reference/Model_ReferenceGolf.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Models/Reference/Model_ReferenceGolf.cs
index 6680126..e9b81a2 100644
--- a/SaxoniteCoreWebAdmin/Admin/Models/Reference/Model_ReferenceGolf.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/Models/Reference/Model_ReferenceGolf.cs
@@ -1,4 +1,4 @@
-using Sarand.Net.Standard.Base.App;
+using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Utils;
@@ -52,7 +52,7 @@ namespace Saxonite.Net.Core.Web.Admin.Models.Reference
public bool ValidateReferenceGolfData(Sacs.Web.Components.SaController.AjaxResponse_Data responseData)
{
// Record disposable items as they are created so all can be disposed when needed.
- using (DisposableCollection disposables = new DisposableCollection())
+ using (DisposableCollection disposables = new DisposableCollection())
{
}
return !responseData.HasControlErrors();
diff --git a/SaxoniteCoreWebAdmin/Admin/Models/SaxModel_Admin.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Models/SaxModel_Admin.cs
similarity index 97%
rename from SaxoniteCoreWebAdmin/Admin/Models/SaxModel_Admin.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Models/SaxModel_Admin.cs
index df3d930..59e485d 100644
--- a/SaxoniteCoreWebAdmin/Admin/Models/SaxModel_Admin.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/Models/SaxModel_Admin.cs
@@ -1,4 +1,4 @@
-using Sarand.Net.Standard.Base.Bus;
+using Sarand.Net.Standard.Base.Bus;
using Saxonite.Net.Core.Web.Admin.App;
using Saxonite.Net.Core.Web.Base.App;
using Saxonite.Net.Core.Web.Base.Models;
diff --git a/SaxoniteCoreWebAdmin/Admin/Models/Support/Model_UserReport.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Models/Support/Model_UserReport.cs
similarity index 95%
rename from SaxoniteCoreWebAdmin/Admin/Models/Support/Model_UserReport.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Models/Support/Model_UserReport.cs
index 4788173..3ee7f6c 100644
--- a/SaxoniteCoreWebAdmin/Admin/Models/Support/Model_UserReport.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/Models/Support/Model_UserReport.cs
@@ -1,4 +1,4 @@
-using Sarand.Net.Standard.Base.App;
+using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Utils;
@@ -52,7 +52,7 @@ namespace Saxonite.Net.Core.Web.Admin.Models.Support
public bool ValidateUserReportData(SaxController_Base.AjaxResponse_Data responseData)
{
// Record disposable items as they are created so all can be disposed when needed.
- using (DisposableCollection disposableItems = new DisposableCollection())
+ using (DisposableCollection disposableItems = new DisposableCollection())
{
// Report Type.
String controlName = "UserReportType";
diff --git a/SaxoniteCoreWebAdmin/Admin/Models/Support/SaxModel_Admin_Support.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Models/Support/SaxModel_Admin_Support.cs
similarity index 93%
rename from SaxoniteCoreWebAdmin/Admin/Models/Support/SaxModel_Admin_Support.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Models/Support/SaxModel_Admin_Support.cs
index 6af5910..87fb8dc 100644
--- a/SaxoniteCoreWebAdmin/Admin/Models/Support/SaxModel_Admin_Support.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/Models/Support/SaxModel_Admin_Support.cs
@@ -1,4 +1,4 @@
-using Saxonite.Net.Core.Web.Base.App;
+using Saxonite.Net.Core.Web.Base.App;
namespace Saxonite.Net.Core.Web.Admin.Models.Support
{
diff --git a/SaxoniteCoreWebAdmin/Admin/Procs/SaxOrganisationExporter.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Procs/SaxOrganisationExporter.cs
similarity index 99%
rename from SaxoniteCoreWebAdmin/Admin/Procs/SaxOrganisationExporter.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Procs/SaxOrganisationExporter.cs
index b4547fe..52058fb 100644
--- a/SaxoniteCoreWebAdmin/Admin/Procs/SaxOrganisationExporter.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/Procs/SaxOrganisationExporter.cs
@@ -1,4 +1,4 @@
-using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Http;
using Saxonite.Net.Core.Web.Base.Procs.Data;
using System.Collections.Generic;
using System;
diff --git a/SaxoniteCoreWebAdmin/Admin/Procs/SaxOrganisationUploader.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Procs/SaxOrganisationUploader.cs
similarity index 99%
rename from SaxoniteCoreWebAdmin/Admin/Procs/SaxOrganisationUploader.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Procs/SaxOrganisationUploader.cs
index 87e032b..169bc3a 100644
--- a/SaxoniteCoreWebAdmin/Admin/Procs/SaxOrganisationUploader.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/Procs/SaxOrganisationUploader.cs
@@ -1,4 +1,4 @@
-using EnumsNET;
+using EnumsNET;
using Microsoft.AspNetCore.Http;
using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Core;
diff --git a/SaxoniteCoreWebAdmin/Admin/Procs/SaxProcess_Admin.cs b/Workspace/SaxoniteCoreWebAdmin/Admin/Procs/SaxProcess_Admin.cs
similarity index 97%
rename from SaxoniteCoreWebAdmin/Admin/Procs/SaxProcess_Admin.cs
rename to Workspace/SaxoniteCoreWebAdmin/Admin/Procs/SaxProcess_Admin.cs
index 1d6dff2..42c5fe2 100644
--- a/SaxoniteCoreWebAdmin/Admin/Procs/SaxProcess_Admin.cs
+++ b/Workspace/SaxoniteCoreWebAdmin/Admin/Procs/SaxProcess_Admin.cs
@@ -1,4 +1,4 @@
-using Sarand.Net.Standard.Base.Dbas;
+using Sarand.Net.Standard.Base.Dbas;
using Sarand.Net.Standard.Proc.Excel;
using Sarand.Net.Standard.Proc.Procs;
using Saxonite.Net.Core.Web.Base.Procs;
diff --git a/SaxoniteCoreWebAdmin/Localisation/SaxAdminProperties.resx b/Workspace/SaxoniteCoreWebAdmin/Localisation/SaxAdminProperties.resx
similarity index 100%
rename from SaxoniteCoreWebAdmin/Localisation/SaxAdminProperties.resx
rename to Workspace/SaxoniteCoreWebAdmin/Localisation/SaxAdminProperties.resx
diff --git a/SaxoniteCoreWebAdmin/Properties/ServiceDependencies/SportierreAdmin - Web Deploy/profile.arm.json b/Workspace/SaxoniteCoreWebAdmin/Properties/ServiceDependencies/SportierreAdmin - Web Deploy/profile.arm.json
similarity index 100%
rename from SaxoniteCoreWebAdmin/Properties/ServiceDependencies/SportierreAdmin - Web Deploy/profile.arm.json
rename to Workspace/SaxoniteCoreWebAdmin/Properties/ServiceDependencies/SportierreAdmin - Web Deploy/profile.arm.json
diff --git a/SaxoniteCoreWebAdmin/Properties/launchSettings.json b/Workspace/SaxoniteCoreWebAdmin/Properties/launchSettings.json
similarity index 100%
rename from SaxoniteCoreWebAdmin/Properties/launchSettings.json
rename to Workspace/SaxoniteCoreWebAdmin/Properties/launchSettings.json
diff --git a/SaxoniteCoreWebAdmin/ReadMe.md b/Workspace/SaxoniteCoreWebAdmin/ReadMe.md
similarity index 100%
rename from SaxoniteCoreWebAdmin/ReadMe.md
rename to Workspace/SaxoniteCoreWebAdmin/ReadMe.md
diff --git a/SaxoniteCoreWebAdmin/SaxoniteCoreWebAdmin.csproj b/Workspace/SaxoniteCoreWebAdmin/SaxoniteCoreWebAdmin.csproj
similarity index 72%
rename from SaxoniteCoreWebAdmin/SaxoniteCoreWebAdmin.csproj
rename to Workspace/SaxoniteCoreWebAdmin/SaxoniteCoreWebAdmin.csproj
index c5a2856..3f09115 100644
--- a/SaxoniteCoreWebAdmin/SaxoniteCoreWebAdmin.csproj
+++ b/Workspace/SaxoniteCoreWebAdmin/SaxoniteCoreWebAdmin.csproj
@@ -1,7 +1,7 @@
- net6.0
+ net10.0
false
Saxonite.Net.Core.Web
Saxonite.Net.Core.Web
@@ -11,15 +11,14 @@
-
-
+
-
-
-
-
+
+
+
+
diff --git a/SaxoniteCoreWebAdmin/Views/Common/ContactMethods.cshtml b/Workspace/SaxoniteCoreWebAdmin/Views/Common/ContactMethods.cshtml
similarity index 93%
rename from SaxoniteCoreWebAdmin/Views/Common/ContactMethods.cshtml
rename to Workspace/SaxoniteCoreWebAdmin/Views/Common/ContactMethods.cshtml
index 071d406..14214f8 100644
--- a/SaxoniteCoreWebAdmin/Views/Common/ContactMethods.cshtml
+++ b/Workspace/SaxoniteCoreWebAdmin/Views/Common/ContactMethods.cshtml
@@ -1,8 +1,8 @@
-@model SaxModel_Admin
+@model SaxModel_Admin
@inject SaxLocaliser Localiser
@{
// Ensure view is only included once in page.
- if (!Model.RegisterView("Views/Common/ContactMethods")) return;
+ if (!Model.RegisterView(ViewContext)) return;
// Scripts.
Model.AdditionalFiles_JS.Add("js/sax-cnt-mth.js");
}
diff --git a/SaxoniteCoreWebAdmin/Views/Common/Controls-ItemAddress.cshtml b/Workspace/SaxoniteCoreWebAdmin/Views/Common/Controls-ItemAddress.cshtml
similarity index 97%
rename from SaxoniteCoreWebAdmin/Views/Common/Controls-ItemAddress.cshtml
rename to Workspace/SaxoniteCoreWebAdmin/Views/Common/Controls-ItemAddress.cshtml
index c107892..d9a1d54 100644
--- a/SaxoniteCoreWebAdmin/Views/Common/Controls-ItemAddress.cshtml
+++ b/Workspace/SaxoniteCoreWebAdmin/Views/Common/Controls-ItemAddress.cshtml
@@ -1,8 +1,8 @@
-@* Controls - Item Address *@
+@* Controls - Item Address *@
@model SaxModel_Admin
@inject SaxLocaliser Localiser
-@if (!Model.RegisterView("Views/Common/Controls-ItemAddress")) return;
+@if (!Model.RegisterView(ViewContext)) return;
@* Item address - Line 1 *@
diff --git a/SaxoniteCoreWebAdmin/Views/Common/Controls-ItemContactMethods.cshtml b/Workspace/SaxoniteCoreWebAdmin/Views/Common/Controls-ItemContactMethods.cshtml
similarity index 95%
rename from SaxoniteCoreWebAdmin/Views/Common/Controls-ItemContactMethods.cshtml
rename to Workspace/SaxoniteCoreWebAdmin/Views/Common/Controls-ItemContactMethods.cshtml
index 1d7d84f..de7bebd 100644
--- a/SaxoniteCoreWebAdmin/Views/Common/Controls-ItemContactMethods.cshtml
+++ b/Workspace/SaxoniteCoreWebAdmin/Views/Common/Controls-ItemContactMethods.cshtml
@@ -1,8 +1,8 @@
-@* Contact Methods controls *@
+@* Contact Methods controls *@
@model SaxModel_Admin
@inject SaxLocaliser Localiser
-@if (!Model.RegisterView("Views/Common/Controls-ItemContactMethods")) return;
+@if (!Model.RegisterView(ViewContext)) return;
+
+# Topic Tracker
+
+Last updated: 2026-10-16
+
+## Prioritised Topics to Be Actioned
+
+| Priority | Topic | Date noted | Next step | Notes |
+|---|---|---|---|---|
+| P1 | Reassess inherited package vulnerabilities after Common updates | 2026-10-16 | Reassess the Common dependency graph after its independent package update; no Common changes are in Saxonite scope. | Restore reports advisories for ImageSharp 3.1.12 and crypto packages 10.0.12/10.0.0 in Common's dependency graph. |
+| P2 | Complete and validate the .NET 10/Common upgrade | 2026-10-16 | Validate application flows with configured Saxonite machine/database settings. | Full solution test run passes: Admin 7, Online 7, Shared 37. Restore completed with inherited vulnerability warnings. Added purpose-isolation/tamper coverage and checks that serialized session data omits IV state. |
+| P3 | Review remaining Saxonite production package versions | 2026-10-16 | Assess the Swashbuckle 7-to-10 major upgrade separately. | Applied available non-major updates to HtmlAgilityPack, Razor runtime compilation, and unit test tooling. NUnit 5 and Swashbuckle 10 remain deferred major-version upgrades. |
+
+## Completed Topics
+
+| Priority | Topic | Date noted | Date started | PR | Version | Date ready | Outcome |
+|---|---|---|---|---|---|---|---|
+| P2 | Restructure Saxonite repository and upgrade to .NET 10 | 2026-10-16 | 2026-10-16 | [#1](http://viking:3000/andy/Saxonite/pulls/1) | 1.3.0 | 2026-10-16 | Moved application and library projects into `Workspace`; upgraded to .NET 10 and aligned Common integration; migrated to authenticated encryption. Version is 1.3.0.0. Debug build and all test suites pass: Admin 7, Online 7, Shared 37. Machine/database runtime validation remains tracked under the prioritized .NET 10/Common validation topic. |
+| P3 | Validate Admin, Online, and shared test project separation | 2026-10-16 | 2026-10-16 | — | — | — | Added `Workspace/SaxoniteUnitTestsShared`; Admin and Online test projects now reference their respective application projects. Added representative tests for shared bus rules and serialized data, Admin association and address models, and Online profile and address models. All three suites pass: Admin 7, Online 7, Shared 37. |
+| P3 | Align test tooling with Common | 2026-10-16 | 2026-10-16 | — | — | — | All three Saxonite test projects use NUnit 4.6.1, NUnit3TestAdapter 6.3.1, NUnit.Analyzers 4.15.0, Microsoft.NET.Test.Sdk 18.11.0, Moq 4.21.0, and coverlet.collector 10.1.0. Migrated MSTest fixtures/assertions, corrected tautological user-id assertions, and verified all suites pass after the package updates. Not yet marked PR-ready. |
diff --git a/docs/upgrade-and-encryption.md b/docs/upgrade-and-encryption.md
new file mode 100644
index 0000000..8f87ac3
--- /dev/null
+++ b/docs/upgrade-and-encryption.md
@@ -0,0 +1,23 @@
+# .NET and Authenticated Encryption Upgrade
+
+Date started: 2026-10-16
+
+## Framework and Common Alignment
+
+All Saxonite projects have been retargeted from .NET 6 to .NET 10. The solution's relative references now resolve to sibling `Common-VS/Workspace`; `SaxoniteStandardBase` references Common's `SacsBusinessBase` for the shared item option definition. Razor runtime compilation was moved to 10.0.12, and redundant legacy `System.Collections.Specialized` and ASP.NET Identity package references were removed where the framework/API now supplies the needed surface.
+
+Restore and Debug build completed. The build succeeds; restore reports inherited package vulnerability advisories detailed below. All three test projects pass (Admin: 7 tests; Online: 7 tests; Shared: 37 tests). Coverage includes purpose isolation, tamper rejection, omission of IV fields from serialized session data, representative shared bus rules and XML serialization, and Admin/Online model behavior.
+
+## Authenticated Encryption
+
+Saxonite callers now use Common's purpose-bound `SACSENC2.` AES-GCM wrappers with distinct purposes for Admin and Online parameters, keep-logged-in cookies, password-reset links, and Online ID obfuscation. Fixed and session IV state has been removed from application session data and reset-link encryption. Decryption remains fail-closed with no legacy CBC fallback.
+
+This is an intentional clean break. Existing encrypted keep-logged-in cookies, password-reset links, and encrypted session/query parameters will no longer decrypt and users may need to sign in again or request a new password-reset link. Admin and Online purposes are separated even where they share key material. Common's migration record is [`../../../Common-VS/Workspace/docs/authenticated-encryption-migration.md`](../../../Common-VS/Workspace/docs/authenticated-encryption-migration.md).
+
+## Remaining Validation and Package Work
+
+Saxonite's three test projects now use the aligned test stack: NUnit 4.6.1, NUnit3TestAdapter 6.3.1, NUnit.Analyzers 4.15.0, Microsoft.NET.Test.Sdk 18.11.0, Moq 4.21.0, and coverlet.collector 10.1.0. Existing test cases were migrated from MSTest attributes and assertions. The tests are a targeted baseline, not a full coverage measure.
+
+The restore reports moderate and high severity advisories for Common's `SixLabors.ImageSharp` 3.1.12 and `System.Security.Cryptography.Xml`/`Pkcs` 10.0.12 (with `Pkcs` 10.0.0 also in part of the graph). These package references belong to Common projects and are outside the Saxonite upgrade scope. Reassess after Common is updated independently.
+
+Runtime validation with machine-specific configuration and database access remains outstanding. The current tests are focused unit tests and do not verify deployment configuration or production flows.