Browse Source

[init]

master
贾荣国 3 years ago
commit
7505bf77cf
  1. 1
      .gitattributes
  2. 259
      .gitignore
  3. 1
      Management/.gitattributes
  4. 259
      Management/.gitignore
  5. 5
      Management/.prettierrc
  6. 6
      Management/NuGet.Config
  7. 104
      Management/Win_in.Sfs.Scp.Management.sln
  8. 23
      Management/Win_in.Sfs.Scp.Management.sln.DotSettings
  9. 24
      Management/common.props
  10. 20
      Management/database/Dockerfile
  11. 12
      Management/database/entrypoint.sh
  12. 13
      Management/docker-compose.migrations.yml
  13. 29
      Management/docker-compose.override.yml
  14. 25
      Management/docker-compose.yml
  15. 13
      Management/host/Win_in.Sfs.Scp.Management.HttpApi.Host/Controllers/HomeController.cs
  16. 18
      Management/host/Win_in.Sfs.Scp.Management.HttpApi.Host/Dockerfile
  17. 21
      Management/host/Win_in.Sfs.Scp.Management.HttpApi.Host/EntityFrameworkCore/ManagementHttpApiHostMigrationsDbContext.cs
  18. 29
      Management/host/Win_in.Sfs.Scp.Management.HttpApi.Host/EntityFrameworkCore/ManagementHttpApiHostMigrationsDbContextFactory.cs
  19. 3
      Management/host/Win_in.Sfs.Scp.Management.HttpApi.Host/FodyWeavers.xml
  20. 30
      Management/host/Win_in.Sfs.Scp.Management.HttpApi.Host/FodyWeavers.xsd
  21. 196
      Management/host/Win_in.Sfs.Scp.Management.HttpApi.Host/ManagementHttpApiHostModule.cs
  22. 59
      Management/host/Win_in.Sfs.Scp.Management.HttpApi.Host/Program.cs
  23. 12
      Management/host/Win_in.Sfs.Scp.Management.HttpApi.Host/Properties/launchSettings.json
  24. 21
      Management/host/Win_in.Sfs.Scp.Management.HttpApi.Host/Startup.cs
  25. 43
      Management/host/Win_in.Sfs.Scp.Management.HttpApi.Host/Win_in.Sfs.Scp.Management.HttpApi.Host.csproj
  26. 20
      Management/host/Win_in.Sfs.Scp.Management.HttpApi.Host/appsettings.json
  27. 2
      Management/host/Win_in.Sfs.Scp.Management.HttpApi.Host/appsettings.secrets.json
  28. 4
      Management/host/Win_in.Sfs.Scp.Management.HttpApi.Host/yarn.lock
  29. 3
      Management/src/Win_in.Sfs.Scp.Management.Application.Contracts/FodyWeavers.xml
  30. 30
      Management/src/Win_in.Sfs.Scp.Management.Application.Contracts/FodyWeavers.xsd
  31. 16
      Management/src/Win_in.Sfs.Scp.Management.Application.Contracts/ManagementApplicationContractsModule.cs
  32. 19
      Management/src/Win_in.Sfs.Scp.Management.Application.Contracts/Permissions/ManagementPermissionDefinitionProvider.cs
  33. 14
      Management/src/Win_in.Sfs.Scp.Management.Application.Contracts/Permissions/ManagementPermissions.cs
  34. 12
      Management/src/Win_in.Sfs.Scp.Management.Application.Contracts/Samples/ISampleAppService.cs
  35. 7
      Management/src/Win_in.Sfs.Scp.Management.Application.Contracts/Samples/SampleDto.cs
  36. 16
      Management/src/Win_in.Sfs.Scp.Management.Application.Contracts/Win_in.Sfs.Scp.Management.Application.Contracts.csproj
  37. 3
      Management/src/Win_in.Sfs.Scp.Management.Application/FodyWeavers.xml
  38. 30
      Management/src/Win_in.Sfs.Scp.Management.Application/FodyWeavers.xsd
  39. 14
      Management/src/Win_in.Sfs.Scp.Management.Application/ManagementAppService.cs
  40. 14
      Management/src/Win_in.Sfs.Scp.Management.Application/ManagementApplicationAutoMapperProfile.cs
  41. 25
      Management/src/Win_in.Sfs.Scp.Management.Application/ManagementApplicationModule.cs
  42. 29
      Management/src/Win_in.Sfs.Scp.Management.Application/Samples/SampleAppService.cs
  43. 17
      Management/src/Win_in.Sfs.Scp.Management.Application/Win_in.Sfs.Scp.Management.Application.csproj
  44. 3
      Management/src/Win_in.Sfs.Scp.Management.Domain.Shared/FodyWeavers.xml
  45. 30
      Management/src/Win_in.Sfs.Scp.Management.Domain.Shared/FodyWeavers.xsd
  46. 7
      Management/src/Win_in.Sfs.Scp.Management.Domain.Shared/Localization/Management/ar.json
  47. 7
      Management/src/Win_in.Sfs.Scp.Management.Domain.Shared/Localization/Management/cs.json
  48. 7
      Management/src/Win_in.Sfs.Scp.Management.Domain.Shared/Localization/Management/de-DE.json
  49. 7
      Management/src/Win_in.Sfs.Scp.Management.Domain.Shared/Localization/Management/en-GB.json
  50. 7
      Management/src/Win_in.Sfs.Scp.Management.Domain.Shared/Localization/Management/en.json
  51. 7
      Management/src/Win_in.Sfs.Scp.Management.Domain.Shared/Localization/Management/es.json
  52. 7
      Management/src/Win_in.Sfs.Scp.Management.Domain.Shared/Localization/Management/fi.json
  53. 7
      Management/src/Win_in.Sfs.Scp.Management.Domain.Shared/Localization/Management/fr.json
  54. 7
      Management/src/Win_in.Sfs.Scp.Management.Domain.Shared/Localization/Management/hi.json
  55. 7
      Management/src/Win_in.Sfs.Scp.Management.Domain.Shared/Localization/Management/hu.json
  56. 7
      Management/src/Win_in.Sfs.Scp.Management.Domain.Shared/Localization/Management/it.json
  57. 7
      Management/src/Win_in.Sfs.Scp.Management.Domain.Shared/Localization/Management/nl.json
  58. 6
      Management/src/Win_in.Sfs.Scp.Management.Domain.Shared/Localization/Management/pl-PL.json
  59. 6
      Management/src/Win_in.Sfs.Scp.Management.Domain.Shared/Localization/Management/pt-BR.json
  60. 6
      Management/src/Win_in.Sfs.Scp.Management.Domain.Shared/Localization/Management/sk.json
  61. 6
      Management/src/Win_in.Sfs.Scp.Management.Domain.Shared/Localization/Management/sl.json
  62. 7
      Management/src/Win_in.Sfs.Scp.Management.Domain.Shared/Localization/Management/tr.json
  63. 6
      Management/src/Win_in.Sfs.Scp.Management.Domain.Shared/Localization/Management/vi.json
  64. 7
      Management/src/Win_in.Sfs.Scp.Management.Domain.Shared/Localization/Management/zh-Hans.json
  65. 6
      Management/src/Win_in.Sfs.Scp.Management.Domain.Shared/Localization/Management/zh-Hant.json
  66. 10
      Management/src/Win_in.Sfs.Scp.Management.Domain.Shared/Localization/ManagementResource.cs
  67. 37
      Management/src/Win_in.Sfs.Scp.Management.Domain.Shared/ManagementDomainSharedModule.cs
  68. 7
      Management/src/Win_in.Sfs.Scp.Management.Domain.Shared/ManagementErrorCodes.cs
  69. 24
      Management/src/Win_in.Sfs.Scp.Management.Domain.Shared/Win_in.Sfs.Scp.Management.Domain.Shared.csproj
  70. 3
      Management/src/Win_in.Sfs.Scp.Management.Domain/FodyWeavers.xml
  71. 30
      Management/src/Win_in.Sfs.Scp.Management.Domain/FodyWeavers.xsd
  72. 11
      Management/src/Win_in.Sfs.Scp.Management.Domain/ManagementDbProperties.cs
  73. 14
      Management/src/Win_in.Sfs.Scp.Management.Domain/ManagementDomainModule.cs
  74. 14
      Management/src/Win_in.Sfs.Scp.Management.Domain/Settings/ManagementSettingDefinitionProvider.cs
  75. 11
      Management/src/Win_in.Sfs.Scp.Management.Domain/Settings/ManagementSettings.cs
  76. 15
      Management/src/Win_in.Sfs.Scp.Management.Domain/Win_in.Sfs.Scp.Management.Domain.csproj
  77. 13
      Management/src/Win_in.Sfs.Scp.Management.EntityFrameworkCore/EntityFrameworkCore/IManagementDbContext.cs
  78. 27
      Management/src/Win_in.Sfs.Scp.Management.EntityFrameworkCore/EntityFrameworkCore/ManagementDbContext.cs
  79. 43
      Management/src/Win_in.Sfs.Scp.Management.EntityFrameworkCore/EntityFrameworkCore/ManagementDbContextModelCreatingExtensions.cs
  80. 23
      Management/src/Win_in.Sfs.Scp.Management.EntityFrameworkCore/EntityFrameworkCore/ManagementEntityFrameworkCoreModule.cs
  81. 18
      Management/src/Win_in.Sfs.Scp.Management.EntityFrameworkCore/EntityFrameworkCore/ManagementModelBuilderConfigurationOptions.cs
  82. 3
      Management/src/Win_in.Sfs.Scp.Management.EntityFrameworkCore/FodyWeavers.xml
  83. 30
      Management/src/Win_in.Sfs.Scp.Management.EntityFrameworkCore/FodyWeavers.xsd
  84. 15
      Management/src/Win_in.Sfs.Scp.Management.EntityFrameworkCore/Win_in.Sfs.Scp.Management.EntityFrameworkCore.csproj
  85. 3
      Management/src/Win_in.Sfs.Scp.Management.HttpApi/FodyWeavers.xml
  86. 30
      Management/src/Win_in.Sfs.Scp.Management.HttpApi/FodyWeavers.xsd
  87. 13
      Management/src/Win_in.Sfs.Scp.Management.HttpApi/ManagementController.cs
  88. 33
      Management/src/Win_in.Sfs.Scp.Management.HttpApi/ManagementHttpApiModule.cs
  89. 33
      Management/src/Win_in.Sfs.Scp.Management.HttpApi/Samples/SampleController.cs
  90. 15
      Management/src/Win_in.Sfs.Scp.Management.HttpApi/Win_in.Sfs.Scp.Management.HttpApi.csproj
  91. 3
      Management/test/Win_in.Sfs.Scp.Management.Application.Tests/FodyWeavers.xml
  92. 30
      Management/test/Win_in.Sfs.Scp.Management.Application.Tests/FodyWeavers.xsd
  93. 10
      Management/test/Win_in.Sfs.Scp.Management.Application.Tests/ManagementApplicationTestBase.cs
  94. 13
      Management/test/Win_in.Sfs.Scp.Management.Application.Tests/ManagementApplicationTestModule.cs
  95. 30
      Management/test/Win_in.Sfs.Scp.Management.Application.Tests/Samples/SampleAppService_Tests.cs
  96. 16
      Management/test/Win_in.Sfs.Scp.Management.Application.Tests/Win_in.Sfs.Scp.Management.Application.Tests.csproj
  97. 3
      Management/test/Win_in.Sfs.Scp.Management.Domain.Tests/FodyWeavers.xml
  98. 30
      Management/test/Win_in.Sfs.Scp.Management.Domain.Tests/FodyWeavers.xsd
  99. 10
      Management/test/Win_in.Sfs.Scp.Management.Domain.Tests/ManagementDomainTestBase.cs
  100. 17
      Management/test/Win_in.Sfs.Scp.Management.Domain.Tests/ManagementDomainTestModule.cs

1
.gitattributes

@ -0,0 +1 @@
**/wwwroot/libs/** linguist-vendored

259
.gitignore

@ -0,0 +1,259 @@
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
# User-specific files
*.suo
*.user
*.userosscache
*.sln.docstates
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/
# Visual Studio 2015 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUNIT
*.VisualState.xml
TestResult.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# DNX
project.lock.json
artifacts/
*_i.c
*_p.c
*_i.h
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb
# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# JustCode is a .NET coding add-in
.JustCode
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# TODO: Comment the next line if you want to checkin your web deploy settings
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/
# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/packages/*
# except build/, which is used as an MSBuild target.
!**/packages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/packages/repositories.config
# NuGet v3's project.json files produces more ignoreable files
*.nuget.props
*.nuget.targets
# Microsoft Azure Build Output
csx/
*.build.csdef
# Microsoft Azure Emulator
ecf/
rcf/
# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!*.[Cc]ache/
# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.pfx
*.publishsettings
node_modules/
orleans.codegen.cs
# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
# SQL Server files
*.mdf
*.ldf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
# Paket dependency manager
.paket/paket.exe
paket-files/
# FAKE - F# Make
.fake/
# JetBrains Rider
.idea/
*.sln.iml
# Basedata
host/Win_in.Sfs.Basedata.IdentityServer/Logs/logs.txt
host/Win_in.Sfs.Basedata.HttpApi.Host/Logs/logs.txt
host/Win_in.Sfs.Basedata.Web.Host/Logs/logs.txt
host/Win_in.Sfs.Basedata.Web.Unified/Logs/logs.txt
host/Win_in.Sfs.Basedata.Blazor.Server.Host/Logs/logs.txt

1
Management/.gitattributes

@ -0,0 +1 @@
**/wwwroot/libs/** linguist-vendored

259
Management/.gitignore

@ -0,0 +1,259 @@
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
# User-specific files
*.suo
*.user
*.userosscache
*.sln.docstates
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/
# Visual Studio 2015 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUNIT
*.VisualState.xml
TestResult.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# DNX
project.lock.json
artifacts/
*_i.c
*_p.c
*_i.h
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb
# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# JustCode is a .NET coding add-in
.JustCode
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# TODO: Comment the next line if you want to checkin your web deploy settings
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/
# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/packages/*
# except build/, which is used as an MSBuild target.
!**/packages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/packages/repositories.config
# NuGet v3's project.json files produces more ignoreable files
*.nuget.props
*.nuget.targets
# Microsoft Azure Build Output
csx/
*.build.csdef
# Microsoft Azure Emulator
ecf/
rcf/
# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!*.[Cc]ache/
# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.pfx
*.publishsettings
node_modules/
orleans.codegen.cs
# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
# SQL Server files
*.mdf
*.ldf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
# Paket dependency manager
.paket/paket.exe
paket-files/
# FAKE - F# Make
.fake/
# JetBrains Rider
.idea/
*.sln.iml
# Management
host/Win_in.Sfs.Scp.Management.IdentityServer/Logs/logs.txt
host/Win_in.Sfs.Scp.Management.HttpApi.Host/Logs/logs.txt
host/Win_in.Sfs.Scp.Management.Web.Host/Logs/logs.txt
host/Win_in.Sfs.Scp.Management.Web.Unified/Logs/logs.txt
host/Win_in.Sfs.Scp.Management.Blazor.Server.Host/Logs/logs.txt

5
Management/.prettierrc

@ -0,0 +1,5 @@
{
"singleQuote": true,
"useTabs": false,
"tabWidth": 4
}

6
Management/NuGet.Config

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="BlazoriseMyGet" value="https://www.myget.org/F/blazorise/api/v3/index.json" />
</packageSources>
</configuration>

104
Management/Win_in.Sfs.Scp.Management.sln

@ -0,0 +1,104 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.29001.49
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Win_in.Sfs.Scp.Management.Domain.Shared", "src\Win_in.Sfs.Scp.Management.Domain.Shared\Win_in.Sfs.Scp.Management.Domain.Shared.csproj", "{D64C1577-4929-4B60-939E-96DE1534891A}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Win_in.Sfs.Scp.Management.Domain", "src\Win_in.Sfs.Scp.Management.Domain\Win_in.Sfs.Scp.Management.Domain.csproj", "{F2840BC7-0188-4606-9126-DADD0F5ABF7A}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Win_in.Sfs.Scp.Management.Application.Contracts", "src\Win_in.Sfs.Scp.Management.Application.Contracts\Win_in.Sfs.Scp.Management.Application.Contracts.csproj", "{BD65D04F-08D5-40C1-8C24-77CA0BACB877}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Win_in.Sfs.Scp.Management.Application", "src\Win_in.Sfs.Scp.Management.Application\Win_in.Sfs.Scp.Management.Application.csproj", "{78040F9E-3501-4A40-82DF-00A597710F35}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{649A3FFA-182F-4E56-9717-E6A9A2BEC545}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{CCD2960C-23CC-4AB4-B84D-60C7AAA52F4D}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "host", "host", "{E400416D-2895-4512-9D17-90681EEC7E0A}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Win_in.Sfs.Scp.Management.EntityFrameworkCore", "src\Win_in.Sfs.Scp.Management.EntityFrameworkCore\Win_in.Sfs.Scp.Management.EntityFrameworkCore.csproj", "{0CE86223-D31D-4315-A1F5-87BA3EE1B844}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Win_in.Sfs.Scp.Management.HttpApi", "src\Win_in.Sfs.Scp.Management.HttpApi\Win_in.Sfs.Scp.Management.HttpApi.csproj", "{077AA5F8-8B61-420C-A6B5-0150A66FDB34}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Win_in.Sfs.Scp.Management.TestBase", "test\Win_in.Sfs.Scp.Management.TestBase\Win_in.Sfs.Scp.Management.TestBase.csproj", "{C5BB573D-3030-4BCB-88B7-F6A85C32766C}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Win_in.Sfs.Scp.Management.EntityFrameworkCore.Tests", "test\Win_in.Sfs.Scp.Management.EntityFrameworkCore.Tests\Win_in.Sfs.Scp.Management.EntityFrameworkCore.Tests.csproj", "{527F645C-C1FC-406E-8479-81386C8ECF13}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Win_in.Sfs.Scp.Management.Domain.Tests", "test\Win_in.Sfs.Scp.Management.Domain.Tests\Win_in.Sfs.Scp.Management.Domain.Tests.csproj", "{E60895E5-79C4-447D-88B7-85CB5BA336A4}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Win_in.Sfs.Scp.Management.Application.Tests", "test\Win_in.Sfs.Scp.Management.Application.Tests\Win_in.Sfs.Scp.Management.Application.Tests.csproj", "{90CB5DC4-C040-45C7-8900-9688B26405BC}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Win_in.Sfs.Scp.Management.HttpApi.Host", "host\Win_in.Sfs.Scp.Management.HttpApi.Host\Win_in.Sfs.Scp.Management.HttpApi.Host.csproj", "{37B135B0-DAFE-4616-B25C-1BDF32FC44A2}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{D64C1577-4929-4B60-939E-96DE1534891A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D64C1577-4929-4B60-939E-96DE1534891A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D64C1577-4929-4B60-939E-96DE1534891A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D64C1577-4929-4B60-939E-96DE1534891A}.Release|Any CPU.Build.0 = Release|Any CPU
{F2840BC7-0188-4606-9126-DADD0F5ABF7A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F2840BC7-0188-4606-9126-DADD0F5ABF7A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F2840BC7-0188-4606-9126-DADD0F5ABF7A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F2840BC7-0188-4606-9126-DADD0F5ABF7A}.Release|Any CPU.Build.0 = Release|Any CPU
{BD65D04F-08D5-40C1-8C24-77CA0BACB877}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BD65D04F-08D5-40C1-8C24-77CA0BACB877}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BD65D04F-08D5-40C1-8C24-77CA0BACB877}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BD65D04F-08D5-40C1-8C24-77CA0BACB877}.Release|Any CPU.Build.0 = Release|Any CPU
{78040F9E-3501-4A40-82DF-00A597710F35}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{78040F9E-3501-4A40-82DF-00A597710F35}.Debug|Any CPU.Build.0 = Debug|Any CPU
{78040F9E-3501-4A40-82DF-00A597710F35}.Release|Any CPU.ActiveCfg = Release|Any CPU
{78040F9E-3501-4A40-82DF-00A597710F35}.Release|Any CPU.Build.0 = Release|Any CPU
{0CE86223-D31D-4315-A1F5-87BA3EE1B844}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0CE86223-D31D-4315-A1F5-87BA3EE1B844}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0CE86223-D31D-4315-A1F5-87BA3EE1B844}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0CE86223-D31D-4315-A1F5-87BA3EE1B844}.Release|Any CPU.Build.0 = Release|Any CPU
{077AA5F8-8B61-420C-A6B5-0150A66FDB34}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{077AA5F8-8B61-420C-A6B5-0150A66FDB34}.Debug|Any CPU.Build.0 = Debug|Any CPU
{077AA5F8-8B61-420C-A6B5-0150A66FDB34}.Release|Any CPU.ActiveCfg = Release|Any CPU
{077AA5F8-8B61-420C-A6B5-0150A66FDB34}.Release|Any CPU.Build.0 = Release|Any CPU
{C5BB573D-3030-4BCB-88B7-F6A85C32766C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C5BB573D-3030-4BCB-88B7-F6A85C32766C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C5BB573D-3030-4BCB-88B7-F6A85C32766C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C5BB573D-3030-4BCB-88B7-F6A85C32766C}.Release|Any CPU.Build.0 = Release|Any CPU
{527F645C-C1FC-406E-8479-81386C8ECF13}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{527F645C-C1FC-406E-8479-81386C8ECF13}.Debug|Any CPU.Build.0 = Debug|Any CPU
{527F645C-C1FC-406E-8479-81386C8ECF13}.Release|Any CPU.ActiveCfg = Release|Any CPU
{527F645C-C1FC-406E-8479-81386C8ECF13}.Release|Any CPU.Build.0 = Release|Any CPU
{E60895E5-79C4-447D-88B7-85CB5BA336A4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E60895E5-79C4-447D-88B7-85CB5BA336A4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E60895E5-79C4-447D-88B7-85CB5BA336A4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E60895E5-79C4-447D-88B7-85CB5BA336A4}.Release|Any CPU.Build.0 = Release|Any CPU
{90CB5DC4-C040-45C7-8900-9688B26405BC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{90CB5DC4-C040-45C7-8900-9688B26405BC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{90CB5DC4-C040-45C7-8900-9688B26405BC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{90CB5DC4-C040-45C7-8900-9688B26405BC}.Release|Any CPU.Build.0 = Release|Any CPU
{37B135B0-DAFE-4616-B25C-1BDF32FC44A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{37B135B0-DAFE-4616-B25C-1BDF32FC44A2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{37B135B0-DAFE-4616-B25C-1BDF32FC44A2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{37B135B0-DAFE-4616-B25C-1BDF32FC44A2}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{D64C1577-4929-4B60-939E-96DE1534891A} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545}
{F2840BC7-0188-4606-9126-DADD0F5ABF7A} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545}
{BD65D04F-08D5-40C1-8C24-77CA0BACB877} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545}
{78040F9E-3501-4A40-82DF-00A597710F35} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545}
{0CE86223-D31D-4315-A1F5-87BA3EE1B844} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545}
{077AA5F8-8B61-420C-A6B5-0150A66FDB34} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545}
{C5BB573D-3030-4BCB-88B7-F6A85C32766C} = {CCD2960C-23CC-4AB4-B84D-60C7AAA52F4D}
{527F645C-C1FC-406E-8479-81386C8ECF13} = {CCD2960C-23CC-4AB4-B84D-60C7AAA52F4D}
{E60895E5-79C4-447D-88B7-85CB5BA336A4} = {CCD2960C-23CC-4AB4-B84D-60C7AAA52F4D}
{90CB5DC4-C040-45C7-8900-9688B26405BC} = {CCD2960C-23CC-4AB4-B84D-60C7AAA52F4D}
{37B135B0-DAFE-4616-B25C-1BDF32FC44A2} = {E400416D-2895-4512-9D17-90681EEC7E0A}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {4324B3B4-B60B-4E3C-91D8-59576B4E26DD}
EndGlobalSection
EndGlobal

23
Management/Win_in.Sfs.Scp.Management.sln.DotSettings

@ -0,0 +1,23 @@
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:Boolean x:Key="/Default/CodeEditing/Intellisense/CodeCompletion/IntelliSenseCompletingCharacters/CSharpCompletingCharacters/UpgradedFromVSSettings/@EntryValue">True</s:Boolean>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=EnforceDoWhileStatementBraces/@EntryIndexedValue">WARNING</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=EnforceFixedStatementBraces/@EntryIndexedValue">WARNING</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=EnforceForeachStatementBraces/@EntryIndexedValue">WARNING</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=EnforceForStatementBraces/@EntryIndexedValue">WARNING</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=EnforceIfStatementBraces/@EntryIndexedValue">WARNING</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=EnforceLockStatementBraces/@EntryIndexedValue">WARNING</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=EnforceUsingStatementBraces/@EntryIndexedValue">WARNING</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=EnforceWhileStatementBraces/@EntryIndexedValue">WARNING</s:String>
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpCodeStyle/BRACES_FOR_FOR/@EntryValue">Required</s:String>
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpCodeStyle/BRACES_FOR_FOREACH/@EntryValue">Required</s:String>
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpCodeStyle/BRACES_FOR_IFELSE/@EntryValue">Required</s:String>
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpCodeStyle/BRACES_FOR_WHILE/@EntryValue">Required</s:String>
<s:Boolean x:Key="/Default/CodeStyle/CodeFormatting/CSharpCodeStyle/BRACES_REDUNDANT/@EntryValue">False</s:Boolean>
<s:Boolean x:Key="/Default/CodeStyle/Generate/=Implementations/@KeyIndexDefined">True</s:Boolean>
<s:String x:Key="/Default/CodeStyle/Generate/=Implementations/Options/=Async/@EntryIndexedValue">False</s:String>
<s:String x:Key="/Default/CodeStyle/Generate/=Implementations/Options/=Mutable/@EntryIndexedValue">False</s:String>
<s:Boolean x:Key="/Default/CodeStyle/Generate/=Overrides/@KeyIndexDefined">True</s:Boolean>
<s:String x:Key="/Default/CodeStyle/Generate/=Overrides/Options/=Async/@EntryIndexedValue">False</s:String>
<s:String x:Key="/Default/CodeStyle/Generate/=Overrides/Options/=Mutable/@EntryIndexedValue">False</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=SQL/@EntryIndexedValue">SQL</s:String>
</wpf:ResourceDictionary>

24
Management/common.props

@ -0,0 +1,24 @@
<Project>
<PropertyGroup>
<LangVersion>latest</LangVersion>
<Version>0.1.0</Version>
<NoWarn>$(NoWarn);CS1591</NoWarn>
<AbpProjectType>module</AbpProjectType>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="ConfigureAwait.Fody" Version="3.3.1" PrivateAssets="All" />
<PackageReference Include="Fody" Version="6.5.0">
<PrivateAssets>All</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
</ItemGroup>
<Target Name="NoWarnOnRazorViewImportedTypeConflicts" BeforeTargets="RazorCoreCompile">
<PropertyGroup>
<NoWarn>$(NoWarn);0436</NoWarn>
</PropertyGroup>
</Target>
</Project>

20
Management/database/Dockerfile

@ -0,0 +1,20 @@
FROM mcr.microsoft.com/dotnet/core/sdk:3.0-buster AS build
COPY . .
WORKDIR /templates/service/host/IdentityServerHost
RUN dotnet restore
RUN dotnet ef migrations script -i -o migrations-IdentityServerHost.sql
WORKDIR /templates/service/host/Win_in.Sfs.Scp.Management.Host
RUN dotnet restore
RUN dotnet ef migrations script -i -o migrations-Management.sql
FROM mcr.microsoft.com/mssql-tools AS final
WORKDIR /src
COPY --from=build /templates/service/host/IdentityServerHost/migrations-IdentityServerHost.sql migrations-IdentityServerHost.sql
COPY --from=build /templates/service/host/Win_in.Sfs.Scp.Management.Host/migrations-Management.sql migrations-Management.sql
COPY --from=build /templates/service/database/entrypoint.sh .
RUN /bin/bash -c "sed -i $'s/\r$//' entrypoint.sh"
RUN chmod +x ./entrypoint.sh
ENTRYPOINT ["./entrypoint.sh"]

12
Management/database/entrypoint.sh

@ -0,0 +1,12 @@
#!/bin/bash
until /opt/mssql-tools/bin/sqlcmd -S sqlserver -U SA -P $SA_PASSWORD -Q 'SELECT name FROM master.sys.databases'; do
>&2 echo "SQL Server is starting up"
sleep 1
done
/opt/mssql-tools/bin/sqlcmd -S sqlserver -U SA -P $SA_PASSWORD -Q "CREATE DATABASE [$IdentityServer_DB]"
/opt/mssql-tools/bin/sqlcmd -S sqlserver -U SA -P $SA_PASSWORD -Q "CREATE DATABASE [$Management_DB]"
/opt/mssql-tools/bin/sqlcmd -d $IdentityServer_DB -S sqlserver -U sa -P $SA_PASSWORD -i migrations-IdentityServerHost.sql
/opt/mssql-tools/bin/sqlcmd -d $Management_DB -S sqlserver -U sa -P $SA_PASSWORD -i migrations-Management.sql

13
Management/docker-compose.migrations.yml

@ -0,0 +1,13 @@
version: '3.4'
services:
migrations:
build:
context: ../../
dockerfile: templates/service/database/Dockerfile
depends_on:
- sqlserver
environment:
- IdentityServer_DB=Management_Identity
- Management_DB=Management_ModuleDb
- SA_PASSWORD=yourStrong(!)Password

29
Management/docker-compose.override.yml

@ -0,0 +1,29 @@
version: '3.4'
services:
sqlserver:
environment:
- SA_PASSWORD=yourStrong(!)Password
- ACCEPT_EULA=Y
ports:
- "51599:1433"
identity-server:
environment:
- ASPNETCORE_URLS=http://0.0.0.0:80
- ConnectionStrings__Default=Server=sqlserver;Database=Management_Identity;Trusted_Connection=True;User=sa;Password=yourStrong(!)Password;Integrated Security=false
- ConnectionStrings__SqlServerCache=Server=sqlserver;Database=Management_Cache;Trusted_Connection=True;User=sa;Password=yourStrong(!)Password;Integrated Security=false
ports:
- "51600:80"
management:
environment:
- ASPNETCORE_URLS=http://0.0.0.0:80
- ConnectionStrings__Default=Server=sqlserver;Database=Management_ModuleDb;Trusted_Connection=True;User=sa;Password=yourStrong(!)Password;Integrated Security=false
- ConnectionStrings__AbpSettingManagement=Server=sqlserver;Database=Management_Identity;Trusted_Connection=True;User=sa;Password=yourStrong(!)Password;Integrated Security=false
- ConnectionStrings__AbpPermissionManagement=Server=sqlserver;Database=Management_Identity;Trusted_Connection=True;User=sa;Password=yourStrong(!)Password;Integrated Security=false
- ConnectionStrings__AbpAuditLogging=Server=sqlserver;Database=Management_Identity;Trusted_Connection=True;User=sa;Password=yourStrong(!)Password;Integrated Security=false
- ConnectionStrings__SqlServerCache=Server=sqlserver;Database=Management_Cache;Trusted_Connection=True;User=sa;Password=yourStrong(!)Password;Integrated Security=false
- AuthServer__Authority=http://identity-server
ports:
- "51601:80"

25
Management/docker-compose.yml

@ -0,0 +1,25 @@
version: '3.4'
services:
sqlserver:
image: mcr.microsoft.com/mssql/server
volumes:
- dbdata:/var/opt/mssql
identity-server:
build:
context: ../../
dockerfile: templates/service/host/IdentityServerHost/Dockerfile
depends_on:
- sqlserver
management:
build:
context: ../../
dockerfile: templates/service/host/Win_in.Sfs.Scp.Management.Host/Dockerfile
depends_on:
- sqlserver
- identity-server
volumes:
dbdata:

13
Management/host/Win_in.Sfs.Scp.Management.HttpApi.Host/Controllers/HomeController.cs

@ -0,0 +1,13 @@
using Microsoft.AspNetCore.Mvc;
using Volo.Abp.AspNetCore.Mvc;
namespace Win_in.Sfs.Scp.Management.Controllers
{
public class HomeController : AbpController
{
public ActionResult Index()
{
return Redirect("~/swagger");
}
}
}

18
Management/host/Win_in.Sfs.Scp.Management.HttpApi.Host/Dockerfile

@ -0,0 +1,18 @@
FROM mcr.microsoft.com/dotnet/core/aspnet:3.0-buster-slim AS base
WORKDIR /app
EXPOSE 80
FROM mcr.microsoft.com/dotnet/core/sdk:3.0-buster AS build
WORKDIR /src
COPY . .
WORKDIR /src/templates/service/host/Win_in.Sfs.Scp.Management.HttpApi.Host
RUN dotnet restore -nowarn:msb3202,nu1503
RUN dotnet build --no-restore -c Release -o /app
FROM build AS publish
RUN dotnet publish --no-restore -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "Win_in.Sfs.Scp.Management.HttpApi.Host.dll"]

21
Management/host/Win_in.Sfs.Scp.Management.HttpApi.Host/EntityFrameworkCore/ManagementHttpApiHostMigrationsDbContext.cs

@ -0,0 +1,21 @@
using Microsoft.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore;
namespace Win_in.Sfs.Scp.Management.EntityFrameworkCore
{
public class ManagementHttpApiHostMigrationsDbContext : AbpDbContext<ManagementHttpApiHostMigrationsDbContext>
{
public ManagementHttpApiHostMigrationsDbContext(DbContextOptions<ManagementHttpApiHostMigrationsDbContext> options)
: base(options)
{
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.ConfigureManagement();
}
}
}

29
Management/host/Win_in.Sfs.Scp.Management.HttpApi.Host/EntityFrameworkCore/ManagementHttpApiHostMigrationsDbContextFactory.cs

@ -0,0 +1,29 @@
using System.IO;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Design;
using Microsoft.Extensions.Configuration;
namespace Win_in.Sfs.Scp.Management.EntityFrameworkCore
{
public class ManagementHttpApiHostMigrationsDbContextFactory : IDesignTimeDbContextFactory<ManagementHttpApiHostMigrationsDbContext>
{
public ManagementHttpApiHostMigrationsDbContext CreateDbContext(string[] args)
{
var configuration = BuildConfiguration();
var builder = new DbContextOptionsBuilder<ManagementHttpApiHostMigrationsDbContext>()
.UseSqlServer(configuration.GetConnectionString("Management"));
return new ManagementHttpApiHostMigrationsDbContext(builder.Options);
}
private static IConfigurationRoot BuildConfiguration()
{
var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: false);
return builder.Build();
}
}
}

3
Management/host/Win_in.Sfs.Scp.Management.HttpApi.Host/FodyWeavers.xml

@ -0,0 +1,3 @@
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
<ConfigureAwait ContinueOnCapturedContext="false" />
</Weavers>

30
Management/host/Win_in.Sfs.Scp.Management.HttpApi.Host/FodyWeavers.xsd

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- This file was generated by Fody. Manual changes to this file will be lost when your project is rebuilt. -->
<xs:element name="Weavers">
<xs:complexType>
<xs:all>
<xs:element name="ConfigureAwait" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:attribute name="ContinueOnCapturedContext" type="xs:boolean" />
</xs:complexType>
</xs:element>
</xs:all>
<xs:attribute name="VerifyAssembly" type="xs:boolean">
<xs:annotation>
<xs:documentation>'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="VerifyIgnoreCodes" type="xs:string">
<xs:annotation>
<xs:documentation>A comma-separated list of error codes that can be safely ignored in assembly verification.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="GenerateXsd" type="xs:boolean">
<xs:annotation>
<xs:documentation>'false' to turn off automatic generation of the XML Schema file.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>

196
Management/host/Win_in.Sfs.Scp.Management.HttpApi.Host/ManagementHttpApiHostModule.cs

@ -0,0 +1,196 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using IdentityModel;
using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.DataProtection;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Win_in.Sfs.Scp.Management.EntityFrameworkCore;
using StackExchange.Redis;
using Microsoft.OpenApi.Models;
using Volo.Abp;
using Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy;
using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared;
using Volo.Abp.AspNetCore.Serilog;
using Volo.Abp.AuditLogging.EntityFrameworkCore;
using Volo.Abp.Autofac;
using Volo.Abp.Caching;
using Volo.Abp.Caching.StackExchangeRedis;
using Volo.Abp.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore.SqlServer;
using Volo.Abp.Localization;
using Volo.Abp.Modularity;
using Volo.Abp.MultiTenancy;
using Volo.Abp.PermissionManagement.EntityFrameworkCore;
using Volo.Abp.Security.Claims;
using Volo.Abp.SettingManagement.EntityFrameworkCore;
using Volo.Abp.Swashbuckle;
using Volo.Abp.VirtualFileSystem;
namespace Win_in.Sfs.Scp.Management
{
[DependsOn(
typeof(ManagementApplicationModule),
typeof(ManagementEntityFrameworkCoreModule),
typeof(ManagementHttpApiModule),
typeof(AbpAspNetCoreMvcUiMultiTenancyModule),
typeof(AbpAutofacModule),
typeof(AbpCachingStackExchangeRedisModule),
typeof(AbpEntityFrameworkCoreSqlServerModule),
typeof(AbpAuditLoggingEntityFrameworkCoreModule),
typeof(AbpPermissionManagementEntityFrameworkCoreModule),
typeof(AbpSettingManagementEntityFrameworkCoreModule),
typeof(AbpAspNetCoreSerilogModule),
typeof(AbpSwashbuckleModule)
)]
public class ManagementHttpApiHostModule : AbpModule
{
private bool _isMultiTenancy = true;
public override void ConfigureServices(ServiceConfigurationContext context)
{
var hostingEnvironment = context.Services.GetHostingEnvironment();
var configuration = context.Services.GetConfiguration();
_isMultiTenancy = Convert.ToBoolean(configuration["IsMultiTenancy"]);
Configure<AbpDbContextOptions>(options =>
{
options.UseSqlServer();
});
Configure<AbpMultiTenancyOptions>(options =>
{
options.IsEnabled = _isMultiTenancy;
});
if (hostingEnvironment.IsDevelopment())
{
Configure<AbpVirtualFileSystemOptions>(options =>
{
options.FileSets.ReplaceEmbeddedByPhysical<ManagementDomainSharedModule>(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}src{0}Win_in.Sfs.Scp.Management.Domain.Shared", Path.DirectorySeparatorChar)));
options.FileSets.ReplaceEmbeddedByPhysical<ManagementDomainModule>(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}src{0}Win_in.Sfs.Scp.Management.Domain", Path.DirectorySeparatorChar)));
options.FileSets.ReplaceEmbeddedByPhysical<ManagementApplicationContractsModule>(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}src{0}Win_in.Sfs.Scp.Management.Application.Contracts", Path.DirectorySeparatorChar)));
options.FileSets.ReplaceEmbeddedByPhysical<ManagementApplicationModule>(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}src{0}Win_in.Sfs.Scp.Management.Application", Path.DirectorySeparatorChar)));
});
}
context.Services.AddAbpSwaggerGenWithOAuth(
configuration["AuthServer:Authority"],
new Dictionary<string, string>
{
{"Management", "Management API"}
},
options =>
{
options.SwaggerDoc("v1", new OpenApiInfo {Title = "Management API", Version = "v1"});
options.DocInclusionPredicate((docName, description) => true);
options.CustomSchemaIds(type => type.FullName);
});
Configure<AbpLocalizationOptions>(options =>
{
options.Languages.Add(new LanguageInfo("cs", "cs", "Čeština"));
options.Languages.Add(new LanguageInfo("en", "en", "English"));
options.Languages.Add(new LanguageInfo("en-GB", "en-GB", "English (UK)"));
options.Languages.Add(new LanguageInfo("fi", "fi", "Finnish"));
options.Languages.Add(new LanguageInfo("fr", "fr", "Français"));
options.Languages.Add(new LanguageInfo("hi", "hi", "Hindi", "in"));
options.Languages.Add(new LanguageInfo("it", "it", "Italian", "it"));
options.Languages.Add(new LanguageInfo("hu", "hu", "Magyar"));
options.Languages.Add(new LanguageInfo("pt-BR", "pt-BR", "Português"));
options.Languages.Add(new LanguageInfo("ru", "ru", "Русский"));
options.Languages.Add(new LanguageInfo("sk", "sk", "Slovak"));
options.Languages.Add(new LanguageInfo("tr", "tr", "Türkçe"));
options.Languages.Add(new LanguageInfo("zh-Hans", "zh-Hans", "简体中文"));
options.Languages.Add(new LanguageInfo("zh-Hant", "zh-Hant", "繁體中文"));
});
context.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.Authority = configuration["AuthServer:Authority"];
options.RequireHttpsMetadata = Convert.ToBoolean(configuration["AuthServer:RequireHttpsMetadata"]);
options.Audience = "Management";
});
Configure<AbpDistributedCacheOptions>(options =>
{
options.KeyPrefix = "Management:";
});
if (!hostingEnvironment.IsDevelopment())
{
var redis = ConnectionMultiplexer.Connect(configuration["Redis:Configuration"]);
context.Services
.AddDataProtection()
.PersistKeysToStackExchangeRedis(redis, "Management-Protection-Keys");
}
context.Services.AddCors(options =>
{
options.AddDefaultPolicy(builder =>
{
builder
.WithOrigins(
configuration["App:CorsOrigins"]
.Split(",", StringSplitOptions.RemoveEmptyEntries)
.Select(o => o.RemovePostFix("/"))
.ToArray()
)
.WithAbpExposedHeaders()
.SetIsOriginAllowedToAllowWildcardSubdomains()
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials();
});
});
}
public override void OnApplicationInitialization(ApplicationInitializationContext context)
{
var app = context.GetApplicationBuilder();
var env = context.GetEnvironment();
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseErrorPage();
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseCorrelationId();
app.UseStaticFiles();
app.UseRouting();
app.UseCors();
app.UseAuthentication();
if (_isMultiTenancy)
{
app.UseMultiTenancy();
}
app.UseAbpRequestLocalization();
app.UseAuthorization();
app.UseSwagger();
app.UseAbpSwaggerUI(options =>
{
options.SwaggerEndpoint("/swagger/v1/swagger.json", "Support APP API");
var configuration = context.GetConfiguration();
options.OAuthClientId(configuration["AuthServer:SwaggerClientId"]);
options.OAuthClientSecret(configuration["AuthServer:SwaggerClientSecret"]);
options.OAuthScopes("Management");
});
app.UseAuditing();
app.UseAbpSerilogEnrichers();
app.UseConfiguredEndpoints();
}
}
}

59
Management/host/Win_in.Sfs.Scp.Management.HttpApi.Host/Program.cs

@ -0,0 +1,59 @@
using System;
using System.IO;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Serilog;
using Serilog.Events;
namespace Win_in.Sfs.Scp.Management
{
public class Program
{
public static int Main(string[] args)
{
Log.Logger = new LoggerConfiguration()
#if DEBUG
.MinimumLevel.Debug()
#else
.MinimumLevel.Information()
#endif
.MinimumLevel.Override("Microsoft", LogEventLevel.Information)
.Enrich.FromLogContext()
.WriteTo.Async(c => c.File("Logs/logs.txt"))
#if DEBUG
.WriteTo.Async(c => c.Console())
#endif
.CreateLogger();
try
{
Log.Information("Starting web host.");
CreateHostBuilder(args).Build().Run();
return 0;
}
catch (Exception ex)
{
Log.Fatal(ex, "Host terminated unexpectedly!");
return 1;
}
finally
{
Log.CloseAndFlush();
}
}
internal static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureAppConfiguration(build =>
{
build.AddJsonFile("appsettings.secrets.json", optional: true);
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
})
.UseAutofac()
.UseSerilog();
}
}

12
Management/host/Win_in.Sfs.Scp.Management.HttpApi.Host/Properties/launchSettings.json

@ -0,0 +1,12 @@
{
"profiles": {
"Win_in.Sfs.Scp.Management.DemoApp": {
"commandName": "Project",
"launchBrowser": true,
"applicationUrl": "https://localhost:9202",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}

21
Management/host/Win_in.Sfs.Scp.Management.HttpApi.Host/Startup.cs

@ -0,0 +1,21 @@
using System;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
namespace Win_in.Sfs.Scp.Management
{
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddApplication<ManagementHttpApiHostModule>();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory)
{
app.InitializeApplication();
}
}
}

43
Management/host/Win_in.Sfs.Scp.Management.HttpApi.Host/Win_in.Sfs.Scp.Management.HttpApi.Host.csproj

@ -0,0 +1,43 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<Import Project="..\..\common.props" />
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<RootNamespace>Win_in.Sfs.Scp.Management</RootNamespace>
<PreserveCompilationReferences>true</PreserveCompilationReferences>
<UserSecretsId>Win_in.Sfs.Scp.Management-c2d31439-b723-48e2-b061-5ebd7aeb6010</UserSecretsId>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Serilog.AspNetCore" Version="4.1.0" />
<PackageReference Include="Serilog.Sinks.Async" Version="1.4.0" />
<PackageReference Include="IdentityModel" Version="5.1.0" />
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="5.0.*" />
<PackageReference Include="Microsoft.AspNetCore.DataProtection.StackExchangeRedis" Version="5.0.*" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="5.0.*" />
<PackageReference Include="Volo.Abp.Autofac" Version="4.4.2" />
<PackageReference Include="Volo.Abp.Caching.StackExchangeRedis" Version="4.4.2" />
<PackageReference Include="Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy" Version="4.4.2" />
<PackageReference Include="Volo.Abp.EntityFrameworkCore.SqlServer" Version="4.4.2" />
<PackageReference Include="Volo.Abp.AspNetCore.Serilog" Version="4.4.2" />
<PackageReference Include="Volo.Abp.Swashbuckle" Version="4.4.2" />
<PackageReference Include="Volo.Abp.PermissionManagement.EntityFrameworkCore" Version="4.4.2" />
<PackageReference Include="Volo.Abp.SettingManagement.EntityFrameworkCore" Version="4.4.2" />
<PackageReference Include="Volo.Abp.AuditLogging.EntityFrameworkCore" Version="4.4.2" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\src\Win_in.Sfs.Scp.Management.HttpApi\Win_in.Sfs.Scp.Management.HttpApi.csproj" />
<ProjectReference Include="..\..\src\Win_in.Sfs.Scp.Management.Application\Win_in.Sfs.Scp.Management.Application.csproj" />
<ProjectReference Include="..\..\src\Win_in.Sfs.Scp.Management.EntityFrameworkCore\Win_in.Sfs.Scp.Management.EntityFrameworkCore.csproj" />
</ItemGroup>
<ItemGroup>
<Compile Remove="Logs\**" />
<Content Remove="Logs\**" />
<EmbeddedResource Remove="Logs\**" />
<None Remove="Logs\**" />
</ItemGroup>
</Project>

20
Management/host/Win_in.Sfs.Scp.Management.HttpApi.Host/appsettings.json

@ -0,0 +1,20 @@
{
"App": {
"CorsOrigins": "https://*.Management.com,http://localhost:4200,http://localhost:44307,https://localhost:44307"
},
"ConnectionStrings": {
"Default": "Server=localhost;Database=Management_Main;User ID=sa;Password=Microsoft@2021;",
"Management": "Server=localhost;Database=Management_Module;User ID=sa;Password=Microsoft@2021;"
},
"Redis": {
"Configuration": "127.0.0.1"
},
"AuthServer": {
"Authority": "https://localhost:9000/",
"RequireHttpsMetadata": "false",
"SwaggerClientId": "Management_Swagger",
"SwaggerClientSecret": "1q2w3e*"
},
"IsMultiTenancy": true
}

2
Management/host/Win_in.Sfs.Scp.Management.HttpApi.Host/appsettings.secrets.json

@ -0,0 +1,2 @@
{
}

4
Management/host/Win_in.Sfs.Scp.Management.HttpApi.Host/yarn.lock

@ -0,0 +1,4 @@
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1

3
Management/src/Win_in.Sfs.Scp.Management.Application.Contracts/FodyWeavers.xml

@ -0,0 +1,3 @@
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
<ConfigureAwait ContinueOnCapturedContext="false" />
</Weavers>

30
Management/src/Win_in.Sfs.Scp.Management.Application.Contracts/FodyWeavers.xsd

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- This file was generated by Fody. Manual changes to this file will be lost when your project is rebuilt. -->
<xs:element name="Weavers">
<xs:complexType>
<xs:all>
<xs:element name="ConfigureAwait" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:attribute name="ContinueOnCapturedContext" type="xs:boolean" />
</xs:complexType>
</xs:element>
</xs:all>
<xs:attribute name="VerifyAssembly" type="xs:boolean">
<xs:annotation>
<xs:documentation>'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="VerifyIgnoreCodes" type="xs:string">
<xs:annotation>
<xs:documentation>A comma-separated list of error codes that can be safely ignored in assembly verification.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="GenerateXsd" type="xs:boolean">
<xs:annotation>
<xs:documentation>'false' to turn off automatic generation of the XML Schema file.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>

16
Management/src/Win_in.Sfs.Scp.Management.Application.Contracts/ManagementApplicationContractsModule.cs

@ -0,0 +1,16 @@
using Volo.Abp.Application;
using Volo.Abp.Modularity;
using Volo.Abp.Authorization;
namespace Win_in.Sfs.Scp.Management
{
[DependsOn(
typeof(ManagementDomainSharedModule),
typeof(AbpDddApplicationContractsModule),
typeof(AbpAuthorizationModule)
)]
public class ManagementApplicationContractsModule : AbpModule
{
}
}

19
Management/src/Win_in.Sfs.Scp.Management.Application.Contracts/Permissions/ManagementPermissionDefinitionProvider.cs

@ -0,0 +1,19 @@
using Win_in.Sfs.Scp.Management.Localization;
using Volo.Abp.Authorization.Permissions;
using Volo.Abp.Localization;
namespace Win_in.Sfs.Scp.Management.Permissions
{
public class ManagementPermissionDefinitionProvider : PermissionDefinitionProvider
{
public override void Define(IPermissionDefinitionContext context)
{
var myGroup = context.AddGroup(ManagementPermissions.GroupName, L("Permission:Management"));
}
private static LocalizableString L(string name)
{
return LocalizableString.Create<ManagementResource>(name);
}
}
}

14
Management/src/Win_in.Sfs.Scp.Management.Application.Contracts/Permissions/ManagementPermissions.cs

@ -0,0 +1,14 @@
using Volo.Abp.Reflection;
namespace Win_in.Sfs.Scp.Management.Permissions
{
public class ManagementPermissions
{
public const string GroupName = "Management";
public static string[] GetAll()
{
return ReflectionHelper.GetPublicConstantsRecursively(typeof(ManagementPermissions));
}
}
}

12
Management/src/Win_in.Sfs.Scp.Management.Application.Contracts/Samples/ISampleAppService.cs

@ -0,0 +1,12 @@
using System.Threading.Tasks;
using Volo.Abp.Application.Services;
namespace Win_in.Sfs.Scp.Management.Samples
{
public interface ISampleAppService : IApplicationService
{
Task<SampleDto> GetAsync();
Task<SampleDto> GetAuthorizedAsync();
}
}

7
Management/src/Win_in.Sfs.Scp.Management.Application.Contracts/Samples/SampleDto.cs

@ -0,0 +1,7 @@
namespace Win_in.Sfs.Scp.Management.Samples
{
public class SampleDto
{
public int Value { get; set; }
}
}

16
Management/src/Win_in.Sfs.Scp.Management.Application.Contracts/Win_in.Sfs.Scp.Management.Application.Contracts.csproj

@ -0,0 +1,16 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\common.props" />
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<RootNamespace>Win_in.Sfs.Scp.Management</RootNamespace>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Volo.Abp.Ddd.Application.Contracts" Version="4.4.2" />
<PackageReference Include="Volo.Abp.Authorization" Version="4.4.2" />
<ProjectReference Include="..\Win_in.Sfs.Scp.Management.Domain.Shared\Win_in.Sfs.Scp.Management.Domain.Shared.csproj" />
</ItemGroup>
</Project>

3
Management/src/Win_in.Sfs.Scp.Management.Application/FodyWeavers.xml

@ -0,0 +1,3 @@
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
<ConfigureAwait ContinueOnCapturedContext="false" />
</Weavers>

30
Management/src/Win_in.Sfs.Scp.Management.Application/FodyWeavers.xsd

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- This file was generated by Fody. Manual changes to this file will be lost when your project is rebuilt. -->
<xs:element name="Weavers">
<xs:complexType>
<xs:all>
<xs:element name="ConfigureAwait" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:attribute name="ContinueOnCapturedContext" type="xs:boolean" />
</xs:complexType>
</xs:element>
</xs:all>
<xs:attribute name="VerifyAssembly" type="xs:boolean">
<xs:annotation>
<xs:documentation>'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="VerifyIgnoreCodes" type="xs:string">
<xs:annotation>
<xs:documentation>A comma-separated list of error codes that can be safely ignored in assembly verification.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="GenerateXsd" type="xs:boolean">
<xs:annotation>
<xs:documentation>'false' to turn off automatic generation of the XML Schema file.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>

14
Management/src/Win_in.Sfs.Scp.Management.Application/ManagementAppService.cs

@ -0,0 +1,14 @@
using Win_in.Sfs.Scp.Management.Localization;
using Volo.Abp.Application.Services;
namespace Win_in.Sfs.Scp.Management
{
public abstract class ManagementAppService : ApplicationService
{
protected ManagementAppService()
{
LocalizationResource = typeof(ManagementResource);
ObjectMapperContext = typeof(ManagementApplicationModule);
}
}
}

14
Management/src/Win_in.Sfs.Scp.Management.Application/ManagementApplicationAutoMapperProfile.cs

@ -0,0 +1,14 @@
using AutoMapper;
namespace Win_in.Sfs.Scp.Management
{
public class ManagementApplicationAutoMapperProfile : Profile
{
public ManagementApplicationAutoMapperProfile()
{
/* You can configure your AutoMapper mapping configuration here.
* Alternatively, you can split your mapping configurations
* into multiple profile classes for a better organization. */
}
}
}

25
Management/src/Win_in.Sfs.Scp.Management.Application/ManagementApplicationModule.cs

@ -0,0 +1,25 @@
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.AutoMapper;
using Volo.Abp.Modularity;
using Volo.Abp.Application;
namespace Win_in.Sfs.Scp.Management
{
[DependsOn(
typeof(ManagementDomainModule),
typeof(ManagementApplicationContractsModule),
typeof(AbpDddApplicationModule),
typeof(AbpAutoMapperModule)
)]
public class ManagementApplicationModule : AbpModule
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
context.Services.AddAutoMapperObjectMapper<ManagementApplicationModule>();
Configure<AbpAutoMapperOptions>(options =>
{
options.AddMaps<ManagementApplicationModule>(validate: true);
});
}
}
}

29
Management/src/Win_in.Sfs.Scp.Management.Application/Samples/SampleAppService.cs

@ -0,0 +1,29 @@
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
namespace Win_in.Sfs.Scp.Management.Samples
{
public class SampleAppService : ManagementAppService, ISampleAppService
{
public Task<SampleDto> GetAsync()
{
return Task.FromResult(
new SampleDto
{
Value = 42
}
);
}
[Authorize]
public Task<SampleDto> GetAuthorizedAsync()
{
return Task.FromResult(
new SampleDto
{
Value = 42
}
);
}
}
}

17
Management/src/Win_in.Sfs.Scp.Management.Application/Win_in.Sfs.Scp.Management.Application.csproj

@ -0,0 +1,17 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\common.props" />
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<RootNamespace>Win_in.Sfs.Scp.Management</RootNamespace>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Volo.Abp.AutoMapper" Version="4.4.2" />
<PackageReference Include="Volo.Abp.Ddd.Application" Version="4.4.2" />
<ProjectReference Include="..\Win_in.Sfs.Scp.Management.Application.Contracts\Win_in.Sfs.Scp.Management.Application.Contracts.csproj" />
<ProjectReference Include="..\Win_in.Sfs.Scp.Management.Domain\Win_in.Sfs.Scp.Management.Domain.csproj" />
</ItemGroup>
</Project>

3
Management/src/Win_in.Sfs.Scp.Management.Domain.Shared/FodyWeavers.xml

@ -0,0 +1,3 @@
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
<ConfigureAwait ContinueOnCapturedContext="false" />
</Weavers>

30
Management/src/Win_in.Sfs.Scp.Management.Domain.Shared/FodyWeavers.xsd

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- This file was generated by Fody. Manual changes to this file will be lost when your project is rebuilt. -->
<xs:element name="Weavers">
<xs:complexType>
<xs:all>
<xs:element name="ConfigureAwait" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:attribute name="ContinueOnCapturedContext" type="xs:boolean" />
</xs:complexType>
</xs:element>
</xs:all>
<xs:attribute name="VerifyAssembly" type="xs:boolean">
<xs:annotation>
<xs:documentation>'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="VerifyIgnoreCodes" type="xs:string">
<xs:annotation>
<xs:documentation>A comma-separated list of error codes that can be safely ignored in assembly verification.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="GenerateXsd" type="xs:boolean">
<xs:annotation>
<xs:documentation>'false' to turn off automatic generation of the XML Schema file.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>

7
Management/src/Win_in.Sfs.Scp.Management.Domain.Shared/Localization/Management/ar.json

@ -0,0 +1,7 @@
{
"culture": "ar",
"texts": {
"MyAccount": "إدارة ملفى",
"SamplePageMessage": "صفحة نموذجية للوحدة النمطية Management"
}
}

7
Management/src/Win_in.Sfs.Scp.Management.Domain.Shared/Localization/Management/cs.json

@ -0,0 +1,7 @@
{
"culture": "cs",
"texts": {
"MyAccount": "Spravovat profil",
"SamplePageMessage": "Ukázková stránka pro modul Management"
}
}

7
Management/src/Win_in.Sfs.Scp.Management.Domain.Shared/Localization/Management/de-DE.json

@ -0,0 +1,7 @@
{
"culture": "de-DE",
"texts": {
"MyAccount": "Mein Konto",
"SamplePageMessage": "Eine Beispielseite für das Modul ManagementModul"
}
}

7
Management/src/Win_in.Sfs.Scp.Management.Domain.Shared/Localization/Management/en-GB.json

@ -0,0 +1,7 @@
{
"culture": "en-GB",
"texts": {
"MyAccount": "My account",
"SamplePageMessage": "A sample page for the Management module"
}
}

7
Management/src/Win_in.Sfs.Scp.Management.Domain.Shared/Localization/Management/en.json

@ -0,0 +1,7 @@
{
"culture": "en",
"texts": {
"MyAccount": "My account",
"SamplePageMessage": "A sample page for the Management module"
}
}

7
Management/src/Win_in.Sfs.Scp.Management.Domain.Shared/Localization/Management/es.json

@ -0,0 +1,7 @@
{
"culture": "es",
"texts": {
"MyAccount": "Mi cuenta",
"SamplePageMessage": "Una página de ejemplo para el módulo Management "
}
}

7
Management/src/Win_in.Sfs.Scp.Management.Domain.Shared/Localization/Management/fi.json

@ -0,0 +1,7 @@
{
"culture": "fi",
"texts": {
"MyAccount": "Tilini",
"SamplePageMessage": "Esimerkkisivu Management-moduulille"
}
}

7
Management/src/Win_in.Sfs.Scp.Management.Domain.Shared/Localization/Management/fr.json

@ -0,0 +1,7 @@
{
"culture": "fr",
"texts": {
"MyAccount": "Mon compte",
"SamplePageMessage": "Exemple de page pour le module Management"
}
}

7
Management/src/Win_in.Sfs.Scp.Management.Domain.Shared/Localization/Management/hi.json

@ -0,0 +1,7 @@
{
"culture": "hi",
"texts": {
"MyAccount": "मेरा खाता",
"SamplePageMessage": "Management मॉड्यूल के लिए एक नमूना पृष्ठ"
}
}

7
Management/src/Win_in.Sfs.Scp.Management.Domain.Shared/Localization/Management/hu.json

@ -0,0 +1,7 @@
{
"culture": "hu",
"texts": {
"MyAccount": "A fiókom",
"SamplePageMessage": "Mintaoldal a Management modulhoz"
}
}

7
Management/src/Win_in.Sfs.Scp.Management.Domain.Shared/Localization/Management/it.json

@ -0,0 +1,7 @@
{
"culture": "it",
"texts": {
"MyAccount": "Il mio conto",
"SamplePageMessage": "Una pagina di esempio per il modulo Management"
}
}

7
Management/src/Win_in.Sfs.Scp.Management.Domain.Shared/Localization/Management/nl.json

@ -0,0 +1,7 @@
{
"culture": "nl",
"texts": {
"MyAccount": "Mijn rekening",
"SamplePageMessage": "Een voorbeeldpagina voor de Management module"
}
}

6
Management/src/Win_in.Sfs.Scp.Management.Domain.Shared/Localization/Management/pl-PL.json

@ -0,0 +1,6 @@
{
"culture": "pl-PL",
"texts": {
}
}

6
Management/src/Win_in.Sfs.Scp.Management.Domain.Shared/Localization/Management/pt-BR.json

@ -0,0 +1,6 @@
{
"culture": "pt-BR",
"texts": {
}
}

6
Management/src/Win_in.Sfs.Scp.Management.Domain.Shared/Localization/Management/sk.json

@ -0,0 +1,6 @@
{
"culture": "sk",
"texts": {
"SamplePageMessage": "Ukážka stránky pre modul Management"
}
}

6
Management/src/Win_in.Sfs.Scp.Management.Domain.Shared/Localization/Management/sl.json

@ -0,0 +1,6 @@
{
"culture": "sl",
"texts": {
"MyAccount": "Moj račun"
}
}

7
Management/src/Win_in.Sfs.Scp.Management.Domain.Shared/Localization/Management/tr.json

@ -0,0 +1,7 @@
{
"culture": "tr",
"texts": {
"MyAccount": "Hesabım",
"SamplePageMessage": "Management modulünden örnek bir sayfa"
}
}

6
Management/src/Win_in.Sfs.Scp.Management.Domain.Shared/Localization/Management/vi.json

@ -0,0 +1,6 @@
{
"culture": "vi",
"texts": {
}
}

7
Management/src/Win_in.Sfs.Scp.Management.Domain.Shared/Localization/Management/zh-Hans.json

@ -0,0 +1,7 @@
{
"culture": "zh-Hans",
"texts": {
"MyAccount": "我的账户",
"SamplePageMessage": "Management模块的示例页面"
}
}

6
Management/src/Win_in.Sfs.Scp.Management.Domain.Shared/Localization/Management/zh-Hant.json

@ -0,0 +1,6 @@
{
"culture": "zh-Hant",
"texts": {
"MyAccount": "我的賬戶"
}
}

10
Management/src/Win_in.Sfs.Scp.Management.Domain.Shared/Localization/ManagementResource.cs

@ -0,0 +1,10 @@
using Volo.Abp.Localization;
namespace Win_in.Sfs.Scp.Management.Localization
{
[LocalizationResourceName("Management")]
public class ManagementResource
{
}
}

37
Management/src/Win_in.Sfs.Scp.Management.Domain.Shared/ManagementDomainSharedModule.cs

@ -0,0 +1,37 @@
using Volo.Abp.Modularity;
using Volo.Abp.Localization;
using Win_in.Sfs.Scp.Management.Localization;
using Volo.Abp.Localization.ExceptionHandling;
using Volo.Abp.Validation;
using Volo.Abp.Validation.Localization;
using Volo.Abp.VirtualFileSystem;
namespace Win_in.Sfs.Scp.Management
{
[DependsOn(
typeof(AbpValidationModule)
)]
public class ManagementDomainSharedModule : AbpModule
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
Configure<AbpVirtualFileSystemOptions>(options =>
{
options.FileSets.AddEmbedded<ManagementDomainSharedModule>();
});
Configure<AbpLocalizationOptions>(options =>
{
options.Resources
.Add<ManagementResource>("en")
.AddBaseTypes(typeof(AbpValidationResource))
.AddVirtualJson("/Localization/Management");
});
Configure<AbpExceptionLocalizationOptions>(options =>
{
options.MapCodeNamespace("Management", typeof(ManagementResource));
});
}
}
}

7
Management/src/Win_in.Sfs.Scp.Management.Domain.Shared/ManagementErrorCodes.cs

@ -0,0 +1,7 @@
namespace Win_in.Sfs.Scp.Management
{
public static class ManagementErrorCodes
{
//Add your business exception error codes here...
}
}

24
Management/src/Win_in.Sfs.Scp.Management.Domain.Shared/Win_in.Sfs.Scp.Management.Domain.Shared.csproj

@ -0,0 +1,24 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\common.props" />
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<RootNamespace>Win_in.Sfs.Scp.Management</RootNamespace>
<GenerateEmbeddedFilesManifest>true</GenerateEmbeddedFilesManifest>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Volo.Abp.Validation" Version="4.4.2" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="5.0.*" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Localization\Management\*.json" />
<Content Remove="Localization\Management\*.json" />
</ItemGroup>
</Project>

3
Management/src/Win_in.Sfs.Scp.Management.Domain/FodyWeavers.xml

@ -0,0 +1,3 @@
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
<ConfigureAwait ContinueOnCapturedContext="false" />
</Weavers>

30
Management/src/Win_in.Sfs.Scp.Management.Domain/FodyWeavers.xsd

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- This file was generated by Fody. Manual changes to this file will be lost when your project is rebuilt. -->
<xs:element name="Weavers">
<xs:complexType>
<xs:all>
<xs:element name="ConfigureAwait" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:attribute name="ContinueOnCapturedContext" type="xs:boolean" />
</xs:complexType>
</xs:element>
</xs:all>
<xs:attribute name="VerifyAssembly" type="xs:boolean">
<xs:annotation>
<xs:documentation>'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="VerifyIgnoreCodes" type="xs:string">
<xs:annotation>
<xs:documentation>A comma-separated list of error codes that can be safely ignored in assembly verification.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="GenerateXsd" type="xs:boolean">
<xs:annotation>
<xs:documentation>'false' to turn off automatic generation of the XML Schema file.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>

11
Management/src/Win_in.Sfs.Scp.Management.Domain/ManagementDbProperties.cs

@ -0,0 +1,11 @@
namespace Win_in.Sfs.Scp.Management
{
public static class ManagementDbProperties
{
public static string DbTablePrefix { get; set; } = "Management";
public static string DbSchema { get; set; } = null;
public const string ConnectionStringName = "Management";
}
}

14
Management/src/Win_in.Sfs.Scp.Management.Domain/ManagementDomainModule.cs

@ -0,0 +1,14 @@
using Volo.Abp.Domain;
using Volo.Abp.Modularity;
namespace Win_in.Sfs.Scp.Management
{
[DependsOn(
typeof(AbpDddDomainModule),
typeof(ManagementDomainSharedModule)
)]
public class ManagementDomainModule : AbpModule
{
}
}

14
Management/src/Win_in.Sfs.Scp.Management.Domain/Settings/ManagementSettingDefinitionProvider.cs

@ -0,0 +1,14 @@
using Volo.Abp.Settings;
namespace Win_in.Sfs.Scp.Management.Settings
{
public class ManagementSettingDefinitionProvider : SettingDefinitionProvider
{
public override void Define(ISettingDefinitionContext context)
{
/* Define module settings here.
* Use names from ManagementSettings class.
*/
}
}
}

11
Management/src/Win_in.Sfs.Scp.Management.Domain/Settings/ManagementSettings.cs

@ -0,0 +1,11 @@
namespace Win_in.Sfs.Scp.Management.Settings
{
public static class ManagementSettings
{
public const string GroupName = "Management";
/* Add constants for setting names. Example:
* public const string MySettingName = GroupName + ".MySettingName";
*/
}
}

15
Management/src/Win_in.Sfs.Scp.Management.Domain/Win_in.Sfs.Scp.Management.Domain.csproj

@ -0,0 +1,15 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\common.props" />
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<RootNamespace>Win_in.Sfs.Scp.Management</RootNamespace>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Volo.Abp.Ddd.Domain" Version="4.4.2" />
<ProjectReference Include="..\Win_in.Sfs.Scp.Management.Domain.Shared\Win_in.Sfs.Scp.Management.Domain.Shared.csproj" />
</ItemGroup>
</Project>

13
Management/src/Win_in.Sfs.Scp.Management.EntityFrameworkCore/EntityFrameworkCore/IManagementDbContext.cs

@ -0,0 +1,13 @@
using Volo.Abp.Data;
using Volo.Abp.EntityFrameworkCore;
namespace Win_in.Sfs.Scp.Management.EntityFrameworkCore
{
[ConnectionStringName(ManagementDbProperties.ConnectionStringName)]
public interface IManagementDbContext : IEfCoreDbContext
{
/* Add DbSet for each Aggregate Root here. Example:
* DbSet<Question> Questions { get; }
*/
}
}

27
Management/src/Win_in.Sfs.Scp.Management.EntityFrameworkCore/EntityFrameworkCore/ManagementDbContext.cs

@ -0,0 +1,27 @@
using Microsoft.EntityFrameworkCore;
using Volo.Abp.Data;
using Volo.Abp.EntityFrameworkCore;
namespace Win_in.Sfs.Scp.Management.EntityFrameworkCore
{
[ConnectionStringName(ManagementDbProperties.ConnectionStringName)]
public class ManagementDbContext : AbpDbContext<ManagementDbContext>, IManagementDbContext
{
/* Add DbSet for each Aggregate Root here. Example:
* public DbSet<Question> Questions { get; set; }
*/
public ManagementDbContext(DbContextOptions<ManagementDbContext> options)
: base(options)
{
}
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
builder.ConfigureManagement();
}
}
}

43
Management/src/Win_in.Sfs.Scp.Management.EntityFrameworkCore/EntityFrameworkCore/ManagementDbContextModelCreatingExtensions.cs

@ -0,0 +1,43 @@
using System;
using Microsoft.EntityFrameworkCore;
using Volo.Abp;
namespace Win_in.Sfs.Scp.Management.EntityFrameworkCore
{
public static class ManagementDbContextModelCreatingExtensions
{
public static void ConfigureManagement(
this ModelBuilder builder,
Action<ManagementModelBuilderConfigurationOptions> optionsAction = null)
{
Check.NotNull(builder, nameof(builder));
var options = new ManagementModelBuilderConfigurationOptions(
ManagementDbProperties.DbTablePrefix,
ManagementDbProperties.DbSchema
);
optionsAction?.Invoke(options);
/* Configure all entities here. Example:
builder.Entity<Question>(b =>
{
//Configure table & schema name
b.ToTable(options.TablePrefix + "Questions", options.Schema);
b.ConfigureByConvention();
//Properties
b.Property(q => q.Title).IsRequired().HasMaxLength(QuestionConsts.MaxTitleLength);
//Relations
b.HasMany(question => question.Tags).WithOne().HasForeignKey(qt => qt.QuestionId);
//Indexes
b.HasIndex(q => q.CreationTime);
});
*/
}
}
}

23
Management/src/Win_in.Sfs.Scp.Management.EntityFrameworkCore/EntityFrameworkCore/ManagementEntityFrameworkCoreModule.cs

@ -0,0 +1,23 @@
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.EntityFrameworkCore;
using Volo.Abp.Modularity;
namespace Win_in.Sfs.Scp.Management.EntityFrameworkCore
{
[DependsOn(
typeof(ManagementDomainModule),
typeof(AbpEntityFrameworkCoreModule)
)]
public class ManagementEntityFrameworkCoreModule : AbpModule
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
context.Services.AddAbpDbContext<ManagementDbContext>(options =>
{
/* Add custom repositories here. Example:
* options.AddRepository<Question, EfCoreQuestionRepository>();
*/
});
}
}
}

18
Management/src/Win_in.Sfs.Scp.Management.EntityFrameworkCore/EntityFrameworkCore/ManagementModelBuilderConfigurationOptions.cs

@ -0,0 +1,18 @@
using JetBrains.Annotations;
using Volo.Abp.EntityFrameworkCore.Modeling;
namespace Win_in.Sfs.Scp.Management.EntityFrameworkCore
{
public class ManagementModelBuilderConfigurationOptions : AbpModelBuilderConfigurationOptions
{
public ManagementModelBuilderConfigurationOptions(
[NotNull] string tablePrefix = "",
[CanBeNull] string schema = null)
: base(
tablePrefix,
schema)
{
}
}
}

3
Management/src/Win_in.Sfs.Scp.Management.EntityFrameworkCore/FodyWeavers.xml

@ -0,0 +1,3 @@
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
<ConfigureAwait ContinueOnCapturedContext="false" />
</Weavers>

30
Management/src/Win_in.Sfs.Scp.Management.EntityFrameworkCore/FodyWeavers.xsd

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- This file was generated by Fody. Manual changes to this file will be lost when your project is rebuilt. -->
<xs:element name="Weavers">
<xs:complexType>
<xs:all>
<xs:element name="ConfigureAwait" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:attribute name="ContinueOnCapturedContext" type="xs:boolean" />
</xs:complexType>
</xs:element>
</xs:all>
<xs:attribute name="VerifyAssembly" type="xs:boolean">
<xs:annotation>
<xs:documentation>'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="VerifyIgnoreCodes" type="xs:string">
<xs:annotation>
<xs:documentation>A comma-separated list of error codes that can be safely ignored in assembly verification.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="GenerateXsd" type="xs:boolean">
<xs:annotation>
<xs:documentation>'false' to turn off automatic generation of the XML Schema file.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>

15
Management/src/Win_in.Sfs.Scp.Management.EntityFrameworkCore/Win_in.Sfs.Scp.Management.EntityFrameworkCore.csproj

@ -0,0 +1,15 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\common.props" />
<PropertyGroup>
<TargetFramework>netstandard2.1</TargetFramework>
<RootNamespace>Win_in.Sfs.Scp.Management</RootNamespace>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Volo.Abp.EntityFrameworkCore" Version="4.4.2" />
<ProjectReference Include="..\Win_in.Sfs.Scp.Management.Domain\Win_in.Sfs.Scp.Management.Domain.csproj" />
</ItemGroup>
</Project>

3
Management/src/Win_in.Sfs.Scp.Management.HttpApi/FodyWeavers.xml

@ -0,0 +1,3 @@
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
<ConfigureAwait ContinueOnCapturedContext="false" />
</Weavers>

30
Management/src/Win_in.Sfs.Scp.Management.HttpApi/FodyWeavers.xsd

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- This file was generated by Fody. Manual changes to this file will be lost when your project is rebuilt. -->
<xs:element name="Weavers">
<xs:complexType>
<xs:all>
<xs:element name="ConfigureAwait" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:attribute name="ContinueOnCapturedContext" type="xs:boolean" />
</xs:complexType>
</xs:element>
</xs:all>
<xs:attribute name="VerifyAssembly" type="xs:boolean">
<xs:annotation>
<xs:documentation>'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="VerifyIgnoreCodes" type="xs:string">
<xs:annotation>
<xs:documentation>A comma-separated list of error codes that can be safely ignored in assembly verification.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="GenerateXsd" type="xs:boolean">
<xs:annotation>
<xs:documentation>'false' to turn off automatic generation of the XML Schema file.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>

13
Management/src/Win_in.Sfs.Scp.Management.HttpApi/ManagementController.cs

@ -0,0 +1,13 @@
using Win_in.Sfs.Scp.Management.Localization;
using Volo.Abp.AspNetCore.Mvc;
namespace Win_in.Sfs.Scp.Management
{
public abstract class ManagementController : AbpController
{
protected ManagementController()
{
LocalizationResource = typeof(ManagementResource);
}
}
}

33
Management/src/Win_in.Sfs.Scp.Management.HttpApi/ManagementHttpApiModule.cs

@ -0,0 +1,33 @@
using Localization.Resources.AbpUi;
using Win_in.Sfs.Scp.Management.Localization;
using Volo.Abp.AspNetCore.Mvc;
using Volo.Abp.Localization;
using Volo.Abp.Modularity;
using Microsoft.Extensions.DependencyInjection;
namespace Win_in.Sfs.Scp.Management
{
[DependsOn(
typeof(ManagementApplicationContractsModule),
typeof(AbpAspNetCoreMvcModule))]
public class ManagementHttpApiModule : AbpModule
{
public override void PreConfigureServices(ServiceConfigurationContext context)
{
PreConfigure<IMvcBuilder>(mvcBuilder =>
{
mvcBuilder.AddApplicationPartIfNotExists(typeof(ManagementHttpApiModule).Assembly);
});
}
public override void ConfigureServices(ServiceConfigurationContext context)
{
Configure<AbpLocalizationOptions>(options =>
{
options.Resources
.Get<ManagementResource>()
.AddBaseTypes(typeof(AbpUiResource));
});
}
}
}

33
Management/src/Win_in.Sfs.Scp.Management.HttpApi/Samples/SampleController.cs

@ -0,0 +1,33 @@
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Volo.Abp;
namespace Win_in.Sfs.Scp.Management.Samples
{
[RemoteService]
[Route("api/Management/sample")]
public class SampleController : ManagementController, ISampleAppService
{
private readonly ISampleAppService _sampleAppService;
public SampleController(ISampleAppService sampleAppService)
{
_sampleAppService = sampleAppService;
}
[HttpGet]
public async Task<SampleDto> GetAsync()
{
return await _sampleAppService.GetAsync();
}
[HttpGet]
[Route("authorized")]
[Authorize]
public async Task<SampleDto> GetAuthorizedAsync()
{
return await _sampleAppService.GetAsync();
}
}
}

15
Management/src/Win_in.Sfs.Scp.Management.HttpApi/Win_in.Sfs.Scp.Management.HttpApi.csproj

@ -0,0 +1,15 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\common.props" />
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<RootNamespace>Win_in.Sfs.Scp.Management</RootNamespace>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Volo.Abp.AspNetCore.Mvc" Version="4.4.2" />
<ProjectReference Include="..\Win_in.Sfs.Scp.Management.Application.Contracts\Win_in.Sfs.Scp.Management.Application.Contracts.csproj" />
</ItemGroup>
</Project>

3
Management/test/Win_in.Sfs.Scp.Management.Application.Tests/FodyWeavers.xml

@ -0,0 +1,3 @@
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
<ConfigureAwait ContinueOnCapturedContext="false" />
</Weavers>

30
Management/test/Win_in.Sfs.Scp.Management.Application.Tests/FodyWeavers.xsd

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- This file was generated by Fody. Manual changes to this file will be lost when your project is rebuilt. -->
<xs:element name="Weavers">
<xs:complexType>
<xs:all>
<xs:element name="ConfigureAwait" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:attribute name="ContinueOnCapturedContext" type="xs:boolean" />
</xs:complexType>
</xs:element>
</xs:all>
<xs:attribute name="VerifyAssembly" type="xs:boolean">
<xs:annotation>
<xs:documentation>'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="VerifyIgnoreCodes" type="xs:string">
<xs:annotation>
<xs:documentation>A comma-separated list of error codes that can be safely ignored in assembly verification.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="GenerateXsd" type="xs:boolean">
<xs:annotation>
<xs:documentation>'false' to turn off automatic generation of the XML Schema file.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>

10
Management/test/Win_in.Sfs.Scp.Management.Application.Tests/ManagementApplicationTestBase.cs

@ -0,0 +1,10 @@
namespace Win_in.Sfs.Scp.Management
{
/* Inherit from this class for your application layer tests.
* See SampleAppService_Tests for example.
*/
public abstract class ManagementApplicationTestBase : ManagementTestBase<ManagementApplicationTestModule>
{
}
}

13
Management/test/Win_in.Sfs.Scp.Management.Application.Tests/ManagementApplicationTestModule.cs

@ -0,0 +1,13 @@
using Volo.Abp.Modularity;
namespace Win_in.Sfs.Scp.Management
{
[DependsOn(
typeof(ManagementApplicationModule),
typeof(ManagementDomainTestModule)
)]
public class ManagementApplicationTestModule : AbpModule
{
}
}

30
Management/test/Win_in.Sfs.Scp.Management.Application.Tests/Samples/SampleAppService_Tests.cs

@ -0,0 +1,30 @@
using System.Threading.Tasks;
using Shouldly;
using Xunit;
namespace Win_in.Sfs.Scp.Management.Samples
{
public class SampleAppService_Tests : ManagementApplicationTestBase
{
private readonly ISampleAppService _sampleAppService;
public SampleAppService_Tests()
{
_sampleAppService = GetRequiredService<ISampleAppService>();
}
[Fact]
public async Task GetAsync()
{
var result = await _sampleAppService.GetAsync();
result.Value.ShouldBe(42);
}
[Fact]
public async Task GetAuthorizedAsync()
{
var result = await _sampleAppService.GetAuthorizedAsync();
result.Value.ShouldBe(42);
}
}
}

16
Management/test/Win_in.Sfs.Scp.Management.Application.Tests/Win_in.Sfs.Scp.Management.Application.Tests.csproj

@ -0,0 +1,16 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\common.props" />
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<RootNamespace>Win_in.Sfs.Scp.Management</RootNamespace>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\..\src\Win_in.Sfs.Scp.Management.Application\Win_in.Sfs.Scp.Management.Application.csproj" />
<ProjectReference Include="..\Win_in.Sfs.Scp.Management.Domain.Tests\Win_in.Sfs.Scp.Management.Domain.Tests.csproj" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.9.1" />
</ItemGroup>
</Project>

3
Management/test/Win_in.Sfs.Scp.Management.Domain.Tests/FodyWeavers.xml

@ -0,0 +1,3 @@
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
<ConfigureAwait ContinueOnCapturedContext="false" />
</Weavers>

30
Management/test/Win_in.Sfs.Scp.Management.Domain.Tests/FodyWeavers.xsd

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- This file was generated by Fody. Manual changes to this file will be lost when your project is rebuilt. -->
<xs:element name="Weavers">
<xs:complexType>
<xs:all>
<xs:element name="ConfigureAwait" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:attribute name="ContinueOnCapturedContext" type="xs:boolean" />
</xs:complexType>
</xs:element>
</xs:all>
<xs:attribute name="VerifyAssembly" type="xs:boolean">
<xs:annotation>
<xs:documentation>'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="VerifyIgnoreCodes" type="xs:string">
<xs:annotation>
<xs:documentation>A comma-separated list of error codes that can be safely ignored in assembly verification.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="GenerateXsd" type="xs:boolean">
<xs:annotation>
<xs:documentation>'false' to turn off automatic generation of the XML Schema file.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>

10
Management/test/Win_in.Sfs.Scp.Management.Domain.Tests/ManagementDomainTestBase.cs

@ -0,0 +1,10 @@
namespace Win_in.Sfs.Scp.Management
{
/* Inherit from this class for your domain layer tests.
* See SampleManager_Tests for example.
*/
public abstract class ManagementDomainTestBase : ManagementTestBase<ManagementDomainTestModule>
{
}
}

17
Management/test/Win_in.Sfs.Scp.Management.Domain.Tests/ManagementDomainTestModule.cs

@ -0,0 +1,17 @@
using Win_in.Sfs.Scp.Management.EntityFrameworkCore;
using Volo.Abp.Modularity;
namespace Win_in.Sfs.Scp.Management
{
/* Domain tests are configured to use the EF Core provider.
* You can switch to MongoDB, however your domain tests should be
* database independent anyway.
*/
[DependsOn(
typeof(ManagementEntityFrameworkCoreTestModule)
)]
public class ManagementDomainTestModule : AbpModule
{
}
}

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save