├── .gitignore
├── LICENSE
├── README.md
├── _screenshots
├── home.png
├── login.png
├── swagger.png
└── user-create-modal.png
├── angular
├── .angular-cli.json
├── .editorconfig
├── .gitignore
├── .vscode
│ └── settings.json
├── Dockerfile
├── README.md
├── debug.log
├── e2e
│ ├── app.e2e-spec.ts
│ ├── app.po.ts
│ └── tsconfig.json
├── karma.conf.js
├── nswag
│ ├── refresh.bat
│ ├── service.config.nswag
│ └── service.extensions.ts
├── package-lock.json
├── package.json
├── protractor.conf.js
├── src
│ ├── AppPreBootstrap.ts
│ ├── account
│ │ ├── account-routing.module.ts
│ │ ├── account.component.html
│ │ ├── account.component.less
│ │ ├── account.component.ts
│ │ ├── account.module.ts
│ │ ├── layout
│ │ │ ├── account-languages.component.html
│ │ │ ├── account-languages.component.less
│ │ │ └── account-languages.component.ts
│ │ ├── login
│ │ │ ├── login.component.html
│ │ │ ├── login.component.less
│ │ │ ├── login.component.ts
│ │ │ └── login.service.ts
│ │ ├── register
│ │ │ ├── register.component.html
│ │ │ └── register.component.ts
│ │ └── tenant
│ │ │ ├── tenant-change-modal.component.html
│ │ │ ├── tenant-change-modal.component.ts
│ │ │ ├── tenant-change.component.html
│ │ │ └── tenant-change.component.ts
│ ├── app
│ │ ├── app-routing.module.ts
│ │ ├── app.component.html
│ │ ├── app.component.spec.ts
│ │ ├── app.component.ts
│ │ ├── app.module.ts
│ │ ├── demo
│ │ │ └── table
│ │ │ │ ├── table-data.ts
│ │ │ │ ├── table.component.html
│ │ │ │ └── table.component.ts
│ │ ├── layout
│ │ │ ├── right-sidebar.component.html
│ │ │ ├── right-sidebar.component.ts
│ │ │ ├── sidebar-footer.component.html
│ │ │ ├── sidebar-footer.component.ts
│ │ │ ├── sidebar-nav.component.html
│ │ │ ├── sidebar-nav.component.ts
│ │ │ ├── sidebar-user-area.component.html
│ │ │ ├── sidebar-user-area.component.ts
│ │ │ ├── topbar-languageswitch.component.html
│ │ │ ├── topbar-languageswitch.component.ts
│ │ │ ├── topbar.component.html
│ │ │ └── topbar.component.ts
│ │ ├── pages
│ │ │ ├── about
│ │ │ │ ├── about.component.html
│ │ │ │ └── about.component.ts
│ │ │ └── home
│ │ │ │ ├── home.component.html
│ │ │ │ └── home.component.ts
│ │ └── system
│ │ │ ├── roles
│ │ │ ├── create-role.component.html
│ │ │ ├── create-role.component.ts
│ │ │ ├── edit-role.component.html
│ │ │ ├── edit-role.component.ts
│ │ │ ├── roles.component.html
│ │ │ └── roles.component.ts
│ │ │ ├── tenants
│ │ │ ├── create-tenant.component.html
│ │ │ ├── create-tenant.component.ts
│ │ │ ├── edit-tenant.component.html
│ │ │ ├── edit-tenant.component.ts
│ │ │ ├── tenants.component.html
│ │ │ └── tenants.component.ts
│ │ │ └── users
│ │ │ ├── create-user.component.html
│ │ │ ├── create-user.component.ts
│ │ │ ├── edit-user.component.html
│ │ │ ├── edit-user.component.ts
│ │ │ ├── users.component.html
│ │ │ └── users.component.ts
│ ├── assets
│ │ ├── .gitkeep
│ │ ├── app-logo-small.png
│ │ ├── appconfig.json
│ │ ├── fonts
│ │ │ ├── material-icons
│ │ │ │ └── materialicons.woff2
│ │ │ └── roboto
│ │ │ │ ├── -2n2p-_Y08sg57CNWQfKNvesZW2xOQ-xsNqO47m55DA.woff2
│ │ │ │ ├── 77FXFjRbGzN4aCrSFhlh3hJtnKITppOI_IvcXXDNrsc.woff2
│ │ │ │ ├── 97uahxiqZRoncBaCEI3aWxJtnKITppOI_IvcXXDNrsc.woff2
│ │ │ │ ├── CWB0XYA8bzo0kSThX0UTuA.woff2
│ │ │ │ ├── Fcx7Wwv8OzT71A3E1XOAjvesZW2xOQ-xsNqO47m55DA.woff2
│ │ │ │ ├── NdF9MtnOpLzo-noMoG0miPesZW2xOQ-xsNqO47m55DA.woff2
│ │ │ │ ├── PwZc-YbIL414wB9rB1IAPRJtnKITppOI_IvcXXDNrsc.woff2
│ │ │ │ ├── UX6i4JxQDm3fVTc1CPuwqhJtnKITppOI_IvcXXDNrsc.woff2
│ │ │ │ ├── d-6IYplOFocCacKzxwXSOFtXRa8TVwTICgirnJhmVJw.woff2
│ │ │ │ ├── ek4gzZ-GeXAPcSbHtCeQI_esZW2xOQ-xsNqO47m55DA.woff2
│ │ │ │ ├── isZ-wbCXNKAbnjo6_TwHThJtnKITppOI_IvcXXDNrsc.woff2
│ │ │ │ ├── jSN2CGVDbcVyCnfJfjSdfBJtnKITppOI_IvcXXDNrsc.woff2
│ │ │ │ ├── mErvLBYg_cXG3rLvUsKT_fesZW2xOQ-xsNqO47m55DA.woff2
│ │ │ │ ├── roboto.css
│ │ │ │ └── u0TOpm082MNkS5K0Q4rhqvesZW2xOQ-xsNqO47m55DA.woff2
│ │ └── images
│ │ │ └── user.png
│ ├── bsb-theme
│ │ ├── css
│ │ │ ├── materialize.css
│ │ │ ├── style.css
│ │ │ ├── style.min.css
│ │ │ └── themes
│ │ │ │ ├── all-themes.css
│ │ │ │ ├── all-themes.min.css
│ │ │ │ ├── theme-amber.css
│ │ │ │ ├── theme-amber.min.css
│ │ │ │ ├── theme-black.css
│ │ │ │ ├── theme-black.min.css
│ │ │ │ ├── theme-blue-grey.css
│ │ │ │ ├── theme-blue-grey.min.css
│ │ │ │ ├── theme-blue.css
│ │ │ │ ├── theme-blue.min.css
│ │ │ │ ├── theme-brown.css
│ │ │ │ ├── theme-brown.min.css
│ │ │ │ ├── theme-cyan.css
│ │ │ │ ├── theme-cyan.min.css
│ │ │ │ ├── theme-deep-orange.css
│ │ │ │ ├── theme-deep-orange.min.css
│ │ │ │ ├── theme-deep-purple.css
│ │ │ │ ├── theme-deep-purple.min.css
│ │ │ │ ├── theme-green.css
│ │ │ │ ├── theme-green.min.css
│ │ │ │ ├── theme-grey.css
│ │ │ │ ├── theme-grey.min.css
│ │ │ │ ├── theme-indigo.css
│ │ │ │ ├── theme-indigo.min.css
│ │ │ │ ├── theme-light-blue.css
│ │ │ │ ├── theme-light-blue.min.css
│ │ │ │ ├── theme-lime.css
│ │ │ │ ├── theme-lime.min.css
│ │ │ │ ├── theme-orange.css
│ │ │ │ ├── theme-orange.min.css
│ │ │ │ ├── theme-pink.css
│ │ │ │ ├── theme-pink.min.css
│ │ │ │ ├── theme-purple.css
│ │ │ │ ├── theme-purple.min.css
│ │ │ │ ├── theme-red.css
│ │ │ │ ├── theme-red.min.css
│ │ │ │ ├── theme-teal.css
│ │ │ │ ├── theme-teal.min.css
│ │ │ │ ├── theme-yellow.css
│ │ │ │ └── theme-yellow.min.css
│ │ ├── images
│ │ │ └── user-img-background.jpg
│ │ └── js
│ │ │ ├── admin.js
│ │ │ ├── demo.js
│ │ │ ├── helpers.js
│ │ │ └── jquery.validate.js
│ ├── environments
│ │ ├── environment.hmr.ts
│ │ ├── environment.prod.ts
│ │ └── environment.ts
│ ├── favicon.ico
│ ├── framework
│ │ ├── studiox-ng2-module
│ │ │ ├── build.bat
│ │ │ ├── dist
│ │ │ │ ├── index.d.ts
│ │ │ │ ├── index.js
│ │ │ │ ├── index.js.map
│ │ │ │ └── src
│ │ │ │ │ ├── auth
│ │ │ │ │ ├── permission-checker.service.d.ts
│ │ │ │ │ ├── permission-checker.service.js
│ │ │ │ │ ├── permission-checker.service.js.map
│ │ │ │ │ ├── token.service.d.ts
│ │ │ │ │ ├── token.service.js
│ │ │ │ │ └── token.service.js.map
│ │ │ │ │ ├── features
│ │ │ │ │ ├── feature-checker.service.js
│ │ │ │ │ └── feature-checker.service.js.map
│ │ │ │ │ ├── localization
│ │ │ │ │ ├── localization.service.js
│ │ │ │ │ └── localization.service.js.map
│ │ │ │ │ ├── log
│ │ │ │ │ ├── log.service.d.ts
│ │ │ │ │ ├── log.service.js
│ │ │ │ │ └── log.service.js.map
│ │ │ │ │ ├── message
│ │ │ │ │ ├── message.service.d.ts
│ │ │ │ │ ├── message.service.js
│ │ │ │ │ └── message.service.js.map
│ │ │ │ │ ├── multi-tenancy
│ │ │ │ │ ├── studiox-multi-tenancy.service.d.ts
│ │ │ │ │ ├── studiox-multi-tenancy.service.js
│ │ │ │ │ └── studiox-multi-tenancy.service.js.map
│ │ │ │ │ ├── notify
│ │ │ │ │ ├── notify.service.d.ts
│ │ │ │ │ ├── notify.service.js
│ │ │ │ │ └── notify.service.js.map
│ │ │ │ │ ├── session
│ │ │ │ │ ├── studiox-session.service.js
│ │ │ │ │ └── studiox-session.service.js.map
│ │ │ │ │ ├── settings
│ │ │ │ │ ├── setting.service.d.ts
│ │ │ │ │ ├── setting.service.js
│ │ │ │ │ └── setting.service.js.map
│ │ │ │ │ ├── studiox-user-configuration.service.d.ts
│ │ │ │ │ ├── studiox-user-configuration.service.js
│ │ │ │ │ ├── studiox-user-configuration.service.js.map
│ │ │ │ │ ├── studiox.module.d.ts
│ │ │ │ │ ├── studiox.module.js
│ │ │ │ │ ├── studiox.module.js.map
│ │ │ │ │ ├── studioxHttp.d.ts
│ │ │ │ │ ├── studioxHttp.js
│ │ │ │ │ ├── studioxHttp.js.map
│ │ │ │ │ └── utils
│ │ │ │ │ ├── utils.service.d.ts
│ │ │ │ │ ├── utils.service.js
│ │ │ │ │ └── utils.service.js.map
│ │ │ ├── index.ts
│ │ │ ├── rollup.config.js
│ │ │ └── src
│ │ │ │ ├── auth
│ │ │ │ ├── permission-checker.service.ts
│ │ │ │ └── token.service.ts
│ │ │ │ ├── features
│ │ │ │ └── feature-checker.service.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── localization
│ │ │ │ └── localization.service.ts
│ │ │ │ ├── log
│ │ │ │ └── log.service.ts
│ │ │ │ ├── message
│ │ │ │ └── message.service.ts
│ │ │ │ ├── multi-tenancy
│ │ │ │ └── studiox-multi-tenancy.service.ts
│ │ │ │ ├── notify
│ │ │ │ └── notify.service.ts
│ │ │ │ ├── session
│ │ │ │ └── studiox-session.service.ts
│ │ │ │ ├── settings
│ │ │ │ └── setting.service.ts
│ │ │ │ ├── studiox-user-configuration.service.ts
│ │ │ │ ├── studiox.module.ngfactory.ts
│ │ │ │ ├── studiox.module.ts
│ │ │ │ ├── studioxHttp.ts
│ │ │ │ ├── tsconfig.json
│ │ │ │ └── utils
│ │ │ │ └── utils.service.ts
│ │ ├── studiox-table
│ │ │ ├── studiox-table-directives.d.ts
│ │ │ ├── studiox-table-directives.js
│ │ │ ├── studiox-table-directives.metadata.json
│ │ │ ├── studiox-table-directives.ts
│ │ │ ├── studiox-table-module.d.ts
│ │ │ ├── studiox-table-module.js
│ │ │ ├── studiox-table-module.metadata.json
│ │ │ ├── studiox-table-module.ts
│ │ │ └── table
│ │ │ │ ├── readme.md
│ │ │ │ ├── studiox-table-filtering.directive.d.ts
│ │ │ │ ├── studiox-table-filtering.directive.js
│ │ │ │ ├── studiox-table-filtering.directive.metadata.json
│ │ │ │ ├── studiox-table-filtering.directive.ts
│ │ │ │ ├── studiox-table-paging.directive.d.ts
│ │ │ │ ├── studiox-table-paging.directive.js
│ │ │ │ ├── studiox-table-paging.directive.metadata.json
│ │ │ │ ├── studiox-table-paging.directive.ts
│ │ │ │ ├── studiox-table-sorting.directive.d.ts
│ │ │ │ ├── studiox-table-sorting.directive.js
│ │ │ │ ├── studiox-table-sorting.directive.metadata.json
│ │ │ │ ├── studiox-table-sorting.directive.ts
│ │ │ │ ├── studiox-table.component.d.ts
│ │ │ │ ├── studiox-table.component.js
│ │ │ │ ├── studiox-table.component.metadata.json
│ │ │ │ ├── studiox-table.component.spec.ts
│ │ │ │ └── studiox-table.component.ts
│ │ └── studiox
│ │ │ ├── scripts
│ │ │ ├── libs
│ │ │ │ ├── requirejs
│ │ │ │ │ └── plugins
│ │ │ │ │ │ └── service.js
│ │ │ │ ├── studiox.blockUI.js
│ │ │ │ ├── studiox.jquery.d.ts
│ │ │ │ ├── studiox.jquery.js
│ │ │ │ ├── studiox.jtable.js
│ │ │ │ ├── studiox.moment.js
│ │ │ │ ├── studiox.signalr.d.ts
│ │ │ │ ├── studiox.signalr.js
│ │ │ │ ├── studiox.spin.js
│ │ │ │ ├── studiox.sweet-alert.js
│ │ │ │ ├── studiox.toastr.js
│ │ │ │ └── utils
│ │ │ │ │ └── ie10fix.js
│ │ │ ├── studiox.d.ts
│ │ │ └── studiox.js
│ │ │ └── styles
│ │ │ ├── studiox.css
│ │ │ ├── studiox.css.map
│ │ │ ├── studiox.less
│ │ │ ├── studiox.min.css
│ │ │ ├── studiox.mixings.css
│ │ │ ├── studiox.mixings.css.map
│ │ │ ├── studiox.mixings.less
│ │ │ ├── studiox.mixings.min.css
│ │ │ └── utils
│ │ │ └── ie10fix.css
│ ├── hmr.ts
│ ├── index.html
│ ├── main.ts
│ ├── polyfills.ts
│ ├── root-routing.module.ts
│ ├── root.component.ts
│ ├── root.module.ts
│ ├── shared
│ │ ├── AppConsts.ts
│ │ ├── AppEnums.ts
│ │ ├── animations
│ │ │ └── routerTransition.ts
│ │ ├── app-component-base.ts
│ │ ├── auth
│ │ │ ├── app-auth.service.ts
│ │ │ └── auth-route-guard.ts
│ │ ├── core.less
│ │ ├── helpers
│ │ │ ├── SignalRHelper.ts
│ │ │ └── UrlHelper.ts
│ │ ├── layout
│ │ │ └── menu-item.ts
│ │ ├── nav
│ │ │ └── app-url.service.ts
│ │ ├── paged-listing-component-base.ts
│ │ ├── service-proxies
│ │ │ ├── service-proxies.ts
│ │ │ └── service-proxy.module.ts
│ │ ├── session
│ │ │ └── app-session.service.ts
│ │ └── shared.module.ts
│ ├── test.ts
│ ├── tsconfig.json
│ └── typings.d.ts
├── tslint.json
└── yarn.lock
├── aspnet-core
├── .gitattributes
├── .gitignore
├── StudioX.Boilerplate.sln
├── build
│ ├── build-mvc.ps1
│ └── build-with-ng.ps1
├── src
│ ├── StudioX.Boilerplate.Application
│ │ ├── AppConsts.cs
│ │ ├── AuditLogs
│ │ │ ├── AuditLogAppService.cs
│ │ │ ├── Dto
│ │ │ │ ├── AuditLogDto.cs
│ │ │ │ ├── AuditLogListDto.cs
│ │ │ │ └── GetAuditLogsInput.cs
│ │ │ └── IAuditLogAppService.cs
│ │ ├── Authorization
│ │ │ ├── Accounts
│ │ │ │ ├── AccountAppService.cs
│ │ │ │ ├── Dto
│ │ │ │ │ ├── IsTenantAvailableInput.cs
│ │ │ │ │ ├── IsTenantAvailableOutput.cs
│ │ │ │ │ ├── RegisterInput.cs
│ │ │ │ │ ├── RegisterOutput.cs
│ │ │ │ │ └── TenantAvailabilityState.cs
│ │ │ │ └── IAccountAppService.cs
│ │ │ └── StudioXLoginResultTypeHelper.cs
│ │ ├── BaseModel
│ │ │ └── InputConstant.cs
│ │ ├── BoilerplateAppServiceBase.cs
│ │ ├── BoilerplateApplicationModule.cs
│ │ ├── Configuration
│ │ │ ├── BoilerplateSettingProvider.cs
│ │ │ ├── ConfigurationAppService.cs
│ │ │ ├── Dto
│ │ │ │ └── ChangeUiThemeInput.cs
│ │ │ ├── IConfigurationAppService.cs
│ │ │ └── Ui
│ │ │ │ ├── UiThemeInfo.cs
│ │ │ │ └── UiThemes.cs
│ │ ├── MultiTenancy
│ │ │ ├── Dto
│ │ │ │ ├── CreateTenantInput.cs
│ │ │ │ ├── TenantDto.cs
│ │ │ │ └── UpdateTenantInput.cs
│ │ │ ├── ITenantAppService.cs
│ │ │ └── TenantAppService.cs
│ │ ├── Net
│ │ │ └── MimeTypes
│ │ │ │ └── MimeTypeNames.cs
│ │ ├── Permissions
│ │ │ ├── Dto
│ │ │ │ └── PermissionDto.cs
│ │ │ ├── IPermissionAppService.cs
│ │ │ └── PermissionAppService.cs
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ ├── Roles
│ │ │ ├── Dto
│ │ │ │ ├── CreateRoleInput.cs
│ │ │ │ ├── GetRolesInput.cs
│ │ │ │ ├── RoleDto.cs
│ │ │ │ ├── RoleMapProfile.cs
│ │ │ │ ├── UpdateRoleInput.cs
│ │ │ │ └── UpdateRolePermissionsInput.cs
│ │ │ ├── IRoleAppService.cs
│ │ │ └── RoleAppService.cs
│ │ ├── Sessions
│ │ │ ├── Dto
│ │ │ │ ├── ApplicationInfoDto.cs
│ │ │ │ ├── GetCurrentLoginInformationsOutput.cs
│ │ │ │ ├── TenantLoginInfoDto.cs
│ │ │ │ └── UserLoginInfoDto.cs
│ │ │ ├── ISessionAppService.cs
│ │ │ └── SessionAppService.cs
│ │ ├── Settings
│ │ │ ├── Dto
│ │ │ │ ├── DefaultPasswordComplexityDto.cs
│ │ │ │ ├── PasswordComplexityDto.cs
│ │ │ │ ├── SettingDto.cs
│ │ │ │ ├── UserLockOutDto.cs
│ │ │ │ └── UserManagementDto.cs
│ │ │ ├── ISettingAppService.cs
│ │ │ └── SettingAppService.cs
│ │ ├── SignalR
│ │ │ └── SignalRFeature.cs
│ │ ├── StudioX.Boilerplate.Application.csproj
│ │ ├── UserProfile
│ │ │ ├── Dto
│ │ │ │ ├── ChangePasswordInput.cs
│ │ │ │ ├── UpdateUserProfileInput.cs
│ │ │ │ └── UserProfileInfoDto.cs
│ │ │ ├── IUserProfileAppService.cs
│ │ │ └── UserProfileAppService.cs
│ │ └── Users
│ │ │ ├── Dto
│ │ │ ├── ChangeUserPasswordInput.cs
│ │ │ ├── CreateUserInput.cs
│ │ │ ├── GetUsersInput.cs
│ │ │ ├── ProhibitPermissionInput.cs
│ │ │ ├── UpdateUserInput.cs
│ │ │ ├── UserDto.cs
│ │ │ ├── UserMapProfile.cs
│ │ │ ├── UserPermissionsDto.cs
│ │ │ └── UserPermissionsInput.cs
│ │ │ ├── IUserAppService.cs
│ │ │ └── UserAppService.cs
│ ├── StudioX.Boilerplate.Core
│ │ ├── AppVersionHelper.cs
│ │ ├── Authorization
│ │ │ ├── BoilerplateAuthorizationProvider.cs
│ │ │ ├── LoginManager.cs
│ │ │ ├── MenuText.cs
│ │ │ ├── Modules
│ │ │ │ ├── GeneralPagesAuthorizationProvider.cs
│ │ │ │ ├── ModuleAuthorizationProvider.cs
│ │ │ │ └── SystemModuleAuthorizationProvider.cs
│ │ │ ├── PermissionChecker.cs
│ │ │ ├── PermissionNames.cs
│ │ │ ├── Roles
│ │ │ │ ├── AppRoleConfig.cs
│ │ │ │ ├── Role.cs
│ │ │ │ ├── RoleManager.cs
│ │ │ │ ├── RoleStore.cs
│ │ │ │ └── StaticRoleNames.cs
│ │ │ └── Users
│ │ │ │ ├── User.cs
│ │ │ │ ├── UserClaimsPrincipalFactory.cs
│ │ │ │ ├── UserManager.cs
│ │ │ │ ├── UserRegistrationManager.cs
│ │ │ │ └── UserStore.cs
│ │ ├── BoilerplateConsts.cs
│ │ ├── BoilerplateCoreModule.cs
│ │ ├── Configuration
│ │ │ ├── AppConfigurations.cs
│ │ │ ├── AppSettingNames.cs
│ │ │ └── AppSettingProvider.cs
│ │ ├── Editions
│ │ │ └── EditionManager.cs
│ │ ├── Features
│ │ │ └── FeatureValueStore.cs
│ │ ├── Identity
│ │ │ ├── IdentityRegistrar.cs
│ │ │ ├── SecurityStampValidator.cs
│ │ │ └── SignInManager.cs
│ │ ├── Localization
│ │ │ ├── BoilerplateLocalizationConfigurer.cs
│ │ │ └── SourceFiles
│ │ │ │ ├── Boilerplate-es.xml
│ │ │ │ ├── Boilerplate-fr.xml
│ │ │ │ ├── Boilerplate-it.xml
│ │ │ │ ├── Boilerplate-ja.xml
│ │ │ │ ├── Boilerplate-lt.xml
│ │ │ │ ├── Boilerplate-nl-NL.xml
│ │ │ │ ├── Boilerplate-pt-BR.xml
│ │ │ │ ├── Boilerplate-tr.xml
│ │ │ │ ├── Boilerplate-vi.xml
│ │ │ │ ├── Boilerplate-zh-CN.xml
│ │ │ │ └── Boilerplate.xml
│ │ ├── MultiTenancy
│ │ │ ├── Tenant.cs
│ │ │ └── TenantManager.cs
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ ├── StudioX.Boilerplate.Core.csproj
│ │ ├── Timing
│ │ │ └── AppTimes.cs
│ │ ├── Validation
│ │ │ └── ValidationHelper.cs
│ │ └── Web
│ │ │ └── WebContentFolderHelper.cs
│ ├── StudioX.Boilerplate.EntityFrameworkCore
│ │ ├── EntityFrameworkCore
│ │ │ ├── BoilerplateDbContext.cs
│ │ │ ├── BoilerplateDbContextConfigurer.cs
│ │ │ ├── BoilerplateDbContextFactory.cs
│ │ │ ├── BoilerplateEntityFrameworkModule.cs
│ │ │ ├── Repositories
│ │ │ │ └── StudioXZeroTemplateRepositoryBase.cs
│ │ │ ├── Seed
│ │ │ │ ├── Host
│ │ │ │ │ ├── DefaultEditionCreator.cs
│ │ │ │ │ ├── DefaultLanguagesCreator.cs
│ │ │ │ │ ├── DefaultSettingsCreator.cs
│ │ │ │ │ ├── HostRoleAndUserCreator.cs
│ │ │ │ │ └── InitialHostDbBuilder.cs
│ │ │ │ ├── SeedHelper.cs
│ │ │ │ └── Tenants
│ │ │ │ │ ├── DefaultTenantBuilder.cs
│ │ │ │ │ └── TenantRoleAndUserBuilder.cs
│ │ │ └── StudioXZeroDbMigrator.cs
│ │ ├── Migrations
│ │ │ ├── 20170611171650_InitialCreate.Designer.cs
│ │ │ ├── 20170611171650_InitialCreate.cs
│ │ │ ├── 20170629200054_UpdateMaxLengthUsersTable.Designer.cs
│ │ │ ├── 20170629200054_UpdateMaxLengthUsersTable.cs
│ │ │ ├── 20170705193650_AddSoftDeleteUserOrganizationUnit.Designer.cs
│ │ │ ├── 20170705193650_AddSoftDeleteUserOrganizationUnit.cs
│ │ │ ├── 20170705211834_AddDescriptionAndIsActiveToRole.Designer.cs
│ │ │ ├── 20170705211834_AddDescriptionAndIsActiveToRole.cs
│ │ │ └── BoilerplateDbContextModelSnapshot.cs
│ │ └── StudioX.Boilerplate.EntityFrameworkCore.csproj
│ ├── StudioX.Boilerplate.Migrator
│ │ ├── BoilerplateMigratorModule.cs
│ │ ├── DependencyInjection
│ │ │ └── ServiceCollectionRegistrar.cs
│ │ ├── Log.cs
│ │ ├── MultiTenantMigrateExecuter.cs
│ │ ├── Program.cs
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ ├── StudioX.Boilerplate.Migrator.csproj
│ │ ├── appsettings.json
│ │ └── log4net.config
│ ├── StudioX.Boilerplate.Web.Core
│ │ ├── Authentication
│ │ │ ├── External
│ │ │ │ ├── ExternalAuthConfiguration.cs
│ │ │ │ ├── ExternalAuthManager.cs
│ │ │ │ ├── ExternalAuthProviderApiBase.cs
│ │ │ │ ├── ExternalAuthUserInfo.cs
│ │ │ │ ├── ExternalLoginProviderInfo.cs
│ │ │ │ ├── Facebook
│ │ │ │ │ └── FacebookAuthProviderApi.cs
│ │ │ │ ├── Google
│ │ │ │ │ └── GoogleAuthProviderApi.cs
│ │ │ │ ├── IExternalAuthConfiguration.cs
│ │ │ │ ├── IExternalAuthManager.cs
│ │ │ │ └── IExternalAuthProviderApi.cs
│ │ │ └── JwtBearer
│ │ │ │ └── TokenAuthConfiguration.cs
│ │ ├── BoilerplateWebCoreModule.cs
│ │ ├── Configuration
│ │ │ └── HostingEnvironmentExtensions.cs
│ │ ├── Controllers
│ │ │ ├── BoilerplateControllerBase.cs
│ │ │ └── TokenAuthController.cs
│ │ ├── Identity
│ │ │ └── ExternalLoginInfoHelper.cs
│ │ ├── Models
│ │ │ └── TokenAuth
│ │ │ │ ├── AuthenticateModel.cs
│ │ │ │ ├── AuthenticateResultModel.cs
│ │ │ │ ├── ExternalAuthenticateModel.cs
│ │ │ │ ├── ExternalAuthenticateResultModel.cs
│ │ │ │ └── ExternalLoginProviderInfoModel.cs
│ │ ├── Owin
│ │ │ └── BuilderExtensions.cs
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ └── StudioX.Boilerplate.Web.Core.csproj
│ ├── StudioX.Boilerplate.Web.Host
│ │ ├── Controllers
│ │ │ ├── AntiForgeryController.cs
│ │ │ └── HomeController.cs
│ │ ├── Dockerfile
│ │ ├── Properties
│ │ │ └── launchSettings.json
│ │ ├── Startup
│ │ │ ├── AuthConfigurer.cs
│ │ │ ├── BoilerplateWebHostModule.cs
│ │ │ ├── Program.cs
│ │ │ └── Startup.cs
│ │ ├── StudioX.Boilerplate.Web.Host.csproj
│ │ ├── app.config
│ │ ├── appsettings.Staging.json
│ │ ├── appsettings.json
│ │ ├── log4net.config
│ │ ├── web.config
│ │ └── wwwroot
│ │ │ └── swagger
│ │ │ └── ui
│ │ │ ├── ReadMe.txt
│ │ │ ├── index.html
│ │ │ ├── on-complete.js
│ │ │ └── studiox.js
│ └── StudioX.Boilerplate.Web.Mvc
│ │ ├── .bowerrc
│ │ ├── Controllers
│ │ ├── AboutController.cs
│ │ ├── AccountController.cs
│ │ ├── ErrorController.cs
│ │ ├── HomeController.cs
│ │ ├── RolesController.cs
│ │ ├── TenantsController.cs
│ │ └── UsersController.cs
│ │ ├── Dockerfile
│ │ ├── Models
│ │ ├── Account
│ │ │ ├── LoginFormViewModel.cs
│ │ │ ├── LoginViewModel.cs
│ │ │ ├── RegisterResultViewModel.cs
│ │ │ └── RegisterViewModel.cs
│ │ ├── Common
│ │ │ └── Modals
│ │ │ │ └── ModalHeaderViewModel.cs
│ │ ├── Roles
│ │ │ ├── EditRoleModalViewModel.cs
│ │ │ └── RoleListViewModel.cs
│ │ └── Users
│ │ │ ├── EditUserModalViewModel.cs
│ │ │ └── UserListViewModel.cs
│ │ ├── Properties
│ │ └── launchSettings.json
│ │ ├── Resources
│ │ ├── IWebResourceManager.cs
│ │ └── WebResourceManager.cs
│ │ ├── Startup
│ │ ├── AuthConfigurer.cs
│ │ ├── BoilerplateNavigationProvider.cs
│ │ ├── BoilerplateWebMvcModule.cs
│ │ ├── PageNames.cs
│ │ ├── Program.cs
│ │ └── Startup.cs
│ │ ├── StudioX.Boilerplate.Web.Mvc.csproj
│ │ ├── Views
│ │ ├── About
│ │ │ └── Index.cshtml
│ │ ├── Account
│ │ │ ├── Login.cshtml
│ │ │ ├── Register.cshtml
│ │ │ ├── RegisterResult.cshtml
│ │ │ ├── _Layout.cshtml
│ │ │ └── _ViewStart.cshtml
│ │ ├── BoilerplateRazorPage.cs
│ │ ├── BoilerplateViewComponent.cs
│ │ ├── Home
│ │ │ └── Index.cshtml
│ │ ├── Roles
│ │ │ ├── Index.cshtml
│ │ │ ├── _CreateRoleModal.cshtml
│ │ │ └── _EditRoleModal.cshtml
│ │ ├── Shared
│ │ │ ├── Components
│ │ │ │ ├── AccountLanguages
│ │ │ │ │ ├── AccountLanguagesViewComponent.cs
│ │ │ │ │ ├── Default.cshtml
│ │ │ │ │ └── LanguageSelectionViewModel.cs
│ │ │ │ ├── RightSideBar
│ │ │ │ │ ├── Default.cshtml
│ │ │ │ │ ├── RightSideBarViewComponent.cs
│ │ │ │ │ └── RightSideBarViewModel.cs
│ │ │ │ ├── SideBarNav
│ │ │ │ │ ├── Default.cshtml
│ │ │ │ │ ├── SideBarNavViewComponent.cs
│ │ │ │ │ └── SideBarNavViewModel.cs
│ │ │ │ ├── SideBarUserArea
│ │ │ │ │ ├── Default.cshtml
│ │ │ │ │ ├── SideBarUserAreaViewComponent.cs
│ │ │ │ │ └── SideBarUserAreaViewModel.cs
│ │ │ │ ├── TenantChange
│ │ │ │ │ ├── ChangeModalViewModel.cs
│ │ │ │ │ ├── Default.cshtml
│ │ │ │ │ ├── TenantChangeViewComponent.cs
│ │ │ │ │ ├── TenantChangeViewModel.cs
│ │ │ │ │ └── _ChangeModal.cshtml
│ │ │ │ └── TopBarLanguageSwitch
│ │ │ │ │ ├── Default.cshtml
│ │ │ │ │ ├── TopBarLanguageSwitchViewComponent.cs
│ │ │ │ │ └── TopBarLanguageSwitchViewModel.cs
│ │ │ ├── Error.cshtml
│ │ │ ├── Modals
│ │ │ │ ├── _ModalFooterWithSaveAndCancel.cshtml
│ │ │ │ └── _ModalHeader.cshtml
│ │ │ └── _Layout.cshtml
│ │ ├── Tenants
│ │ │ ├── Index.cshtml
│ │ │ ├── _CreateTenantModal.cshtml
│ │ │ └── _EditTenantModal.cshtml
│ │ ├── UrlChecker.cs
│ │ ├── Users
│ │ │ ├── Index.cshtml
│ │ │ ├── _CreateUserModal.cshtml
│ │ │ └── _EditUserModal.cshtml
│ │ ├── _ViewImports.cshtml
│ │ └── _ViewStart.cshtml
│ │ ├── app.config
│ │ ├── appsettings.Staging.json
│ │ ├── appsettings.json
│ │ ├── bower.json
│ │ ├── bundleconfig.json
│ │ ├── compilerconfig.json
│ │ ├── compilerconfig.json.defaults
│ │ ├── log4net.config
│ │ ├── web.config
│ │ └── wwwroot
│ │ ├── LICENSE.md
│ │ ├── README.md
│ │ ├── StudioX
│ │ └── Framework
│ │ │ ├── scripts
│ │ │ ├── libs
│ │ │ │ ├── angularjs
│ │ │ │ │ └── studiox.ng.js
│ │ │ │ ├── requirejs
│ │ │ │ │ └── plugins
│ │ │ │ │ │ └── service.js
│ │ │ │ ├── studiox.blockUI.js
│ │ │ │ ├── studiox.jquery.d.ts
│ │ │ │ ├── studiox.jquery.js
│ │ │ │ ├── studiox.jtable.js
│ │ │ │ ├── studiox.moment.js
│ │ │ │ ├── studiox.signalr.d.ts
│ │ │ │ ├── studiox.signalr.js
│ │ │ │ ├── studiox.spin.js
│ │ │ │ ├── studiox.sweet-alert.js
│ │ │ │ ├── studiox.toastr.js
│ │ │ │ └── utils
│ │ │ │ │ └── ie10fix.js
│ │ │ ├── studiox.d.ts
│ │ │ └── studiox.js
│ │ │ └── styles
│ │ │ ├── studiox.css
│ │ │ ├── studiox.css.map
│ │ │ ├── studiox.less
│ │ │ ├── studiox.min.css
│ │ │ ├── studiox.mixings.css
│ │ │ ├── studiox.mixings.css.map
│ │ │ ├── studiox.mixings.less
│ │ │ ├── studiox.mixings.min.css
│ │ │ └── utils
│ │ │ └── ie10fix.css
│ │ ├── bower.json
│ │ ├── compilerconfig.json
│ │ ├── compilerconfig.json.defaults
│ │ ├── css
│ │ ├── materialize.css
│ │ ├── style.css
│ │ ├── style.min.css
│ │ └── themes
│ │ │ ├── all-themes.css
│ │ │ ├── all-themes.min.css
│ │ │ ├── theme-amber.css
│ │ │ ├── theme-amber.min.css
│ │ │ ├── theme-black.css
│ │ │ ├── theme-black.min.css
│ │ │ ├── theme-blue-grey.css
│ │ │ ├── theme-blue-grey.min.css
│ │ │ ├── theme-blue.css
│ │ │ ├── theme-blue.min.css
│ │ │ ├── theme-brown.css
│ │ │ ├── theme-brown.min.css
│ │ │ ├── theme-cyan.css
│ │ │ ├── theme-cyan.min.css
│ │ │ ├── theme-deep-orange.css
│ │ │ ├── theme-deep-orange.min.css
│ │ │ ├── theme-deep-purple.css
│ │ │ ├── theme-deep-purple.min.css
│ │ │ ├── theme-green.css
│ │ │ ├── theme-green.min.css
│ │ │ ├── theme-grey.css
│ │ │ ├── theme-grey.min.css
│ │ │ ├── theme-indigo.css
│ │ │ ├── theme-indigo.min.css
│ │ │ ├── theme-light-blue.css
│ │ │ ├── theme-light-blue.min.css
│ │ │ ├── theme-lime.css
│ │ │ ├── theme-lime.min.css
│ │ │ ├── theme-orange.css
│ │ │ ├── theme-orange.min.css
│ │ │ ├── theme-pink.css
│ │ │ ├── theme-pink.min.css
│ │ │ ├── theme-purple.css
│ │ │ ├── theme-purple.min.css
│ │ │ ├── theme-red.css
│ │ │ ├── theme-red.min.css
│ │ │ ├── theme-teal.css
│ │ │ ├── theme-teal.min.css
│ │ │ ├── theme-yellow.css
│ │ │ └── theme-yellow.min.css
│ │ ├── favicon.ico
│ │ ├── fonts
│ │ ├── material-icons
│ │ │ ├── materialicons.css
│ │ │ └── materialicons.woff2
│ │ └── roboto
│ │ │ ├── -2n2p-_Y08sg57CNWQfKNvesZW2xOQ-xsNqO47m55DA.woff2
│ │ │ ├── 77FXFjRbGzN4aCrSFhlh3hJtnKITppOI_IvcXXDNrsc.woff2
│ │ │ ├── 97uahxiqZRoncBaCEI3aWxJtnKITppOI_IvcXXDNrsc.woff2
│ │ │ ├── CWB0XYA8bzo0kSThX0UTuA.woff2
│ │ │ ├── Fcx7Wwv8OzT71A3E1XOAjvesZW2xOQ-xsNqO47m55DA.woff2
│ │ │ ├── NdF9MtnOpLzo-noMoG0miPesZW2xOQ-xsNqO47m55DA.woff2
│ │ │ ├── PwZc-YbIL414wB9rB1IAPRJtnKITppOI_IvcXXDNrsc.woff2
│ │ │ ├── UX6i4JxQDm3fVTc1CPuwqhJtnKITppOI_IvcXXDNrsc.woff2
│ │ │ ├── d-6IYplOFocCacKzxwXSOFtXRa8TVwTICgirnJhmVJw.woff2
│ │ │ ├── ek4gzZ-GeXAPcSbHtCeQI_esZW2xOQ-xsNqO47m55DA.woff2
│ │ │ ├── isZ-wbCXNKAbnjo6_TwHThJtnKITppOI_IvcXXDNrsc.woff2
│ │ │ ├── jSN2CGVDbcVyCnfJfjSdfBJtnKITppOI_IvcXXDNrsc.woff2
│ │ │ ├── mErvLBYg_cXG3rLvUsKT_fesZW2xOQ-xsNqO47m55DA.woff2
│ │ │ ├── roboto.css
│ │ │ └── u0TOpm082MNkS5K0Q4rhqvesZW2xOQ-xsNqO47m55DA.woff2
│ │ ├── images
│ │ ├── user-img-background.jpg
│ │ └── user.png
│ │ ├── index.html
│ │ ├── js
│ │ ├── admin.js
│ │ ├── helpers.js
│ │ ├── main.js
│ │ └── script.js
│ │ ├── package.json
│ │ ├── scss
│ │ ├── _alerts.scss
│ │ ├── _badgelistgroupitem.scss
│ │ ├── _bootstrapnotify.scss
│ │ ├── _bootstrapselect.scss
│ │ ├── _breadcrumbs.scss
│ │ ├── _buttons.scss
│ │ ├── _card.scss
│ │ ├── _charts.scss
│ │ ├── _checkboxradio.scss
│ │ ├── _collapse.scss
│ │ ├── _colorpicker.scss
│ │ ├── _customanimate.scss
│ │ ├── _dashboard.scss
│ │ ├── _datetimepicker.scss
│ │ ├── _demo.scss
│ │ ├── _dialogs.scss
│ │ ├── _dropdownmenu.scss
│ │ ├── _dropzone.scss
│ │ ├── _formwizard.scss
│ │ ├── _general.scss
│ │ ├── _helpers.scss
│ │ ├── _infobox.scss
│ │ ├── _inputformgroup.scss
│ │ ├── _ionrangeslider.scss
│ │ ├── _jquerydatatable.scss
│ │ ├── _jquerynestable.scss
│ │ ├── _labels.scss
│ │ ├── _leftsidebaroverlay.scss
│ │ ├── _lightgallery.scss
│ │ ├── _maps.scss
│ │ ├── _materialicons.scss
│ │ ├── _media.scss
│ │ ├── _mediaobject.scss
│ │ ├── _mixins.scss
│ │ ├── _modals.scss
│ │ ├── _multiselect.scss
│ │ ├── _navbar.scss
│ │ ├── _navtabs.scss
│ │ ├── _noUISlider.scss
│ │ ├── _pageloader.scss
│ │ ├── _pagination.scss
│ │ ├── _panels.scss
│ │ ├── _preloaders.scss
│ │ ├── _progressbars.scss
│ │ ├── _searchbar.scss
│ │ ├── _switch.scss
│ │ ├── _tables.scss
│ │ ├── _tagsinput.scss
│ │ ├── _thumbnails.scss
│ │ ├── _tooltippopovers.scss
│ │ ├── _variables.scss
│ │ ├── _waveseffect.scss
│ │ ├── browser-support
│ │ │ ├── _ie10.scss
│ │ │ └── _ie11.scss
│ │ ├── pages
│ │ │ ├── _404.scss
│ │ │ ├── _500.scss
│ │ │ ├── _forgotpasswordpage.scss
│ │ │ ├── _loginpage.scss
│ │ │ └── _signuppage.scss
│ │ ├── style.scss
│ │ └── themes
│ │ │ ├── _all-themes.scss
│ │ │ ├── _theme-color-variables.scss
│ │ │ ├── theme-amber.scss
│ │ │ ├── theme-black.scss
│ │ │ ├── theme-blue-grey.scss
│ │ │ ├── theme-blue.scss
│ │ │ ├── theme-brown.scss
│ │ │ ├── theme-cyan.scss
│ │ │ ├── theme-deep-orange.scss
│ │ │ ├── theme-deep-purple.scss
│ │ │ ├── theme-green.scss
│ │ │ ├── theme-grey.scss
│ │ │ ├── theme-indigo.scss
│ │ │ ├── theme-light-blue.scss
│ │ │ ├── theme-light-green.scss
│ │ │ ├── theme-lime.scss
│ │ │ ├── theme-orange.scss
│ │ │ ├── theme-pink.scss
│ │ │ ├── theme-purple.scss
│ │ │ ├── theme-red.scss
│ │ │ ├── theme-teal.scss
│ │ │ └── theme-yellow.scss
│ │ └── view-resources
│ │ └── Views
│ │ ├── Account
│ │ ├── Login.css
│ │ ├── Login.js
│ │ ├── Login.less
│ │ ├── Login.min.css
│ │ ├── Login.min.js
│ │ ├── Register.js
│ │ ├── Register.min.js
│ │ ├── _Layout.css
│ │ ├── _Layout.less
│ │ └── _Layout.min.css
│ │ ├── Home
│ │ └── Index.js
│ │ ├── Roles
│ │ ├── Index.js
│ │ ├── Index.min.js
│ │ ├── _EditRoleModal.js
│ │ └── _EditRoleModal.min.js
│ │ ├── Shared
│ │ ├── Components
│ │ │ └── TenantChange
│ │ │ │ ├── Default.js
│ │ │ │ ├── Default.min.js
│ │ │ │ ├── _ChangeModal.js
│ │ │ │ └── _ChangeModal.min.js
│ │ ├── _Layout.css
│ │ ├── _Layout.js
│ │ ├── _Layout.less
│ │ └── _Layout.min.css
│ │ ├── Tenants
│ │ ├── Index.js
│ │ ├── Index.min.js
│ │ └── _EditTenantModal.js
│ │ ├── Users
│ │ ├── Index.js
│ │ ├── Index.min.js
│ │ ├── _EditUserModal.js
│ │ └── _EditUserModal.min.js
│ │ └── _Bundles
│ │ ├── account-layout.min.css
│ │ ├── account-layout.min.js
│ │ ├── home-index.min.js
│ │ ├── shared-layout.min.css
│ │ └── shared-layout.min.js
└── test
│ └── StudioX.Boilerplate.Tests
│ ├── BoilerplateAsyncServiceTestBase.cs
│ ├── BoilerplateDtoTestBase.cs
│ ├── BoilerplateTestBase.cs
│ ├── BoilerplateTestModule.cs
│ ├── DependencyInjection
│ └── ServiceCollectionRegistrar.cs
│ ├── MultiTenancy
│ └── TenantAppServiceTests.cs
│ ├── MultiTenantFactAttribute.cs
│ ├── Properties
│ └── AssemblyInfo.cs
│ ├── Roles
│ ├── CreateRoleInputTests.cs
│ ├── RoleAppServiceTests.cs
│ └── UpdateRoleInputTests.cs
│ ├── Sessions
│ └── SessionAppServiceTests.cs
│ ├── StudioX.Boilerplate.Tests.csproj
│ └── Users
│ ├── CreateUserInputTests.cs
│ ├── UpdateUserInputTests.cs
│ └── UserAppServiceTests.cs
├── framework
├── .gitattributes
├── .gitignore
├── README.md
├── StudioX.sln
├── appveyor.yml
├── common.props
├── src
│ ├── StudioX.AspNetCore.TestBase
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ ├── StudioX.AspNetCore.TestBase.csproj
│ │ ├── StudioXAspNetCoreIntegratedTestBase.cs
│ │ ├── StudioXAspNetCoreTestBaseModule.cs
│ │ ├── StudioXServiceOptionsTestExtensions.cs
│ │ └── TestOptions.cs
│ ├── StudioX.AspNetCore
│ │ ├── Application
│ │ │ └── Services
│ │ │ │ └── Dto
│ │ │ │ └── ComboboxItemDtoExtensions.cs
│ │ ├── AspNetCore
│ │ │ ├── Configuration
│ │ │ │ ├── ControllerAssemblySettingList.cs
│ │ │ │ ├── IStudioXAspNetCoreConfiguration.cs
│ │ │ │ ├── IStudioXControllerAssemblySettingBuilder.cs
│ │ │ │ ├── StudioXAspNetCoreConfiguration.cs
│ │ │ │ ├── StudioXAspNetCoreConfigurationExtensions.cs
│ │ │ │ ├── StudioXControllerAssemblySetting.cs
│ │ │ │ └── StudioXControllerAssemblySettingBuilder.cs
│ │ │ ├── EmbeddedResources
│ │ │ │ ├── EmbeddedResourceFileProvider.cs
│ │ │ │ ├── EmbeddedResourceItemFileInfo.cs
│ │ │ │ └── EmbeddedResourceViewFileProvider.cs
│ │ │ ├── Localization
│ │ │ │ ├── StudioXDefaultRequestCultureProvider.cs
│ │ │ │ ├── StudioXLocalizationHeaderRequestCultureProvider.cs
│ │ │ │ └── StudioXUserRequestCultureProvider.cs
│ │ │ ├── MultiTenancy
│ │ │ │ ├── DomainTenantResolveContributor.cs
│ │ │ │ ├── HttpContextTenantResolverCache.cs
│ │ │ │ ├── HttpCookieTenantResolveContributor.cs
│ │ │ │ └── HttpHeaderTenantResolveContributor.cs
│ │ │ ├── Mvc
│ │ │ │ ├── Antiforgery
│ │ │ │ │ ├── StudioXAutoValidateAntiforgeryTokenAuthorizationFilter.cs
│ │ │ │ │ └── StudioXValidateAntiforgeryTokenAuthorizationFilter.cs
│ │ │ │ ├── Auditing
│ │ │ │ │ ├── HttpContextClientInfoProvider.cs
│ │ │ │ │ └── StudioXAuditActionFilter.cs
│ │ │ │ ├── Authorization
│ │ │ │ │ ├── StudioXAuthorizationFilter.cs
│ │ │ │ │ └── StudioXMvcAuthorizeAttribute.cs
│ │ │ │ ├── Controllers
│ │ │ │ │ ├── StudioXAppViewController.cs
│ │ │ │ │ ├── StudioXController.cs
│ │ │ │ │ ├── StudioXLocalizationController.cs
│ │ │ │ │ ├── StudioXScriptsController.cs
│ │ │ │ │ └── StudioXUserConfigurationController.cs
│ │ │ │ ├── Conventions
│ │ │ │ │ └── StudioXAppServiceConvention.cs
│ │ │ │ ├── ExceptionHandling
│ │ │ │ │ └── StudioXExceptionFilter.cs
│ │ │ │ ├── Extensions
│ │ │ │ │ ├── ActionDescriptorExtensions.cs
│ │ │ │ │ └── AjaxRequestExtensions.cs
│ │ │ │ ├── ModelBinding
│ │ │ │ │ ├── StudioXDateTimeModelBinder.cs
│ │ │ │ │ └── StudioXDateTimeModelBinderProvider.cs
│ │ │ │ ├── Models
│ │ │ │ │ └── ModelStateExtensions.cs
│ │ │ │ ├── Providers
│ │ │ │ │ └── StudioXAppServiceControllerFeatureProvider.cs
│ │ │ │ ├── Proxying
│ │ │ │ │ ├── ApiProxyGenerationModel.cs
│ │ │ │ │ ├── AspNetCoreApiDescriptionModelProvider.cs
│ │ │ │ │ ├── StudioXServiceProxiesController.cs
│ │ │ │ │ └── Utils
│ │ │ │ │ │ └── ArrayMatcher.cs
│ │ │ │ ├── Results
│ │ │ │ │ ├── ActionResultHelper.cs
│ │ │ │ │ ├── Caching
│ │ │ │ │ │ ├── AllowClientCacheAttribute.cs
│ │ │ │ │ │ ├── ClientCacheAttributeBase.cs
│ │ │ │ │ │ ├── ClientCacheScope.cs
│ │ │ │ │ │ └── IClientCacheAttribute.cs
│ │ │ │ │ ├── StudioXResultFilter.cs
│ │ │ │ │ └── Wrapping
│ │ │ │ │ │ ├── IStudioXActionResultWrapper.cs
│ │ │ │ │ │ ├── IStudioXActionResultWrapperFactory.cs
│ │ │ │ │ │ ├── NullStudioXActionResultWrapper.cs
│ │ │ │ │ │ ├── StudioXActionResultWrapperFactory.cs
│ │ │ │ │ │ ├── StudioXEmptyActionResultWrapper.cs
│ │ │ │ │ │ ├── StudioXJsonActionResultWrapper.cs
│ │ │ │ │ │ └── StudioXObjectActionResultWrapper.cs
│ │ │ │ ├── StudioXMvcOptionsExtensions.cs
│ │ │ │ ├── Uow
│ │ │ │ │ └── StudioXUowActionFilter.cs
│ │ │ │ ├── Validation
│ │ │ │ │ ├── MvcActionInvocationValidator.cs
│ │ │ │ │ └── StudioXValidationActionFilter.cs
│ │ │ │ ├── ViewComponents
│ │ │ │ │ └── StudioXViewComponent.cs
│ │ │ │ └── Views
│ │ │ │ │ └── StudioXRazorPage.cs
│ │ │ ├── Runtime
│ │ │ │ └── Session
│ │ │ │ │ └── AspNetCorePrincipalAccessor.cs
│ │ │ ├── Security
│ │ │ │ └── AntiForgery
│ │ │ │ │ └── StudioXAspNetCoreAntiForgeryManager.cs
│ │ │ ├── StudioXApplicationBuilderExtensions.cs
│ │ │ ├── StudioXApplicationBuilderOptions.cs
│ │ │ ├── StudioXAspNetCoreConventionalRegistrar.cs
│ │ │ ├── StudioXAspNetCoreModule.cs
│ │ │ ├── StudioXServiceCollectionExtensions.cs
│ │ │ ├── StudioXServiceOptions.cs
│ │ │ └── StudioXUrlHelper.cs
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ ├── StudioX.AspNetCore.csproj
│ │ └── Web
│ │ │ └── Security
│ │ │ └── AntiForgery
│ │ │ └── StudioXAntiForgeryManagerAspNetCoreExtensions.cs
│ ├── StudioX.AutoMapper
│ │ ├── AutoMapper
│ │ │ ├── AutoMapAttribute.cs
│ │ │ ├── AutoMapAttributeBase.cs
│ │ │ ├── AutoMapExtensions.cs
│ │ │ ├── AutoMapFromAttribute.cs
│ │ │ ├── AutoMapToAttribute.cs
│ │ │ ├── AutoMapperConfigurationExtensions.cs
│ │ │ ├── AutoMapperObjectMapper.cs
│ │ │ ├── IStudioXAutoMapperConfiguration.cs
│ │ │ ├── StudioXAutoMapperConfiguration.cs
│ │ │ ├── StudioXAutoMapperConfigurationExtensions.cs
│ │ │ └── StudioXAutoMapperModule.cs
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ └── StudioX.AutoMapper.csproj
│ ├── StudioX.Castle.Log4Net
│ │ ├── Castle
│ │ │ └── Logging
│ │ │ │ └── Log4Net
│ │ │ │ ├── Log4NetLogger.cs
│ │ │ │ ├── Log4NetLoggerFactory.cs
│ │ │ │ ├── LoggingFacilityExtensions.cs
│ │ │ │ └── StudioXCastleLog4NetModule.cs
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ └── StudioX.Castle.Log4Net.csproj
│ ├── StudioX.Dapper
│ │ ├── Dapper
│ │ │ ├── DapperAutoRepositoryTypeAttribute.cs
│ │ │ ├── EfBasedAutoRepositoryTypes.cs
│ │ │ ├── Expressions
│ │ │ │ ├── DapperEvaluator.cs
│ │ │ │ ├── DapperExpressionExtensions.cs
│ │ │ │ └── DapperExpressionVisitor.cs
│ │ │ ├── Extensions
│ │ │ │ └── SortingExtensions.cs
│ │ │ ├── Filters
│ │ │ │ ├── Action
│ │ │ │ │ ├── CreationAuditDapperActionFilter.cs
│ │ │ │ │ ├── DapperActionFilterBase.cs
│ │ │ │ │ ├── DapperActionFilterExecuter.cs
│ │ │ │ │ ├── DeletionAuditDapperActionFilter.cs
│ │ │ │ │ ├── IDapperActionFilter.cs
│ │ │ │ │ ├── IDapperActionFilterExecuter.cs
│ │ │ │ │ ├── ModificationAuditDapperActionFilter.cs
│ │ │ │ │ └── NullDapperActionFilterExecuter.cs
│ │ │ │ └── Query
│ │ │ │ │ ├── DapperQueryFilterExecuter.cs
│ │ │ │ │ ├── IDapperQueryFilter.cs
│ │ │ │ │ ├── IDapperQueryFilterExecuter.cs
│ │ │ │ │ ├── MayHaveTenantDapperQueryFilter.cs
│ │ │ │ │ ├── MustHaveTenantDapperQueryFilter.cs
│ │ │ │ │ ├── NullDapperQueryFilterExecuter.cs
│ │ │ │ │ └── SoftDeleteDapperQueryFilter.cs
│ │ │ ├── NhBasedAutoRepositoryTypes.cs
│ │ │ ├── Repositories
│ │ │ │ ├── DapperEfRepositoryBaseOfTDbContextAndTEntity.cs
│ │ │ │ ├── DapperEfRepositoryBaseOfTDbContextAndTEntityAndTPrimaryKey.cs
│ │ │ │ ├── DapperRepositoryBaseOfTEntity.cs
│ │ │ │ ├── DapperRepositoryBaseOfTEntityAndTPrimaryKey.cs
│ │ │ │ ├── IDapperRepositoryOfTEntity.cs
│ │ │ │ ├── IDapperRepositoryOfTEntityAndTPrimaryKey.cs
│ │ │ │ └── StudioXDapperRepositoryBase.cs
│ │ │ ├── StudioXDapperModule.cs
│ │ │ └── Utils
│ │ │ │ ├── ExpressionUtils.cs
│ │ │ │ └── TypeExtensions.cs
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ └── StudioX.Dapper.csproj
│ ├── StudioX.EntityFramework.Common
│ │ ├── DbContextTypeMatcher.cs
│ │ ├── DefaultDbContextAttribute.cs
│ │ ├── IDbContextEntityFinder.cs
│ │ ├── IDbContextTypeMatcher.cs
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ ├── Repositories
│ │ │ ├── EfGenericRepositoryRegistrar.cs
│ │ │ └── IEfGenericRepositoryRegistrar.cs
│ │ ├── SecondaryOrmRegistrarBase.cs
│ │ ├── StudioX.EntityFramework.Common.csproj
│ │ └── StudioXEntityFrameworkCommonModule.cs
│ ├── StudioX.EntityFramework.GraphDiff
│ │ ├── GraphDiff
│ │ │ ├── Configuration
│ │ │ │ ├── IStudioXEntityFrameworkGraphDiffModuleConfiguration.cs
│ │ │ │ ├── StudioXEntityFrameworkGraphDiffConfigurationExtensions.cs
│ │ │ │ └── StudioXEntityFrameworkGraphDiffModuleConfiguration.cs
│ │ │ ├── Extensions
│ │ │ │ └── GraphDiffExtensions.cs
│ │ │ ├── Mapping
│ │ │ │ ├── EntityMappingManager.cs
│ │ │ │ ├── EntityMappingOfTEntity.cs
│ │ │ │ ├── IEntityMappingManager.cs
│ │ │ │ └── MappingExpressionBuilder.cs
│ │ │ └── StudioXEntityFrameworkGraphDiffModule.cs
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ └── StudioX.EntityFramework.GraphDiff.csproj
│ ├── StudioX.EntityFramework
│ │ ├── EntityFramework
│ │ │ ├── DbContextHelper.cs
│ │ │ ├── DbContextTypeMatcher.cs
│ │ │ ├── DefaultDbContextResolver.cs
│ │ │ ├── EfActiveTransactionProvider.cs
│ │ │ ├── EfBasedSecondaryOrmRegistrar.cs
│ │ │ ├── EfDbContextEntityFinder.cs
│ │ │ ├── Extensions
│ │ │ │ ├── EntityFrameworkModelBuilderExtensions.cs
│ │ │ │ └── QueryableExtensions.cs
│ │ │ ├── IDbContextProvider.cs
│ │ │ ├── IDbContextResolver.cs
│ │ │ ├── Interceptors
│ │ │ │ └── WithNolockInterceptor.cs
│ │ │ ├── Linq
│ │ │ │ └── EfAsyncQueryableExecuter.cs
│ │ │ ├── Repositories
│ │ │ │ ├── EfAutoRepositoryTypes.cs
│ │ │ │ ├── EfRepositoryBaseOfTEntity.cs
│ │ │ │ ├── EfRepositoryBaseOfTEntityAndTPrimaryKey.cs
│ │ │ │ ├── EfRepositoryExtensions.cs
│ │ │ │ └── IRepositoryWithDbContext.cs
│ │ │ ├── SimpleDbContextProvider.cs
│ │ │ ├── StudioXDbContext.cs
│ │ │ ├── StudioXEntityFrameworkModule.cs
│ │ │ ├── Uow
│ │ │ │ ├── ActiveDbContextInfo.cs
│ │ │ │ ├── ActiveTransactionInfo.cs
│ │ │ │ ├── DbContextEfTransactionStrategy.cs
│ │ │ │ ├── EfDynamicFiltersUnitOfWorkFilterExecuter.cs
│ │ │ │ ├── EfUnitOfWork.cs
│ │ │ │ ├── IEfTransactionStrategy.cs
│ │ │ │ ├── IEfUnitOfWorkFilterExecuter.cs
│ │ │ │ ├── TransactionScopeEfTransactionStrategy.cs
│ │ │ │ ├── UnitOfWorkDbContextProvider.cs
│ │ │ │ └── UnitOfWorkExtensions.cs
│ │ │ └── Utils
│ │ │ │ ├── DateTimePropertyInfoHelper.cs
│ │ │ │ └── EntityDateTimePropertiesInfo.cs
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ └── StudioX.EntityFramework.csproj
│ ├── StudioX.EntityFrameworkCore
│ │ ├── EntityFrameworkCore
│ │ │ ├── Configuration
│ │ │ │ ├── IStudioXDbContextConfigurer.cs
│ │ │ │ ├── IStudioXEfCoreConfiguration.cs
│ │ │ │ ├── StudioXAspNetCoreConfigurationExtensions.cs
│ │ │ │ ├── StudioXDbContextConfiguration.cs
│ │ │ │ ├── StudioXDbContextConfigurerAction.cs
│ │ │ │ └── StudioXEfCoreConfiguration.cs
│ │ │ ├── DatabaseFacadeExtensions.cs
│ │ │ ├── DbContextTypeMatcher.cs
│ │ │ ├── DefaultDbContextResolver.cs
│ │ │ ├── EfCoreActiveTransactionProvider.cs
│ │ │ ├── EfCoreBasedSecondaryOrmRegistrar.cs
│ │ │ ├── EfCoreDbContextEntityFinder.cs
│ │ │ ├── Extensions
│ │ │ │ ├── DbContextExtensions.cs
│ │ │ │ └── QueryableExtensions.cs
│ │ │ ├── IDbContextProvider.cs
│ │ │ ├── IDbContextResolver.cs
│ │ │ ├── Linq
│ │ │ │ └── EfCoreAsyncQueryableExecuter.cs
│ │ │ ├── Repositories
│ │ │ │ ├── EfCoreAutoRepositoryTypes.cs
│ │ │ │ ├── EfCoreRepositoryBaseOfTEntity.cs
│ │ │ │ ├── EfCoreRepositoryBaseOfTEntityAndTPrimaryKey.cs
│ │ │ │ ├── EfCoreRepositoryExtensions.cs
│ │ │ │ └── IRepositoryWithDbContext.cs
│ │ │ ├── SimpleDbContextProvider.cs
│ │ │ ├── StudioXDbContext.cs
│ │ │ ├── StudioXEfCoreServiceCollectionExtensions.cs
│ │ │ ├── StudioXEntityFrameworkCoreModule.cs
│ │ │ ├── StudioXEntityMaterializerSource.cs
│ │ │ ├── Uow
│ │ │ │ ├── ActiveTransactionInfo.cs
│ │ │ │ ├── DbContextEfCoreTransactionStrategy.cs
│ │ │ │ ├── EfCoreUnitOfWork.cs
│ │ │ │ ├── IEfCoreTransactionStrategy.cs
│ │ │ │ ├── UnitOfWorkDbContextProvider.cs
│ │ │ │ └── UnitOfWorkExtensions.cs
│ │ │ └── Utils
│ │ │ │ ├── DateTimePropertyInfoHelper.cs
│ │ │ │ └── EntityDateTimePropertiesInfo.cs
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ └── StudioX.EntityFrameworkCore.csproj
│ ├── StudioX.HangFire.AspNetCore
│ │ ├── Hangfire
│ │ │ ├── HangfireBackgroundJobManager.cs
│ │ │ ├── StudioXHangfireAspNetCoreModule.cs
│ │ │ ├── StudioXHangfireAuthorizationFilter.cs
│ │ │ ├── StudioXHangfireJobExceptionFilter.cs
│ │ │ └── StudioXHangfireModuleConfigurationExtensions.cs
│ │ └── StudioX.HangFire.AspNetCore.csproj
│ ├── StudioX.HangFire
│ │ ├── Hangfire
│ │ │ ├── Configuration
│ │ │ │ ├── IStudioXHangfireConfiguration.cs
│ │ │ │ ├── StudioXHangfireConfiguration.cs
│ │ │ │ └── StudioXHangfireModuleConfigurationExtensions.cs
│ │ │ ├── HangfireBackgroundJobManager.cs
│ │ │ ├── HangfireIocJobActivator.cs
│ │ │ ├── StudioXHangfireAuthorizationFilter.cs
│ │ │ ├── StudioXHangfireJobExceptionFilter.cs
│ │ │ └── StudioXHangfireModule.cs
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ └── StudioX.HangFire.csproj
│ ├── StudioX.MailKit
│ │ ├── DefaultMailKitSmtpBuilder.cs
│ │ ├── EmailExtensitons.cs
│ │ ├── IMailKitSmtpBuilder.cs
│ │ ├── MailKitEmailSender.cs
│ │ ├── StudioX.MailKit.csproj
│ │ └── StudioXMailKitModule.cs
│ ├── StudioX.MemoryDb
│ │ ├── Configuration
│ │ │ └── Startup
│ │ │ │ └── StudioXMemoryDbConfigurationExtensions.cs
│ │ ├── MemoryDb
│ │ │ ├── Configuration
│ │ │ │ ├── IStudioXMemoryDbModuleConfiguration.cs
│ │ │ │ └── StudioXMemoryDbModuleConfiguration.cs
│ │ │ ├── IMemoryDatabaseProvider.cs
│ │ │ ├── MemoryDatabase.cs
│ │ │ ├── Repositories
│ │ │ │ ├── MemoryPrimaryKeyGenerator.cs
│ │ │ │ ├── MemoryRepositoryOfTEntity.cs
│ │ │ │ └── MemoryRepositoryOfTEntityAndTPrimaryKey.cs
│ │ │ ├── StudioXMemoryDbModule.cs
│ │ │ └── Uow
│ │ │ │ ├── MemoryDbUnitOfWork.cs
│ │ │ │ └── UnitOfWorkMemoryDatabaseProvider.cs
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ ├── README.md
│ │ └── StudioX.MemoryDb.csproj
│ ├── StudioX.MongoDB
│ │ ├── Configuration
│ │ │ └── Startup
│ │ │ │ └── StudioXMongoDbConfigurationExtensions.cs
│ │ ├── MongoDb
│ │ │ ├── Configuration
│ │ │ │ ├── IStudioXMongoDbModuleConfiguration.cs
│ │ │ │ └── StudioXMongoDbModuleConfiguration.cs
│ │ │ ├── IMongoDatabaseProvider.cs
│ │ │ ├── Repositories
│ │ │ │ └── MongoDbRepositoryBase.cs
│ │ │ ├── StudioXMongoDbModule.cs
│ │ │ └── Uow
│ │ │ │ ├── MongoDbUnitOfWork.cs
│ │ │ │ └── UnitOfWorkMongoDatabaseProvider.cs
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ └── StudioX.MongoDB.csproj
│ ├── StudioX.Owin
│ │ ├── EmbeddedResources
│ │ │ ├── StudioXOwinEmbeddedResourceFileInfo.cs
│ │ │ └── StudioXOwinEmbeddedResourceFileSystem.cs
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ ├── StudioX.Owin.csproj
│ │ ├── StudioXOwinExtensions.cs
│ │ ├── StudioXOwinModule.cs
│ │ └── StudioXOwinOptions.cs
│ ├── StudioX.Quartz
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ ├── Quartz
│ │ │ ├── Configuration
│ │ │ │ ├── IStudioXQuartzConfiguration.cs
│ │ │ │ ├── StudioXQuartzConfiguration.cs
│ │ │ │ └── StudioXQuartzConfigurationExtensions.cs
│ │ │ ├── IQuartzScheduleJobManager.cs
│ │ │ ├── JobBase.cs
│ │ │ ├── QuartzScheduleJobManager.cs
│ │ │ ├── StudioXQuartzJobFactory.cs
│ │ │ ├── StudioXQuartzJobListener.cs
│ │ │ └── StudioXQuartzModule.cs
│ │ └── StudioX.Quartz.csproj
│ ├── StudioX.RedisCache.ProtoBuf
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ ├── Runtime
│ │ │ └── Caching
│ │ │ │ └── Redis
│ │ │ │ ├── ProtoBufRedisCacheSerializer.cs
│ │ │ │ └── StudioXRedisCacheOptionsExtensions.cs
│ │ └── StudioX.RedisCache.ProtoBuf.csproj
│ ├── StudioX.RedisCache
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ ├── Runtime
│ │ │ └── Caching
│ │ │ │ └── Redis
│ │ │ │ ├── DefaultRedisCacheSerializer.cs
│ │ │ │ ├── IRedisCacheSerializer.cs
│ │ │ │ ├── IStudioXRedisCacheDatabaseProvider.cs
│ │ │ │ ├── RedisCacheConfigurationExtensions.cs
│ │ │ │ ├── RedisDatabaseExtensions.cs
│ │ │ │ ├── StudioXRedisCache.cs
│ │ │ │ ├── StudioXRedisCacheDatabaseProvider.cs
│ │ │ │ ├── StudioXRedisCacheManager.cs
│ │ │ │ ├── StudioXRedisCacheModule.cs
│ │ │ │ └── StudioXRedisCacheOptions.cs
│ │ └── StudioX.RedisCache.csproj
│ ├── StudioX.TestBase
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ ├── StudioX.TestBase.csproj
│ │ └── TestBase
│ │ │ ├── Runtime
│ │ │ └── Session
│ │ │ │ └── TestStudioXSession.cs
│ │ │ ├── StudioXIntegratedTestBase.cs
│ │ │ └── StudioXTestBaseModule.cs
│ ├── StudioX.Web.Api
│ │ ├── Configuration
│ │ │ └── Startup
│ │ │ │ └── StudioXWebApiConfigurationExtensions.cs
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ ├── StudioX.Web.Api.csproj
│ │ ├── Web
│ │ │ └── Security
│ │ │ │ └── AntiForgery
│ │ │ │ └── StudioXAntiForgeryManagerWebApiExtensions.cs
│ │ └── WebApi
│ │ │ ├── Auditing
│ │ │ └── StudioXApiAuditFilter.cs
│ │ │ ├── Authorization
│ │ │ ├── StudioXApiAuthorizeAttribute.cs
│ │ │ └── StudioXApiAuthorizeFilter.cs
│ │ │ ├── Client
│ │ │ ├── IStudioXWebApiClient.cs
│ │ │ ├── StudioXRemoteCallException.cs
│ │ │ └── StudioXWebApiClient.cs
│ │ │ ├── Configuration
│ │ │ ├── IStudioXWebApiConfiguration.cs
│ │ │ └── StudioXWebApiConfiguration.cs
│ │ │ ├── Controllers
│ │ │ ├── ApiControllerConventionalRegistrar.cs
│ │ │ ├── ApiExplorer
│ │ │ │ ├── StudioXApiExplorer.cs
│ │ │ │ └── StudioXHttpActionDescriptor.cs
│ │ │ ├── Dynamic
│ │ │ │ ├── Binders
│ │ │ │ │ └── StudioXApiDateTimeBinder.cs
│ │ │ │ ├── Builders
│ │ │ │ │ ├── ApiControllerActionBuilder.cs
│ │ │ │ │ ├── ApiControllerBuilder.cs
│ │ │ │ │ ├── BatchApiControllerBuilder.cs
│ │ │ │ │ ├── DynamicApiControllerActionHelper.cs
│ │ │ │ │ ├── DynamicApiControllerBuilder.cs
│ │ │ │ │ ├── DynamicApiServiceNameHelper.cs
│ │ │ │ │ ├── DynamicApiVerbHelper.cs
│ │ │ │ │ ├── IApiControllerActionBuilder.cs
│ │ │ │ │ ├── IApiControllerBuilder.cs
│ │ │ │ │ ├── IBatchApiControllerBuilder.cs
│ │ │ │ │ └── IDynamicApiControllerBuilder.cs
│ │ │ │ ├── Clients
│ │ │ │ │ ├── ApiClientBuilder.cs
│ │ │ │ │ ├── DynamicApiClientBuilder.cs
│ │ │ │ │ ├── IApiClientBuilder.cs
│ │ │ │ │ └── IDynamicApiClient.cs
│ │ │ │ ├── DynamicApiController.cs
│ │ │ │ ├── DynamicApiControllerInfo.cs
│ │ │ │ ├── DynamicApiControllerManager.cs
│ │ │ │ ├── DynamicApiMethodInfo.cs
│ │ │ │ ├── Formatters
│ │ │ │ │ └── PlainTextFormatter.cs
│ │ │ │ ├── IDynamicApiController.cs
│ │ │ │ ├── Interceptors
│ │ │ │ │ └── StudioXDynamicApiControllerInterceptor.cs
│ │ │ │ ├── Scripting
│ │ │ │ │ ├── ActionScriptingHelper.cs
│ │ │ │ │ ├── Angular
│ │ │ │ │ │ ├── AngularActionScriptWriter.cs
│ │ │ │ │ │ └── AngularProxyGenerator.cs
│ │ │ │ │ ├── IScriptProxyGenerator.cs
│ │ │ │ │ ├── ProxyScriptType.cs
│ │ │ │ │ ├── ScriptProxyManager.cs
│ │ │ │ │ ├── StudioXServiceProxiesController.cs
│ │ │ │ │ ├── TypeScript
│ │ │ │ │ │ ├── TypeScriptDefinitionGenerator.cs
│ │ │ │ │ │ ├── TypeScriptDefinitionProxyGenerator.cs
│ │ │ │ │ │ ├── TypeScriptHelper.cs
│ │ │ │ │ │ ├── TypeScriptServiceGenerator.cs
│ │ │ │ │ │ └── TypeScriptServiceProxyGenerator.cs
│ │ │ │ │ ├── TypeScriptController.cs
│ │ │ │ │ └── jQuery
│ │ │ │ │ │ ├── JQueryActionScriptGenerator.cs
│ │ │ │ │ │ └── JQueryProxyGenerator.cs
│ │ │ │ └── Selectors
│ │ │ │ │ ├── DynamicHttpActionDescriptor.cs
│ │ │ │ │ ├── DynamicHttpControllerDescriptor.cs
│ │ │ │ │ ├── HttpVerbExtensions.cs
│ │ │ │ │ ├── StudioXApiControllerActionSelector.cs
│ │ │ │ │ └── StudioXHttpControllerSelector.cs
│ │ │ ├── HttpActionDescriptorHelper.cs
│ │ │ ├── ResultWrapperHandler.cs
│ │ │ ├── StudioXApiController.cs
│ │ │ └── StudioXApiControllerActivator.cs
│ │ │ ├── ExceptionHandling
│ │ │ └── StudioXApiExceptionFilterAttribute.cs
│ │ │ ├── Extensions
│ │ │ └── HttpResponseHeadersExtensions.cs
│ │ │ ├── Runtime
│ │ │ └── Caching
│ │ │ │ ├── ClearAllCacheModel.cs
│ │ │ │ ├── ClearCacheModel.cs
│ │ │ │ ├── ClearCacheSettingNames.cs
│ │ │ │ ├── ClearCacheSettingProvider.cs
│ │ │ │ └── StudioXCacheController.cs
│ │ │ ├── Security
│ │ │ └── AntiForgery
│ │ │ │ └── StudioXAntiForgeryApiFilter.cs
│ │ │ ├── StudioXWebApiModule.cs
│ │ │ ├── Uow
│ │ │ └── StudioXApiUowFilter.cs
│ │ │ └── Validation
│ │ │ ├── ActionDescriptorExtensions.cs
│ │ │ ├── StudioXApiValidationFilter.cs
│ │ │ └── WebApiActionInvocationValidator.cs
│ ├── StudioX.Web.Common
│ │ ├── Configuration
│ │ │ └── Startup
│ │ │ │ └── StudioXWebConfigurationExtensions.cs
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ ├── StudioX.Web.Common.csproj
│ │ └── Web
│ │ │ ├── Api
│ │ │ ├── Modeling
│ │ │ │ ├── ActionApiDescriptionModel.cs
│ │ │ │ ├── ApplicationApiDescriptionModel.cs
│ │ │ │ ├── ControllerApiDescriptionModel.cs
│ │ │ │ ├── IApiDescriptionModelProvider.cs
│ │ │ │ ├── ModuleApiDescriptionModel.cs
│ │ │ │ ├── ParameterApiDescriptionModel.cs
│ │ │ │ └── ReturnValueApiDescriptionModel.cs
│ │ │ └── ProxyScripting
│ │ │ │ ├── ApiProxyGenerationOptions.cs
│ │ │ │ ├── ApiProxyScriptManager.cs
│ │ │ │ ├── Configuration
│ │ │ │ ├── ApiProxyScriptingConfiguration.cs
│ │ │ │ └── IApiProxyScriptingConfiguration.cs
│ │ │ │ ├── Generators
│ │ │ │ ├── IProxyScriptGenerator.cs
│ │ │ │ ├── JQuery
│ │ │ │ │ └── JQueryProxyScriptGenerator.cs
│ │ │ │ ├── ParameterBindingSources.cs
│ │ │ │ ├── ProxyScriptingHelper.cs
│ │ │ │ └── ProxyScriptingJsFuncHelper.cs
│ │ │ │ └── IApiProxyScriptManager.cs
│ │ │ ├── Authorization
│ │ │ ├── AuthorizationScriptManager.cs
│ │ │ └── IAuthorizationScriptManager.cs
│ │ │ ├── Configuration
│ │ │ ├── IStudioXWebCommonModuleConfiguration.cs
│ │ │ ├── IWebEmbeddedResourcesConfiguration.cs
│ │ │ ├── StudioXUserConfigurationBuilder.cs
│ │ │ ├── StudioXWebCommonModuleConfiguration.cs
│ │ │ └── WebEmbeddedResourcesConfiguration.cs
│ │ │ ├── Features
│ │ │ ├── FeaturesScriptManager.cs
│ │ │ └── IFeaturesScriptManager.cs
│ │ │ ├── HttpVerb.cs
│ │ │ ├── HttpVerbHelper.cs
│ │ │ ├── Localization
│ │ │ ├── ILocalizationScriptManager.cs
│ │ │ ├── LocalizationScriptManager.cs
│ │ │ └── StudioXWebXmlSource
│ │ │ │ ├── StudioXWeb-ca-ES.xml
│ │ │ │ ├── StudioXWeb-de.xml
│ │ │ │ ├── StudioXWeb-es.xml
│ │ │ │ ├── StudioXWeb-fr.xml
│ │ │ │ ├── StudioXWeb-it.xml
│ │ │ │ ├── StudioXWeb-lt.xml
│ │ │ │ ├── StudioXWeb-lv.xml
│ │ │ │ ├── StudioXWeb-pt-BR.xml
│ │ │ │ ├── StudioXWeb-ru.xml
│ │ │ │ ├── StudioXWeb-tr.xml
│ │ │ │ ├── StudioXWeb-uk.xml
│ │ │ │ ├── StudioXWeb-zh-CN.xml
│ │ │ │ └── StudioXWeb.xml
│ │ │ ├── Models
│ │ │ ├── AjaxResponse.cs
│ │ │ ├── AjaxResponseBase.cs
│ │ │ ├── AjaxResponseOfTResult.cs
│ │ │ ├── DefaultErrorInfoConverter.cs
│ │ │ ├── ErrorInfo.cs
│ │ │ ├── ErrorInfoBuilder.cs
│ │ │ ├── IErrorInfoBuilder.cs
│ │ │ ├── IExceptionToErrorInfoConverter.cs
│ │ │ ├── StudioXUserConfiguration
│ │ │ │ ├── StudioXLocalizationSourceDto.cs
│ │ │ │ ├── StudioXMultiTenancyConfigDto.cs
│ │ │ │ ├── StudioXMultiTenancySidesConfigDto.cs
│ │ │ │ ├── StudioXStringValueDto.cs
│ │ │ │ ├── StudioXUserAntiForgeryConfigDto.cs
│ │ │ │ ├── StudioXUserAuthConfigDto.cs
│ │ │ │ ├── StudioXUserClockConfigDto.cs
│ │ │ │ ├── StudioXUserConfigurationDto.cs
│ │ │ │ ├── StudioXUserCurrentCultureConfigDto.cs
│ │ │ │ ├── StudioXUserFeatureConfigDto.cs
│ │ │ │ ├── StudioXUserIanaTimeZoneConfigDto.cs
│ │ │ │ ├── StudioXUserLocalizationConfigDto.cs
│ │ │ │ ├── StudioXUserNavConfigDto.cs
│ │ │ │ ├── StudioXUserSecurityConfigDto.cs
│ │ │ │ ├── StudioXUserSessionConfigDto.cs
│ │ │ │ ├── StudioXUserSettingConfigDto.cs
│ │ │ │ ├── StudioXUserTimeZoneConfigDto.cs
│ │ │ │ ├── StudioXUserTimingConfigDto.cs
│ │ │ │ └── StudioXUserWindowsTimeZoneConfigDto.cs
│ │ │ └── ValidationErrorInfo.cs
│ │ │ ├── MultiTenancy
│ │ │ ├── IMultiTenancyScriptManager.cs
│ │ │ ├── IWebMultiTenancyConfiguration.cs
│ │ │ ├── MultiTenancyScriptManager.cs
│ │ │ └── WebMultiTenancyConfiguration.cs
│ │ │ ├── Mvc
│ │ │ └── Models
│ │ │ │ └── ErrorViewModel.cs
│ │ │ ├── Navigation
│ │ │ ├── INavigationScriptManager.cs
│ │ │ └── NavigationScriptManager.cs
│ │ │ ├── Security
│ │ │ ├── AntiForgery
│ │ │ │ ├── IStudioXAntiForgeryConfiguration.cs
│ │ │ │ ├── IStudioXAntiForgeryManager.cs
│ │ │ │ ├── IStudioXAntiForgeryValidator.cs
│ │ │ │ ├── StudioXAntiForgeryConfiguration.cs
│ │ │ │ └── StudioXAntiForgeryManager.cs
│ │ │ ├── ISecurityScriptManager.cs
│ │ │ └── SecurityScriptManager.cs
│ │ │ ├── Sessions
│ │ │ ├── ISessionScriptManager.cs
│ │ │ └── SessionScriptManager.cs
│ │ │ ├── Settings
│ │ │ ├── ISettingScriptManager.cs
│ │ │ └── SettingScriptManager.cs
│ │ │ ├── StudioXWebCommonModule.cs
│ │ │ ├── StudioXWebConsts.cs
│ │ │ └── Timing
│ │ │ ├── ITimingScriptManager.cs
│ │ │ └── TimingScriptManager.cs
│ ├── StudioX.Web.Mvc
│ │ ├── Application
│ │ │ └── Services
│ │ │ │ └── Dto
│ │ │ │ └── ComboboxItemDtoExtensions.cs
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ ├── StudioX.Web.Mvc.csproj
│ │ └── Web
│ │ │ ├── Mvc
│ │ │ ├── Auditing
│ │ │ │ ├── StudioXAuditFilterData.cs
│ │ │ │ └── StudioXMvcAuditFilter.cs
│ │ │ ├── Authorization
│ │ │ │ ├── StudioXMvcAuthorizeAttribute.cs
│ │ │ │ └── StudioXMvcAuthorizeFilter.cs
│ │ │ ├── Configuration
│ │ │ │ ├── IStudioXMvcConfiguration.cs
│ │ │ │ ├── StudioXMvcConfiguration.cs
│ │ │ │ └── StudioXMvcConfigurationExtensions.cs
│ │ │ ├── Controllers
│ │ │ │ ├── ControllerConventionalRegistrar.cs
│ │ │ │ ├── Localization
│ │ │ │ │ └── StudioXLocalizationController.cs
│ │ │ │ ├── Results
│ │ │ │ │ └── StudioXJsonResult.cs
│ │ │ │ ├── StudioXAppViewController.cs
│ │ │ │ ├── StudioXController.cs
│ │ │ │ ├── StudioXScriptsController.cs
│ │ │ │ ├── StudioXUserConfigurationController.cs
│ │ │ │ └── WindsorControllerFactory.cs
│ │ │ ├── Extensions
│ │ │ │ ├── ActionDescriptorExtensions.cs
│ │ │ │ └── HtmlHelperResourceExtensions.cs
│ │ │ ├── Helpers
│ │ │ │ └── MethodInfoHelper.cs
│ │ │ ├── ModelBinding
│ │ │ │ └── Binders
│ │ │ │ │ └── StudioXMvcDateTimeBinder.cs
│ │ │ ├── Models
│ │ │ │ └── ModelStateExtensions.cs
│ │ │ ├── Resources
│ │ │ │ ├── Embedded
│ │ │ │ │ ├── EmbeddedResourceItemCacheDependency.cs
│ │ │ │ │ ├── EmbeddedResourceItemVirtualFile.cs
│ │ │ │ │ ├── EmbeddedResourceVirtualPathProvider.cs
│ │ │ │ │ └── Handlers
│ │ │ │ │ │ ├── EmbeddedResourceHttpHandler.cs
│ │ │ │ │ │ └── EmbeddedResourceRouteHandler.cs
│ │ │ │ └── WebResourceHelper.cs
│ │ │ ├── Security
│ │ │ │ └── AntiForgery
│ │ │ │ │ ├── StudioXAntiForgeryMvcFilter.cs
│ │ │ │ │ └── StudioXMvcAntiForgeryTokenManager.cs
│ │ │ ├── StudioXWebMvcModule.cs
│ │ │ ├── Uow
│ │ │ │ └── StudioXMvcUowFilter.cs
│ │ │ ├── Validation
│ │ │ │ ├── MvcActionInvocationValidator.cs
│ │ │ │ └── StudioXMvcValidationFilter.cs
│ │ │ └── Views
│ │ │ │ ├── StudioXWebViewPage.cs
│ │ │ │ └── StudioXWebViewPageOfTModel.cs
│ │ │ └── Security
│ │ │ └── AntiForgery
│ │ │ └── StudioXAntiForgeryManagerMvcExtensions.cs
│ ├── StudioX.Web.SignalR
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ ├── StudioX.Web.SignalR.csproj
│ │ └── Web
│ │ │ └── SignalR
│ │ │ ├── Hubs
│ │ │ └── StudioXCommonHub.cs
│ │ │ ├── Notifications
│ │ │ └── SignalRRealTimeNotifier.cs
│ │ │ ├── StudioXSignalRContractResolver.cs
│ │ │ ├── StudioXWebSignalRModule.cs
│ │ │ └── WindsorDependencyResolver.cs
│ ├── StudioX.Web
│ │ ├── Auditing
│ │ │ └── WebClientInfoProvider.cs
│ │ ├── Configuration
│ │ │ └── Startup
│ │ │ │ └── StudioXWebConfigurationExtensions.cs
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ ├── StudioX.Web.csproj
│ │ └── Web
│ │ │ ├── Configuration
│ │ │ ├── IStudioXWebLocalizationConfiguration.cs
│ │ │ ├── IStudioXWebModuleConfiguration.cs
│ │ │ ├── StudioXWebLocalizationConfiguration.cs
│ │ │ └── StudioXWebModuleConfiguration.cs
│ │ │ ├── Localization
│ │ │ ├── CurrentCultureSetter.cs
│ │ │ └── ICurrentCultureSetter.cs
│ │ │ ├── MultiTenancy
│ │ │ ├── DomainTenantResolveContributor.cs
│ │ │ ├── HttpContextTenantResolverCache.cs
│ │ │ ├── HttpCookieTenantResolveContributor.cs
│ │ │ └── HttpHeaderTenantResolveContributor.cs
│ │ │ ├── PlugInSourceExtensions.cs
│ │ │ ├── Security
│ │ │ └── AntiForgery
│ │ │ │ ├── DisableStudioXAntiForgeryTokenValidationAttribute.cs
│ │ │ │ ├── IStudioXAntiForgeryWebConfiguration.cs
│ │ │ │ ├── StudioXAntiForgeryManagerWebExtensions.cs
│ │ │ │ ├── StudioXAntiForgeryWebConfiguration.cs
│ │ │ │ └── ValidateStudioXAntiForgeryTokenAttribute.cs
│ │ │ ├── Session
│ │ │ └── HttpContextPrincipalAccessor.cs
│ │ │ ├── StudioXUrlHelper.cs
│ │ │ ├── StudioXWebApplication.cs
│ │ │ └── StudioXWebModule.cs
│ └── StudioX
│ │ ├── Application
│ │ ├── Features
│ │ │ ├── Feature.cs
│ │ │ ├── FeatureChecker.cs
│ │ │ ├── FeatureCheckerExtensions.cs
│ │ │ ├── FeatureConfiguration.cs
│ │ │ ├── FeatureDefinitionContextBase.cs
│ │ │ ├── FeatureDependencyContext.cs
│ │ │ ├── FeatureDependencyExtensions.cs
│ │ │ ├── FeatureDictionary.cs
│ │ │ ├── FeatureManager.cs
│ │ │ ├── FeatureProvider.cs
│ │ │ ├── FeatureScopes.cs
│ │ │ ├── IFeatureChecker.cs
│ │ │ ├── IFeatureConfiguration.cs
│ │ │ ├── IFeatureDefinitionContext.cs
│ │ │ ├── IFeatureDependency.cs
│ │ │ ├── IFeatureDependencyContext.cs
│ │ │ ├── IFeatureManager.cs
│ │ │ ├── IFeatureValueStore.cs
│ │ │ ├── NullFeatureValueStore.cs
│ │ │ ├── RequiresFeatureAttribute.cs
│ │ │ └── SimpleFeatureDependency.cs
│ │ ├── Navigation
│ │ │ ├── HasMenuItemDefinitionsExtensions.cs
│ │ │ ├── IHasMenuItemDefinitions.cs
│ │ │ ├── INavigationManager.cs
│ │ │ ├── INavigationProviderContext.cs
│ │ │ ├── IUserNavigationManager.cs
│ │ │ ├── MenuDefinition.cs
│ │ │ ├── MenuItemDefinition.cs
│ │ │ ├── MenuItemDefinitionExtensions.cs
│ │ │ ├── NavigationManager.cs
│ │ │ ├── NavigationProvider.cs
│ │ │ ├── NavigationProviderContext.cs
│ │ │ ├── UserMenu.cs
│ │ │ ├── UserMenuItem.cs
│ │ │ └── UserNavigationManager.cs
│ │ └── Services
│ │ │ ├── ApplicationService.cs
│ │ │ ├── AsyncCrudAppService.cs
│ │ │ ├── CrudAppService.cs
│ │ │ ├── CrudAppServiceBase.cs
│ │ │ ├── Dto
│ │ │ ├── AuditedEntityDto.cs
│ │ │ ├── ComboboxItemDto.cs
│ │ │ ├── CreationAuditedEntityDto.cs
│ │ │ ├── EntityDto.cs
│ │ │ ├── FullAuditedEntityDto.cs
│ │ │ ├── IEntityDto.cs
│ │ │ ├── IHasLongTotalCount.cs
│ │ │ ├── IHasTotalCount.cs
│ │ │ ├── ILimitedResultRequest.cs
│ │ │ ├── IListResult.cs
│ │ │ ├── IPagedAndSortedResultRequest.cs
│ │ │ ├── IPagedResult.cs
│ │ │ ├── IPagedResultRequest.cs
│ │ │ ├── ISortedResultRequest.cs
│ │ │ ├── LimitedResultRequestDto.cs
│ │ │ ├── ListResultDto.cs
│ │ │ ├── NameValueDto.cs
│ │ │ ├── NullableIdDto.cs
│ │ │ ├── PagedAndSortedResultRequestDto.cs
│ │ │ ├── PagedResultDto.cs
│ │ │ └── PagedResultRequestDto.cs
│ │ │ ├── IApplicationService.cs
│ │ │ ├── IAsyncCrudAppService.cs
│ │ │ ├── IAvoidDuplicateCrossCuttingConcerns.cs
│ │ │ ├── ICrudAppService.cs
│ │ │ └── RemoteServiceAttribute.cs
│ │ ├── Aspects
│ │ ├── AspectAttribute.cs
│ │ └── StudioXCrossCuttingConcerns.cs
│ │ ├── Auditing
│ │ ├── AuditInfo.cs
│ │ ├── AuditedAttribute.cs
│ │ ├── AuditingConfiguration.cs
│ │ ├── AuditingContractResolver.cs
│ │ ├── AuditingHelper.cs
│ │ ├── AuditingInterceptor.cs
│ │ ├── AuditingInterceptorRegistrar.cs
│ │ ├── AuditingSelectorList.cs
│ │ ├── AuditingStoreExtensions.cs
│ │ ├── DisableAuditingAttribute.cs
│ │ ├── IAuditInfoProvider.cs
│ │ ├── IAuditSerializer.cs
│ │ ├── IAuditingConfiguration.cs
│ │ ├── IAuditingHelper.cs
│ │ ├── IAuditingSelectorList.cs
│ │ ├── IAuditingStore.cs
│ │ ├── IClientInfoProvider.cs
│ │ ├── JsonNetAuditSerializer.cs
│ │ ├── NullAuditInfoProvider.cs
│ │ ├── NullClientInfoProvider.cs
│ │ └── SimpleLogAuditingStore.cs
│ │ ├── Authorization
│ │ ├── AuthorizationHelper.cs
│ │ ├── AuthorizationHelperExtensions.cs
│ │ ├── AuthorizationInterceptor.cs
│ │ ├── AuthorizationInterceptorRegistrar.cs
│ │ ├── AuthorizationProvider.cs
│ │ ├── IAuthorizationHelper.cs
│ │ ├── IPermissionChecker.cs
│ │ ├── IPermissionDefinitionContext.cs
│ │ ├── IPermissionDependency.cs
│ │ ├── IPermissionDependencyContext.cs
│ │ ├── IPermissionManager.cs
│ │ ├── IStudioXAllowAnonymousAttribute.cs
│ │ ├── IStudioXAuthorizeAttribute.cs
│ │ ├── NullPermissionChecker.cs
│ │ ├── Permission.cs
│ │ ├── PermissionCheckerExtensions.cs
│ │ ├── PermissionDefinitionContextBase.cs
│ │ ├── PermissionDependencyContext.cs
│ │ ├── PermissionDependencyExtensions.cs
│ │ ├── PermissionDictionary.cs
│ │ ├── PermissionFinder.cs
│ │ ├── PermissionManager.cs
│ │ ├── SimplePermissionDependency.cs
│ │ ├── StudioXAllowAnonymousAttribute.cs
│ │ ├── StudioXAuthorizationException.cs
│ │ └── StudioXAuthorizeAttribute.cs
│ │ ├── BackgroundJobs
│ │ ├── BackgroundJob.cs
│ │ ├── BackgroundJobConfiguration.cs
│ │ ├── BackgroundJobException.cs
│ │ ├── BackgroundJobInfo.cs
│ │ ├── BackgroundJobManager.cs
│ │ ├── BackgroundJobManagerExtensions.cs
│ │ ├── BackgroundJobPriority.cs
│ │ ├── IBackgroundJob.cs
│ │ ├── IBackgroundJobConfiguration.cs
│ │ ├── IBackgroundJobManager.cs
│ │ ├── IBackgroundJobStore.cs
│ │ ├── InMemoryBackgroundJobStore.cs
│ │ └── NullBackgroundJobStore.cs
│ │ ├── Check.cs
│ │ ├── Collections
│ │ ├── Extensions
│ │ │ ├── CollectionExtensions.cs
│ │ │ ├── DictionaryExtensions.cs
│ │ │ ├── EnumerableExtensions.cs
│ │ │ └── ListExtensions.cs
│ │ ├── ITypeList.cs
│ │ └── TypeList.cs
│ │ ├── Compability
│ │ └── System.Transactions.cs
│ │ ├── Configuration
│ │ ├── CacheManagerSettingExtensions.cs
│ │ ├── DefaultConfigSettingStore.cs
│ │ ├── DictionaryBasedConfig.cs
│ │ ├── IDictionaryBasedConfig.cs
│ │ ├── ISettingDefinitionManager.cs
│ │ ├── ISettingManager.cs
│ │ ├── ISettingStore.cs
│ │ ├── ISettingValue.cs
│ │ ├── SettingDefinition.cs
│ │ ├── SettingDefinitionGroup.cs
│ │ ├── SettingDefinitionManager.cs
│ │ ├── SettingDefinitionProviderContext.cs
│ │ ├── SettingInfo.cs
│ │ ├── SettingManager.cs
│ │ ├── SettingManagerExtensions.cs
│ │ ├── SettingProvider.cs
│ │ ├── SettingScope.cs
│ │ └── Startup
│ │ │ ├── AuthorizationConfiguration.cs
│ │ │ ├── EventBusConfiguration.cs
│ │ │ ├── IAuthorizationConfiguration.cs
│ │ │ ├── IEventBusConfiguration.cs
│ │ │ ├── ILocalizationConfiguration.cs
│ │ │ ├── ILocalizationSourceList.cs
│ │ │ ├── IModuleConfigurations.cs
│ │ │ ├── IMultiTenancyConfig.cs
│ │ │ ├── INavigationConfiguration.cs
│ │ │ ├── ISettingsConfiguration.cs
│ │ │ ├── IStudioXStartupConfiguration.cs
│ │ │ ├── IValidationConfiguration.cs
│ │ │ ├── LocalizationConfiguration.cs
│ │ │ ├── LocalizationSourceList.cs
│ │ │ ├── ModuleConfigurations.cs
│ │ │ ├── MultiTenancyConfig.cs
│ │ │ ├── NavigationConfiguration.cs
│ │ │ ├── SettingsConfiguration.cs
│ │ │ ├── StudioXStartupConfiguration.cs
│ │ │ ├── StudioXStartupConfigurationExtensions.cs
│ │ │ └── ValidationConfiguration.cs
│ │ ├── Data
│ │ ├── ActiveTransactionProviderArgs.cs
│ │ └── IActiveTransactionProvider.cs
│ │ ├── Dependency
│ │ ├── BasicConventionalRegistrar.cs
│ │ ├── ConventionalRegistrationConfig.cs
│ │ ├── ConventionalRegistrationContext.cs
│ │ ├── DependencyLifeStyle.cs
│ │ ├── DisposableDependencyObjectWrapperOfT.cs
│ │ ├── IConventionalDependencyRegistrar.cs
│ │ ├── IConventionalRegistrationContext.cs
│ │ ├── IDisposableDependencyObjectWrapper.cs
│ │ ├── IDisposableDependencyObjectWrapperOfT.cs
│ │ ├── IIocManager.cs
│ │ ├── IIocManagerAccessor.cs
│ │ ├── IIocRegistrar.cs
│ │ ├── IIocResolver.cs
│ │ ├── IScopedIocResolver.cs
│ │ ├── ISingletonDependency.cs
│ │ ├── ITransientDependency.cs
│ │ ├── Installers
│ │ │ └── StudioXCoreInstaller.cs
│ │ ├── IocManager.cs
│ │ ├── IocRegistrarExtensions.cs
│ │ ├── IocResolverExtensions.cs
│ │ ├── ScopedIocResolver.cs
│ │ └── SingletonDependency.cs
│ │ ├── DisposeAction.cs
│ │ ├── Domain
│ │ ├── Entities
│ │ │ ├── AggregateRoot.cs
│ │ │ ├── Auditing
│ │ │ │ ├── AuditedAggregateRoot.cs
│ │ │ │ ├── AuditedEntity.cs
│ │ │ │ ├── CreationAuditedAggregateRoot.cs
│ │ │ │ ├── CreationAuditedEntity.cs
│ │ │ │ ├── EntityAuditingHelper.cs
│ │ │ │ ├── FullAuditedAggregateRoot.cs
│ │ │ │ ├── FullAuditedEntity.cs
│ │ │ │ ├── IAudited.cs
│ │ │ │ ├── ICreationAudited.cs
│ │ │ │ ├── IDeletionAudited.cs
│ │ │ │ ├── IFullAudited.cs
│ │ │ │ ├── IHasCreationTime.cs
│ │ │ │ ├── IHasDeletionTime.cs
│ │ │ │ ├── IHasModificationTime.cs
│ │ │ │ └── IModificationAudited.cs
│ │ │ ├── Caching
│ │ │ │ ├── EntityCache.cs
│ │ │ │ └── IEntityCache.cs
│ │ │ ├── Entity.cs
│ │ │ ├── EntityExtensions.cs
│ │ │ ├── EntityHelper.cs
│ │ │ ├── EntityIdentifier.cs
│ │ │ ├── EntityNotFoundException.cs
│ │ │ ├── EntityTypeInfo.cs
│ │ │ ├── ExtendableObjectExtensions.cs
│ │ │ ├── IAggregateRoot.cs
│ │ │ ├── IEntity.cs
│ │ │ ├── IEntityOfTPrimaryKey.cs
│ │ │ ├── IExtendableObject.cs
│ │ │ ├── IMayHaveTenant.cs
│ │ │ ├── IMustHaveTenant.cs
│ │ │ ├── IPassivable.cs
│ │ │ └── ISoftDelete.cs
│ │ ├── Policies
│ │ │ └── IPolicy.cs
│ │ ├── Repositories
│ │ │ ├── AutoRepositoryTypesAttribute.cs
│ │ │ ├── IRepository.cs
│ │ │ ├── IRepositoryOfTEntity.cs
│ │ │ ├── IRepositoryOfTEntityAndTPrimaryKey.cs
│ │ │ ├── ISupportsExplicitLoading.cs
│ │ │ ├── RepositoryExtensions.cs
│ │ │ └── StudioXRepositoryBase.cs
│ │ ├── Services
│ │ │ ├── DomainService.cs
│ │ │ └── IDomainService.cs
│ │ ├── Uow
│ │ │ ├── AsyncLocalCurrentUnitOfWorkProvider.cs
│ │ │ ├── CallContextCurrentUnitOfWorkProvider.cs
│ │ │ ├── ConnectionStringResolveArgs.cs
│ │ │ ├── DataFilterConfiguration.cs
│ │ │ ├── DefaultConnectionStringResolver.cs
│ │ │ ├── IActiveUnitOfWork.cs
│ │ │ ├── IConnectionStringResolver.cs
│ │ │ ├── ICurrentUnitOfWorkProvider.cs
│ │ │ ├── IUnitOfWork.cs
│ │ │ ├── IUnitOfWorkCompleteHandle.cs
│ │ │ ├── IUnitOfWorkDefaultOptions.cs
│ │ │ ├── IUnitOfWorkFilterExecuter.cs
│ │ │ ├── IUnitOfWorkManager.cs
│ │ │ ├── InnerUnitOfWorkCompleteHandle.cs
│ │ │ ├── NullUnitOfWork.cs
│ │ │ ├── NullUnitOfWorkFilterExecuter.cs
│ │ │ ├── StudioXDataFilters.cs
│ │ │ ├── StudioXDbConcurrencyException.cs
│ │ │ ├── UnitOfWorkAttribute.cs
│ │ │ ├── UnitOfWorkBase.cs
│ │ │ ├── UnitOfWorkDefaultOptions.cs
│ │ │ ├── UnitOfWorkDefaultOptionsExtensions.cs
│ │ │ ├── UnitOfWorkFailedEventArgs.cs
│ │ │ ├── UnitOfWorkHelper.cs
│ │ │ ├── UnitOfWorkInterceptor.cs
│ │ │ ├── UnitOfWorkManager.cs
│ │ │ ├── UnitOfWorkOptions.cs
│ │ │ └── UnitOfWorkRegistrar.cs
│ │ └── Values
│ │ │ └── ValueObject.cs
│ │ ├── Events
│ │ └── Bus
│ │ │ ├── Entities
│ │ │ ├── DomainEventEntry.cs
│ │ │ ├── EntityChangeEntry.cs
│ │ │ ├── EntityChangeEventHelper.cs
│ │ │ ├── EntityChangeReport.cs
│ │ │ ├── EntityChangeType.cs
│ │ │ ├── EntityChangedEventData.cs
│ │ │ ├── EntityChangingEventData.cs
│ │ │ ├── EntityCreatedEventData.cs
│ │ │ ├── EntityCreatingEventData.cs
│ │ │ ├── EntityDeletedEventData.cs
│ │ │ ├── EntityDeletingEventData.cs
│ │ │ ├── EntityEventData.cs
│ │ │ ├── EntityUpdatedEventData.cs
│ │ │ ├── EntityUpdatingEventData.cs
│ │ │ ├── IEntityChangeEventHelper.cs
│ │ │ └── NullEntityChangeEventHelper.cs
│ │ │ ├── EventBus.cs
│ │ │ ├── EventBusInstaller.cs
│ │ │ ├── EventData.cs
│ │ │ ├── Exceptions
│ │ │ ├── ExceptionData.cs
│ │ │ └── StudioXHandledExceptionData.cs
│ │ │ ├── Factories
│ │ │ ├── IEventHandlerFactory.cs
│ │ │ ├── Internals
│ │ │ │ ├── FactoryUnregistrar.cs
│ │ │ │ ├── SingleInstanceHandlerFactory.cs
│ │ │ │ └── TransientEventHandlerFactory.cs
│ │ │ └── IocHandlerFactory.cs
│ │ │ ├── Handlers
│ │ │ ├── IEventHandler.cs
│ │ │ ├── IEventHandlerOfTEventData.cs
│ │ │ └── Internals
│ │ │ │ └── ActionEventHandler.cs
│ │ │ ├── IEventBus.cs
│ │ │ ├── IEventData.cs
│ │ │ ├── IEventDataWithInheritableGenericArgument.cs
│ │ │ └── NullEventBus.cs
│ │ ├── Extensions
│ │ ├── ComparableExtensions.cs
│ │ ├── DateTimeExtensions.cs
│ │ ├── DateTimeRangeExtensions.cs
│ │ ├── DayOfWeekExtensions.cs
│ │ ├── EventHandlerExtensions.cs
│ │ ├── ExceptionExtensions.cs
│ │ ├── ObjectExtensions.cs
│ │ └── StringExtensions.cs
│ │ ├── IGuidGenerator.cs
│ │ ├── IHasErrorCode.cs
│ │ ├── IO
│ │ ├── DirectoryHelper.cs
│ │ ├── Extensions
│ │ │ └── StreamExtensions.cs
│ │ └── FileHelper.cs
│ │ ├── IShouldInitialize.cs
│ │ ├── IUserIdentifier.cs
│ │ ├── Json
│ │ ├── JsonExtensions.cs
│ │ ├── JsonSerializationHelper.cs
│ │ └── StudioXDateTimeConverter.cs
│ │ ├── Linq
│ │ ├── Extensions
│ │ │ └── QueryableExtensions.cs
│ │ ├── IAsyncQueryableExecuter.cs
│ │ └── NullAsyncQueryableExecuter.cs
│ │ ├── Localization
│ │ ├── CultureInfoHelper.cs
│ │ ├── DefaultLanguageProvider.cs
│ │ ├── Dictionaries
│ │ │ ├── DictionaryBasedLocalizationSource.cs
│ │ │ ├── IDictionaryBasedLocalizationSource.cs
│ │ │ ├── ILocalizationDictionary.cs
│ │ │ ├── ILocalizationDictionaryProvider.cs
│ │ │ ├── Json
│ │ │ │ ├── JsonEmbeddedFileLocalizationDictionaryProvider.cs
│ │ │ │ ├── JsonFileLocalizationDictionaryProvider.cs
│ │ │ │ ├── JsonLocalizationDictionary.cs
│ │ │ │ └── JsonLocalizationFile.cs
│ │ │ ├── LocalizationDictionary.cs
│ │ │ ├── Utf8Helper.cs
│ │ │ └── Xml
│ │ │ │ ├── LocalizationDictionaryProviderBase.cs
│ │ │ │ ├── XmlEmbeddedFileLocalizationDictionaryProvider.cs
│ │ │ │ ├── XmlFileLocalizationDictionaryProvider.cs
│ │ │ │ └── XmlLocalizationDictionary.cs
│ │ ├── FixedLocalizableString.cs
│ │ ├── GlobalizationHelper.cs
│ │ ├── ILanguageManager.cs
│ │ ├── ILanguageProvider.cs
│ │ ├── ILocalizableString.cs
│ │ ├── ILocalizationContext.cs
│ │ ├── ILocalizationManager.cs
│ │ ├── LanguageInfo.cs
│ │ ├── LanguageManager.cs
│ │ ├── LocalizableString.cs
│ │ ├── LocalizableStringToStringJsonConverter.cs
│ │ ├── LocalizationContext.cs
│ │ ├── LocalizationHelper.cs
│ │ ├── LocalizationManager.cs
│ │ ├── LocalizationManagerExtensions.cs
│ │ ├── LocalizationSettingNames.cs
│ │ ├── LocalizationSettingProvider.cs
│ │ ├── LocalizationSourceHelper.cs
│ │ ├── LocalizedString.cs
│ │ ├── NullLocalizationManager.cs
│ │ ├── Sources
│ │ │ ├── ILocalizationSource.cs
│ │ │ ├── LocalizationSourceExtensionInfo.cs
│ │ │ ├── LocalizationSourceExtensions.cs
│ │ │ ├── NullLocalizationSource.cs
│ │ │ ├── Resource
│ │ │ │ └── ResourceFileLocalizationSource.cs
│ │ │ └── StudioXXmlSource
│ │ │ │ ├── StudioX-ca-ES.xml
│ │ │ │ ├── StudioX-de.xml
│ │ │ │ ├── StudioX-es.xml
│ │ │ │ ├── StudioX-fa.xml
│ │ │ │ ├── StudioX-fr.xml
│ │ │ │ ├── StudioX-it.xml
│ │ │ │ ├── StudioX-lt.xml
│ │ │ │ ├── StudioX-lv.xml
│ │ │ │ ├── StudioX-pt-BR.xml
│ │ │ │ ├── StudioX-ru.xml
│ │ │ │ ├── StudioX-tr.xml
│ │ │ │ ├── StudioX-uk.xml
│ │ │ │ ├── StudioX-zh-CN.xml
│ │ │ │ └── StudioX.xml
│ │ └── StudioXDisplayNameAttribute.cs
│ │ ├── Logging
│ │ ├── IHasLogSeverity.cs
│ │ ├── LogHelper.cs
│ │ ├── LogSeverity.cs
│ │ └── LoggerExtensions.cs
│ │ ├── Modules
│ │ ├── DependsOnAttribute.cs
│ │ ├── IStudioXModuleManager.cs
│ │ ├── StudioXModule.cs
│ │ ├── StudioXModuleCollection.cs
│ │ ├── StudioXModuleInfo.cs
│ │ └── StudioXModuleManager.cs
│ │ ├── MultiTenancy
│ │ ├── ITenantResolveContributor.cs
│ │ ├── ITenantResolver.cs
│ │ ├── ITenantResolverCache.cs
│ │ ├── ITenantStore.cs
│ │ ├── MultiTenancyConsts.cs
│ │ ├── MultiTenancyExtensions.cs
│ │ ├── MultiTenancyHelper.cs
│ │ ├── MultiTenancySideAttribute.cs
│ │ ├── MultiTenancySides.cs
│ │ ├── NullTenantResolverCache.cs
│ │ ├── NullTenantStore.cs
│ │ ├── TenantInfo.cs
│ │ ├── TenantResolver.cs
│ │ └── TenantResolverCacheItem.cs
│ │ ├── NameValue.cs
│ │ ├── NamedTypeSelector.cs
│ │ ├── Net
│ │ └── Mail
│ │ │ ├── EmailSenderBase.cs
│ │ │ ├── EmailSenderConfiguration.cs
│ │ │ ├── EmailSettingNames.cs
│ │ │ ├── EmailSettingProvider.cs
│ │ │ ├── IEmailSender.cs
│ │ │ ├── IEmailSenderConfiguration.cs
│ │ │ ├── NullEmailSender.cs
│ │ │ └── Smtp
│ │ │ ├── ISmtpEmailSender.cs
│ │ │ ├── ISmtpEmailSenderConfiguration.cs
│ │ │ ├── SmtpEmailSender.cs
│ │ │ └── SmtpEmailSenderConfiguration.cs
│ │ ├── Notifications
│ │ ├── INotificationConfiguration.cs
│ │ ├── INotificationDefinitionContext.cs
│ │ ├── INotificationDefinitionManager.cs
│ │ ├── INotificationDistributer.cs
│ │ ├── INotificationPublisher.cs
│ │ ├── INotificationStore.cs
│ │ ├── INotificationSubscriptionManager.cs
│ │ ├── IRealTimeNotifier.cs
│ │ ├── IUserNotificationManager.cs
│ │ ├── LocalizableMessageNotificationData.cs
│ │ ├── MessageNotificationData.cs
│ │ ├── NotificationConfiguration.cs
│ │ ├── NotificationData.cs
│ │ ├── NotificationDefinition.cs
│ │ ├── NotificationDefinitionContext.cs
│ │ ├── NotificationDefinitionManager.cs
│ │ ├── NotificationDefinitionManagerExtensions.cs
│ │ ├── NotificationDistributer.cs
│ │ ├── NotificationDistributionJob.cs
│ │ ├── NotificationDistributionJobArgs.cs
│ │ ├── NotificationExtensions.cs
│ │ ├── NotificationInfo.cs
│ │ ├── NotificationProvider.cs
│ │ ├── NotificationPublisher.cs
│ │ ├── NotificationSettingNames.cs
│ │ ├── NotificationSettingProvider.cs
│ │ ├── NotificationSeverity.cs
│ │ ├── NotificationSubscription.cs
│ │ ├── NotificationSubscriptionInfo.cs
│ │ ├── NotificationSubscriptionInfoExtensions.cs
│ │ ├── NotificationSubscriptionManager.cs
│ │ ├── NullNotificationStore.cs
│ │ ├── NullRealTimeNotifier.cs
│ │ ├── TenantNotification.cs
│ │ ├── TenantNotificationInfo.cs
│ │ ├── TenantNotificationInfoExtensions.cs
│ │ ├── UserNotification.cs
│ │ ├── UserNotificationInfo.cs
│ │ ├── UserNotificationInfoExtensions.cs
│ │ ├── UserNotificationInfoWithNotificationInfo.cs
│ │ ├── UserNotificationInfoWithNotificationInfoExtensions.cs
│ │ ├── UserNotificationManager.cs
│ │ └── UserNotificationState.cs
│ │ ├── ObjectMapping
│ │ ├── IObjectMapper.cs
│ │ └── NullObjectMapper.cs
│ │ ├── Orm
│ │ └── ISecondaryOrmRegistrar.cs
│ │ ├── PlugIns
│ │ ├── AssemblyFileListPlugInSource.cs
│ │ ├── FolderPlugInSource.cs
│ │ ├── IPlugInSource.cs
│ │ ├── IStudioXPlugInManager.cs
│ │ ├── PlugInSourceExtensions.cs
│ │ ├── PlugInSourceList.cs
│ │ ├── PlugInSourceListExtensions.cs
│ │ ├── PlugInTypeListSource.cs
│ │ └── StudioXPlugInManager.cs
│ │ ├── Properties
│ │ └── AssemblyInfo.cs
│ │ ├── RandomHelper.cs
│ │ ├── RealTime
│ │ ├── IOnlineClient.cs
│ │ ├── IOnlineClientManager.cs
│ │ ├── OnlineClient.cs
│ │ ├── OnlineClientEventArgs.cs
│ │ ├── OnlineClientExtensions.cs
│ │ ├── OnlineClientManager.cs
│ │ ├── OnlineClientManagerExtensions.cs
│ │ └── OnlineUserEventArgs.cs
│ │ ├── Reflection
│ │ ├── AssemblyHelper.cs
│ │ ├── Extensions
│ │ │ ├── AssemblyExtensions.cs
│ │ │ ├── MemberInfoExtensions.cs
│ │ │ └── TypeExtensions.cs
│ │ ├── IAssemblyFinder.cs
│ │ ├── ITypeFinder.cs
│ │ ├── ProxyHelper.cs
│ │ ├── ReflectionHelper.cs
│ │ ├── StudioXAssemblyFinder.cs
│ │ ├── TypeFinder.cs
│ │ └── TypeHelper.cs
│ │ ├── RegularGuidGenerator.cs
│ │ ├── Resources
│ │ └── Embedded
│ │ │ ├── EmbeddedFilePathHelper.cs
│ │ │ ├── EmbeddedResourceItem.cs
│ │ │ ├── EmbeddedResourceManager.cs
│ │ │ ├── EmbeddedResourceSet.cs
│ │ │ ├── EmbeddedResourcesConfiguration.cs
│ │ │ ├── IEmbeddedResourceManager.cs
│ │ │ └── IEmbeddedResourcesConfiguration.cs
│ │ ├── Runtime
│ │ ├── Caching
│ │ │ ├── CacheBase.cs
│ │ │ ├── CacheExtensions.cs
│ │ │ ├── CacheManagerBase.cs
│ │ │ ├── CacheManagerExtensions.cs
│ │ │ ├── Configuration
│ │ │ │ ├── CacheConfigurator.cs
│ │ │ │ ├── CachingConfiguration.cs
│ │ │ │ ├── ICacheConfigurator.cs
│ │ │ │ └── ICachingConfiguration.cs
│ │ │ ├── ICache.cs
│ │ │ ├── ICacheManager.cs
│ │ │ ├── ITypedCache.cs
│ │ │ ├── Memory
│ │ │ │ ├── StudioXMemoryCache.cs
│ │ │ │ ├── StudioXMemoryCacheManager.cs
│ │ │ │ └── StudioXMemoryCache_NetStandard.cs
│ │ │ ├── StudioXCacheNames.cs
│ │ │ ├── TypedCacheExtensions.cs
│ │ │ └── TypedCacheWrapper.cs
│ │ ├── IAmbientDataContext.cs
│ │ ├── IAmbientScopeProvider.cs
│ │ ├── Remoting
│ │ │ ├── AsyncLocalAmbientDataContext.cs
│ │ │ ├── CallContextAmbientDataContext.cs
│ │ │ └── DataContextAmbientScopeProvider.cs
│ │ ├── Security
│ │ │ ├── ClaimsIdentityExtensions.cs
│ │ │ ├── SimpleStringCipher.cs
│ │ │ ├── SimpleStringCipher_NetStandard.cs
│ │ │ └── StudioXClaimTypes.cs
│ │ ├── Serialization
│ │ │ └── BinarySerializationHelper.cs
│ │ ├── Session
│ │ │ ├── ClaimsStudioXSession.cs
│ │ │ ├── DefaultPrincipalAccessor.cs
│ │ │ ├── IPrincipalAccessor.cs
│ │ │ ├── IStudioXSession.cs
│ │ │ ├── NullStudioXSession.cs
│ │ │ ├── SessionOverride.cs
│ │ │ ├── StudioXSessionBase.cs
│ │ │ └── StudioXSessionExtensions.cs
│ │ └── Validation
│ │ │ ├── AlwaysValidValueValidator.cs
│ │ │ ├── BooleanValueValidator.cs
│ │ │ ├── CustomValidationContext.cs
│ │ │ ├── DisableValidationAttribute.cs
│ │ │ ├── EnableValidationAttribute.cs
│ │ │ ├── ICustomValidate.cs
│ │ │ ├── IShouldNormalize.cs
│ │ │ ├── IValueValidator.cs
│ │ │ ├── Interception
│ │ │ ├── MethodInvocationValidator.cs
│ │ │ ├── ValidationInterceptor.cs
│ │ │ └── ValidationInterceptorRegistrar.cs
│ │ │ ├── NumericValueValidator.cs
│ │ │ ├── StringValueValidator.cs
│ │ │ ├── StudioXValidationException.cs
│ │ │ ├── ValidatorAttribute.cs
│ │ │ └── ValueValidatorBase.cs
│ │ ├── SequentialGuidGenerator.cs
│ │ ├── Specifications
│ │ ├── AndNotSpecification.cs
│ │ ├── AndSpecification.cs
│ │ ├── AnySpecification.cs
│ │ ├── CompositeSpecification.cs
│ │ ├── ExpressionFuncExtender.cs
│ │ ├── ExpressionSpecification.cs
│ │ ├── ICompositeSpecification.cs
│ │ ├── ISpecification.cs
│ │ ├── ISpecificationParser.cs
│ │ ├── NoneSpecification.cs
│ │ ├── NotSpecification.cs
│ │ ├── OrSpecification.cs
│ │ ├── ParameterRebinder.cs
│ │ ├── Specification.cs
│ │ └── SpecificationExtensions.cs
│ │ ├── StudioX.csproj
│ │ ├── StudioXBootstrapper.cs
│ │ ├── StudioXConsts.cs
│ │ ├── StudioXException.cs
│ │ ├── StudioXInitializationException.cs
│ │ ├── StudioXKernelModule.cs
│ │ ├── StudioXServiceBase.cs
│ │ ├── Text
│ │ ├── FormattedStringValueExtracter.cs
│ │ └── Formatting
│ │ │ ├── FormatStringToken.cs
│ │ │ ├── FormatStringTokenType.cs
│ │ │ └── FormatStringTokenizer.cs
│ │ ├── Threading
│ │ ├── AsyncHelper.cs
│ │ ├── BackgroundWorkers
│ │ │ ├── BackgroundWorkerBase.cs
│ │ │ ├── BackgroundWorkerManager.cs
│ │ │ ├── IBackgroundWorker.cs
│ │ │ ├── IBackgroundWorkerManager.cs
│ │ │ └── PeriodicBackgroundWorkerBase.cs
│ │ ├── Extensions
│ │ │ └── LockExtensions.cs
│ │ ├── IRunnable.cs
│ │ ├── InternalAsyncHelper.cs
│ │ ├── RunnableBase.cs
│ │ ├── RunnableExtensions.cs
│ │ ├── StudioXTaskCache.cs
│ │ ├── ThreadCultureSanitizer.cs
│ │ └── Timers
│ │ │ └── StudioXTimer.cs
│ │ ├── Timing
│ │ ├── Clock.cs
│ │ ├── ClockProviders.cs
│ │ ├── DateTimeRange.cs
│ │ ├── IClockProvider.cs
│ │ ├── IDateTimeRange.cs
│ │ ├── LocalClockProvider.cs
│ │ ├── Timezone
│ │ │ ├── ITimeZoneConverter.cs
│ │ │ ├── Mapping
│ │ │ │ └── WindowsZones.xml
│ │ │ ├── TimeZoneConverter.cs
│ │ │ └── TimezoneHelper.cs
│ │ ├── TimingSettingNames.cs
│ │ ├── TimingSettingProvider.cs
│ │ ├── UnspecifiedClockProvider.cs
│ │ └── UtcClockProvider.cs
│ │ ├── Transactions
│ │ └── Extensions
│ │ │ └── IsolationLevelExtensions.cs
│ │ ├── UI
│ │ ├── Inputs
│ │ │ ├── CheckboxInputType.cs
│ │ │ ├── ComboboxInputType.cs
│ │ │ ├── IInputType.cs
│ │ │ ├── ILocalizableComboboxItem.cs
│ │ │ ├── ILocalizableComboboxItemSource.cs
│ │ │ ├── InputTypeAttribute.cs
│ │ │ ├── InputTypeBase.cs
│ │ │ ├── LocalizableComboboxItem.cs
│ │ │ ├── SingleLineStringInputType.cs
│ │ │ └── StaticLocalizableComboboxItemSource.cs
│ │ └── UserFriendlyException.cs
│ │ ├── UserIdentifier.cs
│ │ ├── UserIdentifierExtensions.cs
│ │ ├── Utils
│ │ └── Etc
│ │ │ └── NullDisposable.cs
│ │ ├── Web
│ │ └── Models
│ │ │ ├── DontWrapResultAttribute.cs
│ │ │ └── WrapResultAttribute.cs
│ │ └── Xml
│ │ └── Extensions
│ │ └── XmlExtensions.cs
├── test
│ ├── StudioX.AspNetCore.Tests
│ │ ├── App
│ │ │ ├── AppModule.cs
│ │ │ ├── AppServices
│ │ │ │ ├── NameConflictAppService.cs
│ │ │ │ └── ParameterTestAppService.cs
│ │ │ ├── Controllers
│ │ │ │ ├── AuthTest2Controller.cs
│ │ │ │ ├── AuthTestController.cs
│ │ │ │ ├── MultiTenancyTestController.cs
│ │ │ │ ├── NameConflictController.cs
│ │ │ │ ├── SimpleTestController.cs
│ │ │ │ └── ValidationTestController.cs
│ │ │ ├── Models
│ │ │ │ └── SimpleViewModel.cs
│ │ │ ├── MultiTenancy
│ │ │ │ └── TestTenantStore.cs
│ │ │ └── Startup.cs
│ │ ├── Mocks
│ │ │ └── MockAuditingStore.cs
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ ├── StudioX.AspNetCore.Tests.csproj
│ │ └── Tests
│ │ │ ├── AppTestBase.cs
│ │ │ ├── AuditLogTests.cs
│ │ │ ├── AuthTestControllerTests.cs
│ │ │ ├── MultiTenancyTests.cs
│ │ │ ├── NameConflictTests.cs
│ │ │ ├── ProxyScriptingTests.cs
│ │ │ ├── SimpleTestControllerTests.cs
│ │ │ ├── Utils
│ │ │ └── ArrayMactherTests.cs
│ │ │ └── ValidationTests.cs
│ ├── StudioX.AutoMapper.Tests
│ │ ├── AutoMapperInheritanceTests.cs
│ │ ├── AutoMappingTests.cs
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ └── StudioX.AutoMapper.Tests.csproj
│ ├── StudioX.Dapper.Tests
│ │ ├── DapperApplicationTestBase.cs
│ │ ├── DapperRepositoryTests.cs
│ │ ├── Entities
│ │ │ ├── Product.cs
│ │ │ └── ProductDetail.cs
│ │ ├── Mappings
│ │ │ ├── Product.cs
│ │ │ └── ProductDetail.cs
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ ├── SampleDapperApplicationDbContext.cs
│ │ ├── SampleDapperApplicationDbContext2.cs
│ │ ├── Scripts
│ │ │ └── CreateInitialTables.sql
│ │ ├── StudioX.Dapper.Tests.csproj
│ │ └── StudioXDapperTestModule.cs
│ ├── StudioX.EntityFramework.GraphDiff.Tests
│ │ ├── Entities
│ │ │ ├── MyDependentEntity.cs
│ │ │ ├── MyMainEntity.cs
│ │ │ └── MyUnmappedEntity.cs
│ │ ├── Mapping
│ │ │ └── EntityMappingManagerTests.cs
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ ├── StudioX.EntityFramework.GraphDiff.Tests.csproj
│ │ ├── StudioXEntityFrameworkGraphDiffTestBase.cs
│ │ └── StudioXEntityFrameworkGraphDiffTestModule.cs
│ ├── StudioX.EntityFramework.Tests
│ │ ├── DbContextTypeMatcherTests.cs
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ ├── Repositories
│ │ │ └── EntityFrameworkGenericRepositoryRegistrarTests.cs
│ │ ├── StudioX.EntityFramework.Tests.csproj
│ │ └── Utils
│ │ │ └── DateTimePropertyInfoFinderTests.cs
│ ├── StudioX.EntityFrameworkCore.Dapper.Tests
│ │ ├── Dapper
│ │ │ ├── BlogMap.cs
│ │ │ ├── CommentMap.cs
│ │ │ └── PostMap.cs
│ │ ├── Domain
│ │ │ ├── Blog.cs
│ │ │ ├── BlogUrlChangedEventData.cs
│ │ │ ├── Comment.cs
│ │ │ └── Post.cs
│ │ ├── Ef
│ │ │ ├── BloggingDbContext.cs
│ │ │ ├── IPostRepository.cs
│ │ │ └── PostRepository.cs
│ │ ├── StudioX.EntityFrameworkCore.Dapper.Tests.csproj
│ │ ├── StudioXEfCoreDapperTestApplicationBase.cs
│ │ ├── StudioXEfCoreDapperTestModule.cs
│ │ └── Tests
│ │ │ ├── DomainEventsTests.cs
│ │ │ ├── RepositoryTests.cs
│ │ │ └── TransactionTests.cs
│ ├── StudioX.EntityFrameworkCore.Tests
│ │ ├── Domain
│ │ │ ├── Blog.cs
│ │ │ ├── BlogUrlChangedEventData.cs
│ │ │ ├── Post.cs
│ │ │ └── Ticket.cs
│ │ ├── Ef
│ │ │ ├── BloggingDbContext.cs
│ │ │ ├── IPostRepository.cs
│ │ │ ├── PostRepository.cs
│ │ │ └── SupportDbContext.cs
│ │ ├── EntityFrameworkCoreModuleTestBase.cs
│ │ ├── EntityFrameworkCoreTestModule.cs
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ ├── StudioX.EntityFrameworkCore.Tests.csproj
│ │ └── Tests
│ │ │ ├── DomainEventsTests.cs
│ │ │ ├── EntityChangeEventsTests.cs
│ │ │ ├── EntityUtcDateTimeTests.cs
│ │ │ ├── ExplicitLoadingTests.cs
│ │ │ ├── ParallelQueryingTests.cs
│ │ │ ├── RepositoryResolveTests.cs
│ │ │ ├── RepositoryTests.cs
│ │ │ └── TransactionTests.cs
│ ├── StudioX.MailKit.Tests
│ │ ├── MailKitEmailSenderTests.cs
│ │ └── StudioX.MailKit.Tests.csproj
│ ├── StudioX.MemoryDb.Tests
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ ├── Repositories
│ │ │ └── MemoryRepositorySimpleTests.cs
│ │ └── StudioX.MemoryDb.Tests.csproj
│ ├── StudioX.Quartz.Tests
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ ├── QuartzTests.cs
│ │ ├── StudioX.Quartz.Tests.csproj
│ │ └── StudioXQuartzTestModule.cs
│ ├── StudioX.RedisCache.Tests
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ ├── ProtoBufRedisCacheSerializerTest.cs
│ │ ├── RedisCacheManagerTest.cs
│ │ └── StudioX.RedisCache.Tests.csproj
│ ├── StudioX.TestBase.SampleApplication.Tests
│ │ ├── Auditing
│ │ │ ├── AuditedEntityTests.cs
│ │ │ └── SimpleAuditingTest.cs
│ │ ├── Authorization
│ │ │ └── CrudServiceAuthTest.cs
│ │ ├── ContactLists
│ │ │ ├── ContactListMultiTenancyTests.cs
│ │ │ ├── MessagesMultiTenancyTests.cs
│ │ │ └── QueryingTests.cs
│ │ ├── Crud
│ │ │ └── CrudAppServiceTests.cs
│ │ ├── Domain
│ │ │ ├── Entities
│ │ │ │ └── Caching
│ │ │ │ │ └── EntityCacheInvalidationTests.cs
│ │ │ └── Uow
│ │ │ │ └── UnitOfWorkAttributeTests.cs
│ │ ├── EntityFramework
│ │ │ ├── EfRepositoryExtensionsTests.cs
│ │ │ ├── GraphDiff
│ │ │ │ └── GraphDiffExtensionsTests.cs
│ │ │ └── ObjectMaterializeTests.cs
│ │ ├── Features
│ │ │ └── FeatureSystemTests.cs
│ │ ├── GuidEntities
│ │ │ └── GuidEntityTests.cs
│ │ ├── Messages
│ │ │ └── MessageAppServiceTests.cs
│ │ ├── Net
│ │ │ └── Mail
│ │ │ │ └── SmtpEmailSenderResolveTest.cs
│ │ ├── People
│ │ │ ├── NestedTransactionTest.cs
│ │ │ ├── PersonAppServiceTests.cs
│ │ │ ├── PersonRepositoryGeneralNolockingTests.cs
│ │ │ ├── PersonRepositoryGeneralTests.cs
│ │ │ ├── PersonRepositorySoftDeleteTests.cs
│ │ │ ├── PersonRepositoryTestsForEntityChangeEvents.cs
│ │ │ └── TwoDbContextUowTests.cs
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ ├── SampleApplicationTestBase.cs
│ │ ├── SampleApplicationTestModule.cs
│ │ ├── Session
│ │ │ └── SessionTests.cs
│ │ ├── StudioX.TestBase.SampleApplication.Tests.csproj
│ │ └── Uow
│ │ │ ├── AsyncLocalTests.cs
│ │ │ ├── CustomUowConventionTests.cs
│ │ │ ├── UnitOfWorkClassAttributeTest.cs
│ │ │ ├── UnitOfWorkEventTests.cs
│ │ │ └── UnitOfWorkNestedTests.cs
│ ├── StudioX.TestBase.SampleApplication
│ │ ├── ContacLists
│ │ │ ├── ContactList.cs
│ │ │ ├── ContactListAppService.cs
│ │ │ ├── ContactListDto.cs
│ │ │ ├── IContactListAppService.cs
│ │ │ └── SampleFeatureProvider.cs
│ │ ├── Crm
│ │ │ ├── Address.cs
│ │ │ ├── AsyncCompanyAppService.cs
│ │ │ ├── Branch.cs
│ │ │ ├── Company.cs
│ │ │ ├── CompanyAppService.cs
│ │ │ └── CompanyDto.cs
│ │ ├── EntityFramework
│ │ │ ├── Repositories
│ │ │ │ └── SampleApplicationEfRepositoryBase.cs
│ │ │ ├── SampleApplicationDbContext.cs
│ │ │ └── SecondDbContext.cs
│ │ ├── GuidEntities
│ │ │ ├── TestEntityWithGuidPk.cs
│ │ │ └── TestEntityWithGuidPkAndDbGeneratedValue.cs
│ │ ├── Messages
│ │ │ ├── AsyncMessageAppService.cs
│ │ │ ├── GetMessagesWithFilterInput.cs
│ │ │ ├── IAsyncMessageAppService.cs
│ │ │ ├── Message.cs
│ │ │ ├── MessageAppService.cs
│ │ │ └── MessageDto.cs
│ │ ├── People
│ │ │ ├── Dto
│ │ │ │ ├── CreatePersonInput.cs
│ │ │ │ ├── GetPeopleInput.cs
│ │ │ │ └── PersonDto.cs
│ │ │ ├── IPersonAppService.cs
│ │ │ ├── Person.cs
│ │ │ └── PersonAppService.cs
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ ├── SampleApplicationModule.cs
│ │ └── StudioX.TestBase.SampleApplication.csproj
│ ├── StudioX.TestBase.Tests
│ │ ├── Application
│ │ │ └── Services
│ │ │ │ ├── ApplicationWithoutDbTests.cs
│ │ │ │ ├── ServiceWithDifferentInputsTests.cs
│ │ │ │ └── ValidationTests.cs
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ ├── Runtime
│ │ │ └── Session
│ │ │ │ └── SessionTests.cs
│ │ └── StudioX.TestBase.Tests.csproj
│ ├── StudioX.Tests
│ │ ├── Application
│ │ │ └── Navigation
│ │ │ │ ├── MenuTests.cs
│ │ │ │ └── NavigationTestCase.cs
│ │ ├── Auditing
│ │ │ └── AuditingHelperTests.cs
│ │ ├── Authorization
│ │ │ ├── AuthorizationHelperTests.cs
│ │ │ ├── AuthorizationInterceptorTests.cs
│ │ │ └── PermissionDefinitionTests.cs
│ │ ├── BackgroundJobs
│ │ │ └── InMemoryBackgroundJobStoreTests.cs
│ │ ├── Collections
│ │ │ ├── Extensions
│ │ │ │ └── ListExtensionsTests.cs
│ │ │ └── TypeListTest.cs
│ │ ├── Configuration
│ │ │ ├── DictionaryBasedConfigTest.cs
│ │ │ └── SettingManagerTests.cs
│ │ ├── Dependency
│ │ │ ├── CircularConstructorDependencyTests.cs
│ │ │ ├── CircularPropertyDependencyTests.cs
│ │ │ ├── DisposableDependencyObjectWrapperTests.cs
│ │ │ ├── GenericInjectionTests.cs
│ │ │ ├── Interceptors
│ │ │ │ └── InterceptorsTests.cs
│ │ │ ├── IocManagerLifeStyleTests.cs
│ │ │ ├── IocManagerOverrideTests.cs
│ │ │ ├── IocManagerSelfRegisterTests.cs
│ │ │ ├── IocManagerTests.cs
│ │ │ ├── PropertyInjectionTests.cs
│ │ │ ├── RegistrarAndResolverTests.cs
│ │ │ ├── ScopedIocResolverInjectTests.cs
│ │ │ ├── ScopedIocResolverTests.cs
│ │ │ ├── ShouldInitializeSimpleTests.cs
│ │ │ ├── SimpleDisposableObject.cs
│ │ │ ├── SimpleDisposableObject2.cs
│ │ │ ├── SimpleDisposableObject3.cs
│ │ │ └── UnicodeNamingTests.cs
│ │ ├── DisposeActionTest.cs
│ │ ├── Domain
│ │ │ ├── Entities
│ │ │ │ ├── Department.cs
│ │ │ │ ├── EntitiesTest.cs
│ │ │ │ ├── EntityHelperTests.cs
│ │ │ │ ├── ExtendableObjectTests.cs
│ │ │ │ ├── Manager.cs
│ │ │ │ └── Worker.cs
│ │ │ ├── Uow
│ │ │ │ ├── InnerUnitOfWorkCompleteHandleTest.cs
│ │ │ │ └── UnitOfWorkManagerTests.cs
│ │ │ └── Values
│ │ │ │ ├── Address.cs
│ │ │ │ └── ValueObjectSimpleTests.cs
│ │ ├── Events
│ │ │ └── Bus
│ │ │ │ ├── ActionBasedEventHandlerTest.cs
│ │ │ │ ├── EventBusExceptionTest.cs
│ │ │ │ ├── EventBusMultipleHandleTest.cs
│ │ │ │ ├── EventBusTestBase.cs
│ │ │ │ ├── GenericInheritanceTest.cs
│ │ │ │ ├── InheritanceTest.cs
│ │ │ │ ├── MyDerivedEventData.cs
│ │ │ │ ├── MySimpleEventData.cs
│ │ │ │ ├── MySimpleTransientEventHandler.cs
│ │ │ │ └── TransientDisposableEventHandlerTest.cs
│ │ ├── Experimental
│ │ │ └── GenericMethodCallTests.cs
│ │ ├── Extensions
│ │ │ ├── ComparableExtensionsTests.cs
│ │ │ ├── DateTimeRangeTests.cs
│ │ │ ├── DayOfWeekExtensionsTests.cs
│ │ │ ├── ObjectExtensionTest.cs
│ │ │ └── StringExtensionsTests.cs
│ │ ├── Json
│ │ │ ├── EntityDtoSerializationTests.cs
│ │ │ ├── JsonExtensionsTests.cs
│ │ │ └── JsonSerializationHelperTests.cs
│ │ ├── Localization
│ │ │ ├── DictionaryBasedLocalizationSourceTests.cs
│ │ │ ├── HumanizerOfUndefinedLocalizationSourceTests.cs
│ │ │ ├── Json
│ │ │ │ ├── JsonAndXmlSourceMixingTests.cs
│ │ │ │ ├── JsonEmbeddedFileLocalizationDictionaryProviderTests.cs
│ │ │ │ ├── JsonSources
│ │ │ │ │ ├── Lang-zh-CN.json
│ │ │ │ │ └── Lang.json
│ │ │ │ └── XmlSources
│ │ │ │ │ ├── Lang-zh-CN.xml
│ │ │ │ │ └── Lang.xml
│ │ │ ├── LocalizationDictionaryWithAddMethod.cs
│ │ │ ├── ResourceFileLocalizationSourceTests.cs
│ │ │ ├── TestResourceFiles
│ │ │ │ ├── MyTestResource.Designer.cs
│ │ │ │ ├── MyTestResource.resx
│ │ │ │ └── MyTestResource.tr.resx
│ │ │ ├── TestXmlFiles
│ │ │ │ ├── Test-tr.xml
│ │ │ │ └── Test.xml
│ │ │ ├── XmlEmbeddedFileLocalizationDictionaryProviderTests.cs
│ │ │ └── XmlLocalizationDictionaryBuilderTests.cs
│ │ ├── Modules
│ │ │ ├── PlugInModuleLoadingTests.cs
│ │ │ ├── StartupModuleToBeLastTests.cs
│ │ │ └── StudioXAssemblyFinderTests.cs
│ │ ├── Net
│ │ │ └── Mail
│ │ │ │ └── SmtpEmailSenderTests.cs
│ │ ├── Notifications
│ │ │ ├── NotificationDataSerializationTests.cs
│ │ │ └── NotificationPublisherTests.cs
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ ├── Reflection
│ │ │ ├── Extensions
│ │ │ │ └── MemberInfoExtensionsTests.cs
│ │ │ ├── ReflectionHelperTests.cs
│ │ │ └── TypeHelperTests.cs
│ │ ├── Resources
│ │ │ └── Embedded
│ │ │ │ ├── EmbeddedResourceTests.cs
│ │ │ │ └── MyResources
│ │ │ │ └── js
│ │ │ │ └── MyScriptFile1.js
│ │ ├── Runtime
│ │ │ ├── Caching
│ │ │ │ └── Memory
│ │ │ │ │ └── MemoryCacheManagerTests.cs
│ │ │ ├── Remoting
│ │ │ │ └── DataContextAmbientScopeProviderTests.cs
│ │ │ └── Security
│ │ │ │ └── SimpleStringCipherTests.cs
│ │ ├── Specifications
│ │ │ └── SpecificationTests.cs
│ │ ├── Startup
│ │ │ └── StudioXBootstraperTester.cs
│ │ ├── StudioX.Tests.csproj
│ │ ├── TestBaseWithLocalIocManager.cs
│ │ ├── Text
│ │ │ └── Formatting
│ │ │ │ ├── FormattedStringTokenizerTest.cs
│ │ │ │ └── FormattedStringValueExtracterTests.cs
│ │ ├── Threading
│ │ │ ├── AsyncHelperTests.cs
│ │ │ ├── InternalAsyncHelperTests.cs
│ │ │ └── LockExtensionsTests.cs
│ │ └── Timing
│ │ │ └── TimezoneHelperTests.cs
│ ├── StudioX.Web.Api.Tests
│ │ ├── AppServices
│ │ │ ├── IMyFirstAppService.cs
│ │ │ ├── MyFirstAppService.cs
│ │ │ └── MyIgnoreApiAttribute.cs
│ │ ├── Controllers
│ │ │ └── Dynamic
│ │ │ │ └── StudioXApiDateTimeConverterTests.cs
│ │ ├── DynamicApiController
│ │ │ ├── BatchBuilding
│ │ │ │ └── BatchDynamicApiControllerBuilderTest.cs
│ │ │ ├── DynamicApiControllerActionHelperTests.cs
│ │ │ └── ServiceNameValidationTests.cs
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ ├── StudioX.Web.Api.Tests.csproj
│ │ └── StudioXWebApiTestModule.cs
│ ├── StudioX.Web.Common.Tests
│ │ ├── Configuration
│ │ │ └── StudioXUserConfigurationBuilderTests.cs
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ ├── StudioX.Web.Common.Tests.csproj
│ │ ├── StudioXWebCommonTestModule.cs
│ │ └── Web
│ │ │ └── DefaultErrorInfoConverterTests.cs
│ ├── StudioX.Web.Mvc.Tests
│ │ ├── ModelBinders
│ │ │ └── Binders
│ │ │ │ └── StudioXMvcDateTimeBinderTests.cs
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ └── StudioX.Web.Mvc.Tests.csproj
│ └── StudioX.Web.Tests
│ │ ├── ErrorInfoBuilderTests.cs
│ │ ├── Localization
│ │ └── StudioXWebLocalizationTests.cs
│ │ ├── MultiTenancy
│ │ └── MultiTenancyScriptManagerTests.cs
│ │ ├── Navigation
│ │ └── NavigationScriptTests.cs
│ │ ├── Properties
│ │ └── AssemblyInfo.cs
│ │ └── StudioX.Web.Tests.csproj
└── tools
│ ├── gitlink
│ └── GitLink.exe
│ └── nuget
│ └── nuget.exe
└── module-zero
├── .gitignore
├── StudioX.Zero.sln
├── appveyor.yml
├── common.props
├── src
├── StudioX.Zero.AspNetCore
│ ├── AspNetCoreUserTokenProviderAccessor.cs
│ ├── DataProtectorUserTokenProvider.cs
│ ├── ExternalLoginUserInfo.cs
│ ├── IStudioXZeroAspNetCoreConfiguration.cs
│ ├── Internal
│ │ └── StreamExtensions.cs
│ ├── ModuleZeroAspNetCoreConfigurationExtensions.cs
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ ├── SignInStatus.cs
│ ├── StudioX.Zero.AspNetCore.csproj
│ ├── StudioXSignInManager.cs
│ ├── StudioXZeroAspNetCoreConfiguration.cs
│ ├── StudioXZeroAspNetCoreModule.cs
│ └── StudioXZeroClaimsIdentityHelper.cs
├── StudioX.Zero.Common
│ ├── Application
│ │ ├── Editions
│ │ │ ├── Edition.cs
│ │ │ ├── EditionfeatureCacheItem.cs
│ │ │ └── StudioXEditionManager.cs
│ │ └── Features
│ │ │ ├── EditionFeatureSetting.cs
│ │ │ ├── FeatureSetting.cs
│ │ │ ├── IStudioXZeroFeatureValueStore.cs
│ │ │ └── StudioXFeatureValueStore.cs
│ ├── Auditing
│ │ ├── AuditLog.cs
│ │ └── AuditingStore.cs
│ ├── Authorization
│ │ ├── PermissionGrantInfo.cs
│ │ ├── PermissionSetting.cs
│ │ ├── Roles
│ │ │ ├── IRolePermissionStore.cs
│ │ │ ├── PermissionEqualityComparer.cs
│ │ │ ├── RoleClaim.cs
│ │ │ ├── RolePermissionCacheItem.cs
│ │ │ ├── RolePermissionSetting.cs
│ │ │ ├── StudioXRoleBase.cs
│ │ │ └── StudioXRolePermissionCacheItemInvalidator.cs
│ │ ├── StudioXLoginResultType.cs
│ │ └── Users
│ │ │ ├── DefaultExternalAuthenticationSource.cs
│ │ │ ├── IExternalAuthenticationSource.cs
│ │ │ ├── IUserPermissionStore.cs
│ │ │ ├── StudioXUserBase.cs
│ │ │ ├── StudioXUserPermissionCacheItemInvalidator.cs
│ │ │ ├── UserAccount.cs
│ │ │ ├── UserAccountSynchronizer.cs
│ │ │ ├── UserClaim.cs
│ │ │ ├── UserLogin.cs
│ │ │ ├── UserLoginAttempt.cs
│ │ │ ├── UserOrganizationUnit.cs
│ │ │ ├── UserOrganizationUnitRemover.cs
│ │ │ ├── UserPermissionCacheItem.cs
│ │ │ ├── UserPermissionSetting.cs
│ │ │ ├── UserRole.cs
│ │ │ └── UserRoleRemover.cs
│ ├── BackgroundJobs
│ │ └── BackgroundJobStore.cs
│ ├── Configuration
│ │ ├── Setting.cs
│ │ ├── SettingExtensions.cs
│ │ └── SettingStore.cs
│ ├── Localization
│ │ ├── ApplicationLanguage.cs
│ │ ├── ApplicationLanguageManager.cs
│ │ ├── ApplicationLanguageProvider.cs
│ │ ├── ApplicationLanguageText.cs
│ │ ├── ApplicationLanguageTextManager.cs
│ │ ├── EmptyDictionary.cs
│ │ ├── IApplicationLanguageManager.cs
│ │ ├── IApplicationLanguageTextManager.cs
│ │ ├── IMultiTenantLocalizationDictionary.cs
│ │ ├── IMultiTenantLocalizationSource.cs
│ │ ├── MultiTenantLocalizationDictionary.cs
│ │ ├── MultiTenantLocalizationDictionaryCacheCleaner.cs
│ │ ├── MultiTenantLocalizationDictionaryCacheHelper.cs
│ │ ├── MultiTenantLocalizationDictionaryProvider.cs
│ │ └── MultiTenantLocalizationSource.cs
│ ├── MultiTenancy
│ │ ├── DbPerTenantConnectionStringResolveArgs.cs
│ │ ├── IDbPerTenantConnectionStringResolver.cs
│ │ ├── IStudioXZeroDbMigrator.cs
│ │ ├── ITenantCache.cs
│ │ ├── StudioXTenant.cs
│ │ ├── StudioXTenantBase.cs
│ │ ├── StudioXTenantManager.cs
│ │ ├── StudioXTenantManagerExtensions.cs
│ │ ├── TenantCache.cs
│ │ ├── TenantCacheItem.cs
│ │ ├── TenantCacheManagerExtensions.cs
│ │ ├── TenantFeatureCacheItem.cs
│ │ ├── TenantFeatureCacheItemInvalidator.cs
│ │ ├── TenantFeatureSetting.cs
│ │ └── TenantStore.cs
│ ├── Notifications
│ │ └── NotificationStore.cs
│ ├── Organizations
│ │ ├── IMayHaveOrganizationUnit.cs
│ │ ├── IMustHaveOrganizationUnit.cs
│ │ ├── IOrganizationUnitSettings.cs
│ │ ├── OrganizationUnit.cs
│ │ ├── OrganizationUnitManager.cs
│ │ ├── OrganizationUnitManagerExtensions.cs
│ │ └── OrganizationUnitSettings.cs
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ ├── Runtime
│ │ ├── Caching
│ │ │ └── StudioXZeroCacheManagerExtensions.cs
│ │ └── Session
│ │ │ └── StudioXSessionExtensions.cs
│ ├── StudioX.Zero.Common.csproj
│ └── Zero
│ │ ├── Configuration
│ │ ├── ILanguageManagementConfig.cs
│ │ ├── IRoleManagementConfig.cs
│ │ ├── IStudioXZeroConfig.cs
│ │ ├── IStudioXZeroEntityTypes.cs
│ │ ├── IUserManagementConfig.cs
│ │ ├── LanguageManagementConfig.cs
│ │ ├── ModuleZeroConfigurationExtensions.cs
│ │ ├── RoleManagementConfig.cs
│ │ ├── StaticRoleDefinition.cs
│ │ ├── StudioXZeroConfig.cs
│ │ ├── StudioXZeroEntityTypes.cs
│ │ ├── StudioXZeroSettingNames.cs
│ │ ├── StudioXZeroSettingProvider.cs
│ │ └── UserManagementConfig.cs
│ │ ├── Localization
│ │ └── Source
│ │ │ ├── StudioXZero-de.xml
│ │ │ ├── StudioXZero-fa.xml
│ │ │ ├── StudioXZero-fr.xml
│ │ │ ├── StudioXZero-it.xml
│ │ │ ├── StudioXZero-lt.xml
│ │ │ ├── StudioXZero-lv.xml
│ │ │ ├── StudioXZero-pt-BR.xml
│ │ │ ├── StudioXZero-ru.xml
│ │ │ ├── StudioXZero-tr.xml
│ │ │ ├── StudioXZero-zh-CN.xml
│ │ │ └── StudioXZero.xml
│ │ ├── StudioXZeroCommonModule.cs
│ │ └── StudioXZeroConsts.cs
├── StudioX.Zero.EntityFramework
│ ├── Data
│ │ └── ConnectionStringHelper.cs
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ ├── StudioX.Zero.EntityFramework.csproj
│ └── Zero
│ │ └── EntityFramework
│ │ ├── DbPerTenantConnectionStringResolver.cs
│ │ ├── IMultiTenantSeed.cs
│ │ ├── StudioXZeroCommonDbContext.cs
│ │ ├── StudioXZeroDbContext.cs
│ │ ├── StudioXZeroDbMigrator.cs
│ │ ├── StudioXZeroDbModelBuilderExtensions.cs
│ │ ├── StudioXZeroEntityFrameworkModule.cs
│ │ ├── StudioXZeroHostDbContext.cs
│ │ └── StudioXZeroTenantDbContext.cs
├── StudioX.Zero.EntityFrameworkCore
│ ├── Data
│ │ └── ConnectionStringHelper.cs
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ ├── StudioX.Zero.EntityFrameworkCore.csproj
│ └── Zero
│ │ └── EntityFrameworkCore
│ │ ├── DbPerTenantConnectionStringResolver.cs
│ │ ├── IMultiTenantSeed.cs
│ │ ├── StudioXZeroCommonDbContext.cs
│ │ ├── StudioXZeroDbContext.cs
│ │ ├── StudioXZeroDbMigrator.cs
│ │ ├── StudioXZeroDbModelBuilderExtensions.cs
│ │ ├── StudioXZeroEntityFrameworkCoreModule.cs
│ │ ├── StudioXZeroHostDbContext.cs
│ │ └── StudioXZeroTenantDbContext.cs
├── StudioX.Zero.Ldap
│ ├── Ldap
│ │ ├── Authentication
│ │ │ └── LdapAuthenticationSource.cs
│ │ ├── Configuration
│ │ │ ├── ILdapSettings.cs
│ │ │ ├── IStudioXZeroLdapModuleConfig.cs
│ │ │ ├── LdapSettingNames.cs
│ │ │ ├── LdapSettingProvider.cs
│ │ │ ├── LdapSettings.cs
│ │ │ ├── ModuleZeroLdapConfigurationExtensions.cs
│ │ │ └── StudioXZeroLdapModuleConfig.cs
│ │ ├── Localization
│ │ │ └── Source
│ │ │ │ ├── StudioXZero-fa.xml
│ │ │ │ ├── StudioXZero-lt.xml
│ │ │ │ ├── StudioXZero-lv.xml
│ │ │ │ ├── StudioXZero-tr.xml
│ │ │ │ ├── StudioXZero-zh-CN.xml
│ │ │ │ └── StudioXZero.xml
│ │ └── StudioXZeroLdapModule.cs
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ └── StudioX.Zero.Ldap.csproj
├── StudioX.Zero.Owin
│ ├── Authorization
│ │ └── StudioXSignInManager.cs
│ ├── Owin
│ │ ├── OwinUserTokenProviderAccessor.cs
│ │ └── StudioXZeroOwinAppBuilderExtensions.cs
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ ├── StudioX.Zero.Owin.csproj
│ └── StudioXZeroOwinModule.cs
├── StudioX.Zero
│ ├── Authorization
│ │ ├── PermissionChecker.cs
│ │ ├── Roles
│ │ │ ├── StudioXRole.cs
│ │ │ ├── StudioXRoleManager.cs
│ │ │ └── StudioXRoleStore.cs
│ │ ├── StudioXLoginManager.cs
│ │ ├── StudioXLoginManagerExtensions.cs
│ │ └── Users
│ │ │ ├── IUserTokenProviderAccessor.cs
│ │ │ ├── NullUserTokenProviderAccessor.cs
│ │ │ ├── StudioXLoginResult.cs
│ │ │ ├── StudioXUser.cs
│ │ │ ├── StudioXUserManager.cs
│ │ │ ├── StudioXUserManagerExtensions.cs
│ │ │ └── StudioXUserStore.cs
│ ├── IdentityFramework
│ │ ├── IdentityEmailService.cs
│ │ ├── IdentityResultExtensions.cs
│ │ └── StudioXIdentityResult.cs
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ ├── StudioX.Zero.csproj
│ └── Zero
│ │ ├── Localization
│ │ └── SourceExt
│ │ │ ├── StudioXZero-de.xml
│ │ │ ├── StudioXZero-fa.xml
│ │ │ ├── StudioXZero-fr.xml
│ │ │ ├── StudioXZero-it.xml
│ │ │ ├── StudioXZero-lt.xml
│ │ │ ├── StudioXZero-lv.xml
│ │ │ ├── StudioXZero-pt-BR.xml
│ │ │ ├── StudioXZero-ru.xml
│ │ │ ├── StudioXZero-tr.xml
│ │ │ ├── StudioXZero-zh-CN.xml
│ │ │ └── StudioXZero.xml
│ │ └── StudioXZeroCoreModule.cs
├── StudioX.ZeroCore.EntityFrameworkCore
│ ├── Data
│ │ └── ConnectionStringHelper.cs
│ ├── StudioX.ZeroCore.EntityFrameworkCore.csproj
│ └── Zero
│ │ └── EntityFrameworkCore
│ │ ├── DbPerTenantConnectionStringResolver.cs
│ │ ├── IMultiTenantSeed.cs
│ │ ├── StudioXZeroCommonDbContext.cs
│ │ ├── StudioXZeroCoreEntityFrameworkCoreModule.cs
│ │ ├── StudioXZeroDbContext.cs
│ │ ├── StudioXZeroDbMigrator.cs
│ │ ├── StudioXZeroDbModelBuilderExtensions.cs
│ │ ├── StudioXZeroHostDbContext.cs
│ │ └── StudioXZeroTenantDbContext.cs
├── StudioX.ZeroCore.IdentityServer4.EntityFrameworkCore
│ ├── IdentityServer4
│ │ ├── IStudioXPersistedGrantDbContext.cs
│ │ ├── StudioXZeroCoreIdentityServerEntityFrameworkCoreConfigurationExtensions.cs
│ │ ├── StudioXZeroCoreIdentityServerEntityFrameworkCoreModule.cs
│ │ └── StudioXZeroIdentityServerBuilderEntityFrameworkCoreExtensions.cs
│ └── StudioX.ZeroCore.IdentityServer4.EntityFrameworkCore.csproj
├── StudioX.ZeroCore.IdentityServer4
│ ├── IdentityServer4
│ │ ├── PersistedGrantEntity.cs
│ │ ├── StudioXClaimsService.cs
│ │ ├── StudioXIdentityServerOptions.cs
│ │ ├── StudioXIdentityServerUserClaimsFactory.cs
│ │ ├── StudioXPersistentGrantStore.cs
│ │ ├── StudioXProfileService.cs
│ │ ├── StudioXResourceOwnerPasswordValidator.cs
│ │ ├── StudioXZeroCoreIdentityServerModule.cs
│ │ └── StudioXZeroIdentityServerBuilderExtensions.cs
│ └── StudioX.ZeroCore.IdentityServer4.csproj
└── StudioX.ZeroCore
│ ├── Authorization
│ ├── PermissionChecker.cs
│ ├── Roles
│ │ ├── StudioXRole.cs
│ │ ├── StudioXRoleManager.cs
│ │ └── StudioXRoleStore.cs
│ ├── StudioXLoginManager.cs
│ ├── StudioXLoginManagerExtensions.cs
│ ├── StudioXSecurityStampValidator.cs
│ ├── StudioXSignInManager.cs
│ ├── StudioXUserClaimsPrincipalFactory.cs
│ ├── StudioXZeroClaimsIdentityHelper.cs
│ └── Users
│ │ ├── StudioXLoginResult.cs
│ │ ├── StudioXUser.cs
│ │ ├── StudioXUserManager.cs
│ │ ├── StudioXUserManagerExtensions.cs
│ │ ├── StudioXUserStore.cs
│ │ └── UserToken.cs
│ ├── IdentityFramework
│ ├── IdentityResultExtensions.cs
│ ├── StudioXIdentityBuilder.cs
│ ├── StudioXZeroIdentityBuilderExtensions.cs
│ └── StudioXZeroServiceCollectionExtensions.cs
│ ├── StudioX.ZeroCore.csproj
│ └── Zero
│ ├── CollectionExtensions.cs
│ ├── Localization
│ └── SourceExt
│ │ ├── StudioXZero-de.xml
│ │ ├── StudioXZero-fa.xml
│ │ ├── StudioXZero-fr.xml
│ │ ├── StudioXZero-it.xml
│ │ ├── StudioXZero-lt.xml
│ │ ├── StudioXZero-lv.xml
│ │ ├── StudioXZero-pt-BR.xml
│ │ ├── StudioXZero-ru.xml
│ │ ├── StudioXZero-tr.xml
│ │ ├── StudioXZero-zh-CN.xml
│ │ └── StudioXZero.xml
│ └── StudioXZeroCoreModule.cs
├── test
├── StudioX.Zero.ConsoleApp.EntityFrameworkCore
│ ├── Program.cs
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ ├── StudioX.Zero.ConsoleApp.EntityFrameworkCore.csproj
│ └── log4net.config
├── StudioX.Zero.SampleApp.EntityFramework
│ ├── EntityFramework
│ │ ├── AppDbContext.cs
│ │ ├── AppEfRepositoryBase.cs
│ │ └── SampleAppEntityFrameworkModule.cs
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ └── StudioX.Zero.SampleApp.EntityFramework.csproj
├── StudioX.Zero.SampleApp.EntityFrameworkCore.Tests
│ ├── EfCore_Tests.cs
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ ├── SampleAppTestModule.cs
│ ├── SimpleTaskAppTestBase.cs
│ └── StudioX.Zero.SampleApp.EntityFrameworkCore.Tests.csproj
├── StudioX.Zero.SampleApp.EntityFrameworkCore
│ ├── AppDbContext.cs
│ ├── AppEfRepositoryBase.cs
│ ├── Migrations
│ │ ├── 20170611164854_InitialCreate.Designer.cs
│ │ ├── 20170611164854_InitialCreate.cs
│ │ └── AppDbContextModelSnapshot.cs
│ ├── Program.cs
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ ├── SampleAppEntityFrameworkCoreModule.cs
│ ├── StudioX.Zero.SampleApp.EntityFrameworkCore.csproj
│ ├── StudioXProjectNameDbContextFactory.cs
│ └── TestDataBuilders
│ │ ├── HostDatas
│ │ ├── HostDataBuilder.cs
│ │ ├── HostTenantsBuilder.cs
│ │ └── HostUserBuilder.cs
│ │ └── TenantDatas
│ │ ├── TenantDataBuilder.cs
│ │ └── TenantUserBuilder.cs
├── StudioX.Zero.SampleApp.Tests
│ ├── Application
│ │ └── Editions
│ │ │ └── EditionAndFeatureTests.cs
│ ├── Configuration
│ │ └── SettingsTests.cs
│ ├── IdentityFramework
│ │ └── IdentityResultHelper_Tests.cs
│ ├── Ldap
│ │ └── LdapAuthenticationSourceTests.cs
│ ├── Localization
│ │ ├── ApplicationLanguageManagerTests.cs
│ │ ├── ApplicationLanguageProvider_Tests.cs
│ │ └── SimpleLocalizationTests.cs
│ ├── MultiTenancy
│ │ ├── TenantCacheTests.cs
│ │ ├── TenantFeatureTests.cs
│ │ ├── TenantManagerTests.cs
│ │ └── TenantStoreTests.cs
│ ├── Organizations
│ │ ├── OrganizationUnitManagerTests.cs
│ │ └── OrganizationUnitTests.cs
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ ├── Roles
│ │ ├── RoleManagerDeleteTests.cs
│ │ └── RoleManagerTests.cs
│ ├── SampleAppTestBase.cs
│ ├── SampleAppTestModule.cs
│ ├── StudioX.Zero.SampleApp.Tests.csproj
│ ├── TestDatas
│ │ ├── InitialTenantsBuilder.cs
│ │ ├── InitialTestDataBuilder.cs
│ │ ├── InitialTestLanguagesBuilder.cs
│ │ ├── InitialTestOrganizationUnitsBuilder.cs
│ │ ├── InitialUserOrganizationUnitsBuilder.cs
│ │ └── InitialUsersBuilder.cs
│ └── Users
│ │ ├── UserAccountSynchronizerTests.cs
│ │ ├── UserAppServiceTests.cs
│ │ ├── UserLoginExternalAuthenticationSourcesTest.cs
│ │ ├── UserLoginHelper.cs
│ │ ├── UserLoginTests.cs
│ │ ├── UserManagerLockoutTests.cs
│ │ ├── UserManagerPermissionTests.cs
│ │ ├── UserManagerSecurityStampTests.cs
│ │ ├── UserManagerUpdateTests.cs
│ │ ├── UserOrganizationUnitTests.cs
│ │ ├── UserRepositoryTests.cs
│ │ └── UserRoleTests.cs
├── StudioX.Zero.SampleApp
│ ├── Authorization
│ │ ├── AppAuthorizationProvider.cs
│ │ ├── AppLoginManager.cs
│ │ └── AppPermissionChecker.cs
│ ├── Configuration
│ │ └── AppSettingProvider.cs
│ ├── Editions
│ │ └── EditionManager.cs
│ ├── Features
│ │ ├── AppFeatureProvider.cs
│ │ └── FeatureValueStore.cs
│ ├── MultiTenancy
│ │ ├── Tenant.cs
│ │ └── TenantManager.cs
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ ├── Roles
│ │ ├── Role.cs
│ │ ├── RoleManager.cs
│ │ └── RoleStore.cs
│ ├── SampleAppModule.cs
│ ├── StudioX.Zero.SampleApp.csproj
│ └── Users
│ │ ├── Dto
│ │ ├── CreateUserInput.cs
│ │ ├── ResetPasswordInput.cs
│ │ └── UpdateUserInput.cs
│ │ ├── IUserAppService.cs
│ │ ├── User.cs
│ │ ├── UserAppService.cs
│ │ ├── UserManager.cs
│ │ └── UserStore.cs
├── StudioX.ZeroCore.IdentityServer4.Tests
│ ├── IdentityServer4
│ │ ├── DependencyInjectionTests.cs
│ │ ├── IdentityServerConfig.cs
│ │ ├── StudioXZeroIdentityServerTestBase.cs
│ │ └── StudioXZeroIdentityServerTestModule.cs
│ └── StudioX.ZeroCore.IdentityServer4.Tests.csproj
├── StudioX.ZeroCore.SampleApp
│ ├── Application
│ │ ├── AppAuthorizationProvider.cs
│ │ ├── AppConsts.cs
│ │ ├── AppFeatureProvider.cs
│ │ ├── AppFeatures.cs
│ │ ├── AppLocalizationHelper.cs
│ │ ├── AppStaticRoleNames.cs
│ │ └── Users
│ │ │ ├── IUserAppService.cs
│ │ │ ├── UserAppService.cs
│ │ │ └── UserDto.cs
│ ├── Core
│ │ ├── Role.cs
│ │ ├── ServicesCollectionDependencyRegistrar.cs
│ │ ├── Tenant.cs
│ │ ├── User.cs
│ │ └── _Service_Overrides.cs
│ ├── EntityFramework
│ │ ├── SampleAppDbContext.cs
│ │ ├── Seed
│ │ │ ├── Host
│ │ │ │ ├── DefaultEditionCreator.cs
│ │ │ │ ├── DefaultLanguagesCreator.cs
│ │ │ │ ├── DefaultSettingsCreator.cs
│ │ │ │ ├── HostRoleAndUserCreator.cs
│ │ │ │ └── InitialHostDbBuilder.cs
│ │ │ ├── SeedHelper.cs
│ │ │ └── Tenants
│ │ │ │ ├── DefaultTenantBuilder.cs
│ │ │ │ └── TenantRoleAndUserBuilder.cs
│ │ └── StudioXZeroTemplateDbContextConfigurer.cs
│ ├── StudioX.ZeroCore.SampleApp.csproj
│ └── StudioXZeroCoreSampleAppModule.cs
└── StudioX.ZeroCore.Tests
│ ├── StudioX.ZeroCore.Tests.csproj
│ └── Zero
│ ├── DependencyInjectionTests.cs
│ ├── Roles
│ └── RoleStoreTests.cs
│ ├── StudioXZeroTestBase.cs
│ ├── StudioXZeroTestModule.cs
│ ├── TestData
│ ├── TestDataBuilder.cs
│ ├── TestOrganizationUnitsBuilder.cs
│ └── TestRolesBuilder.cs
│ ├── TestServiceCollectionRegistrar.cs
│ └── Users
│ └── UserAppService_Tests.cs
└── tools
├── gitlink
└── GitLink.exe
└── nuget
└── nuget.exe
/.gitignore:
--------------------------------------------------------------------------------
1 | # See http://help.github.com/ignore-files/ for more about ignoring files.
2 |
3 | # IDEs and editors
4 | .vs/
5 | obj/
6 | bin/
7 | aspnet-core/src/StudioX.Boilerplate.Web.Host/App_Data/Logs/
8 | aspnet-core/src/StudioX.Boilerplate.Web.Mvc/App_Data/Logs/
9 | aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/lib/
10 |
11 | # Database files
12 | *.mdf
13 | *.ldf
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
--------------------------------------------------------------------------------
/_screenshots/home.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/studioxsoftware/studiox/73da8d7ec7f952e423c423192063ca4398eafcc6/_screenshots/home.png
--------------------------------------------------------------------------------
/_screenshots/login.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/studioxsoftware/studiox/73da8d7ec7f952e423c423192063ca4398eafcc6/_screenshots/login.png
--------------------------------------------------------------------------------
/_screenshots/swagger.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/studioxsoftware/studiox/73da8d7ec7f952e423c423192063ca4398eafcc6/_screenshots/swagger.png
--------------------------------------------------------------------------------
/_screenshots/user-create-modal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/studioxsoftware/studiox/73da8d7ec7f952e423c423192063ca4398eafcc6/_screenshots/user-create-modal.png
--------------------------------------------------------------------------------
/angular/.editorconfig:
--------------------------------------------------------------------------------
1 | # Editor configuration, see http://editorconfig.org
2 | root = true
3 |
4 | [*]
5 | charset = utf-8
6 | indent_style = space
7 | insert_final_newline = true
8 | trim_trailing_whitespace = true
9 |
10 | [*.md]
11 | max_line_length = off
12 | trim_trailing_whitespace = false
13 |
--------------------------------------------------------------------------------
/angular/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "typescript.tsdk": "./node_modules/typescript/lib"
3 | }
--------------------------------------------------------------------------------
/angular/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM nginx
2 |
3 | COPY . /usr/share/nginx/html
--------------------------------------------------------------------------------
/angular/debug.log:
--------------------------------------------------------------------------------
1 | [0609/100417:ERROR:tcp_listen_socket.cc(76)] Could not bind socket to 127.0.0.1:6004
2 | [0609/100417:ERROR:node_debugger.cc(86)] Cannot start debugger server
3 |
--------------------------------------------------------------------------------
/angular/e2e/app.e2e-spec.ts:
--------------------------------------------------------------------------------
1 | import { StudioXBoilerplateTemplatePage } from './app.po';
2 |
3 | describe('StudioX Boilerplate App', function() {
4 | let page: StudioXBoilerplateTemplatePage;
5 |
6 | beforeEach(() => {
7 | page = new StudioXBoilerplateTemplatePage();
8 | });
9 |
10 | it('should display message saying app works', () => {
11 | page.navigateTo();
12 | expect(page.getParagraphText()).toEqual('app works!');
13 | });
14 | });
15 |
--------------------------------------------------------------------------------
/angular/e2e/app.po.ts:
--------------------------------------------------------------------------------
1 | import { browser, element, by } from 'protractor';
2 |
3 | export class StudioXBoilerplateTemplatePage {
4 | navigateTo() {
5 | return browser.get('/');
6 | }
7 |
8 | getParagraphText() {
9 | return element(by.css('app-root h1')).getText();
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/angular/e2e/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compileOnSave": false,
3 | "compilerOptions": {
4 | "declaration": false,
5 | "emitDecoratorMetadata": true,
6 | "experimentalDecorators": true,
7 | "lib": [
8 | "es2016"
9 | ],
10 | "module": "commonjs",
11 | "moduleResolution": "node",
12 | "outDir": "../dist/out-tsc-e2e",
13 | "sourceMap": true,
14 | "target": "es6",
15 | "typeRoots": [
16 | "../node_modules/@types"
17 | ]
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/angular/nswag/refresh.bat:
--------------------------------------------------------------------------------
1 | "..\node_modules\.bin\nswag" run
--------------------------------------------------------------------------------
/angular/nswag/service.extensions.ts:
--------------------------------------------------------------------------------
1 | import * as moment from 'moment';
--------------------------------------------------------------------------------
/angular/src/account/account.component.less:
--------------------------------------------------------------------------------
1 | .content.account-forms {
2 | margin-top: 10px;
3 | }
4 |
5 | .content.tenant-change-box {
6 | padding: 16px 16px 0px 16px;
7 | margin: 120px auto 0px auto;
8 | max-width: 400px;
9 |
10 | a {
11 | cursor: pointer;
12 | }
13 | }
14 |
15 | div#LoginArea {
16 | margin-top: 0px !important;
17 | max-width: 400px;
18 | margin: 120px auto 10px auto;
19 | }
--------------------------------------------------------------------------------
/angular/src/account/layout/account-languages.component.html:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/angular/src/account/layout/account-languages.component.less:
--------------------------------------------------------------------------------
1 | .account-language-switch-list {
2 | list-style: none;
3 | margin: 0px;
4 | padding: 10px;
5 |
6 | > li {
7 | display: inline;
8 | margin: 0px;
9 | padding: 0px;
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/angular/src/account/login/login.component.less:
--------------------------------------------------------------------------------
1 | .social-icons {
2 | padding-left: 0px;
3 |
4 | li {
5 | display: inline-block;
6 | margin-right: 5px;
7 |
8 | a {
9 | width: 40px;
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/angular/src/app/layout/sidebar-footer.component.html:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | Version {{versionText}}
7 |
8 |
--------------------------------------------------------------------------------
/angular/src/app/layout/topbar.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, Injector, ViewEncapsulation } from '@angular/core';
2 | import { AppComponentBase } from '@shared/app-component-base';
3 |
4 | @Component({
5 | templateUrl: './topbar.component.html',
6 | selector: 'top-bar',
7 | encapsulation: ViewEncapsulation.None
8 | })
9 | export class TopBarComponent extends AppComponentBase {
10 |
11 | constructor(
12 | injector: Injector
13 | ) {
14 | super(injector);
15 | }
16 | }
--------------------------------------------------------------------------------
/angular/src/assets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/studioxsoftware/studiox/73da8d7ec7f952e423c423192063ca4398eafcc6/angular/src/assets/.gitkeep
--------------------------------------------------------------------------------
/angular/src/assets/app-logo-small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/studioxsoftware/studiox/73da8d7ec7f952e423c423192063ca4398eafcc6/angular/src/assets/app-logo-small.png
--------------------------------------------------------------------------------
/angular/src/assets/appconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "remoteServiceBaseUrl": "http://localhost:21021",
3 | "appBaseUrl": "http://localhost:4200"
4 | }
--------------------------------------------------------------------------------
/angular/src/assets/fonts/material-icons/materialicons.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/studioxsoftware/studiox/73da8d7ec7f952e423c423192063ca4398eafcc6/angular/src/assets/fonts/material-icons/materialicons.woff2
--------------------------------------------------------------------------------
/angular/src/assets/fonts/roboto/-2n2p-_Y08sg57CNWQfKNvesZW2xOQ-xsNqO47m55DA.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/studioxsoftware/studiox/73da8d7ec7f952e423c423192063ca4398eafcc6/angular/src/assets/fonts/roboto/-2n2p-_Y08sg57CNWQfKNvesZW2xOQ-xsNqO47m55DA.woff2
--------------------------------------------------------------------------------
/angular/src/assets/fonts/roboto/77FXFjRbGzN4aCrSFhlh3hJtnKITppOI_IvcXXDNrsc.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/studioxsoftware/studiox/73da8d7ec7f952e423c423192063ca4398eafcc6/angular/src/assets/fonts/roboto/77FXFjRbGzN4aCrSFhlh3hJtnKITppOI_IvcXXDNrsc.woff2
--------------------------------------------------------------------------------
/angular/src/assets/fonts/roboto/97uahxiqZRoncBaCEI3aWxJtnKITppOI_IvcXXDNrsc.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/studioxsoftware/studiox/73da8d7ec7f952e423c423192063ca4398eafcc6/angular/src/assets/fonts/roboto/97uahxiqZRoncBaCEI3aWxJtnKITppOI_IvcXXDNrsc.woff2
--------------------------------------------------------------------------------
/angular/src/assets/fonts/roboto/CWB0XYA8bzo0kSThX0UTuA.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/studioxsoftware/studiox/73da8d7ec7f952e423c423192063ca4398eafcc6/angular/src/assets/fonts/roboto/CWB0XYA8bzo0kSThX0UTuA.woff2
--------------------------------------------------------------------------------
/angular/src/assets/fonts/roboto/Fcx7Wwv8OzT71A3E1XOAjvesZW2xOQ-xsNqO47m55DA.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/studioxsoftware/studiox/73da8d7ec7f952e423c423192063ca4398eafcc6/angular/src/assets/fonts/roboto/Fcx7Wwv8OzT71A3E1XOAjvesZW2xOQ-xsNqO47m55DA.woff2
--------------------------------------------------------------------------------
/angular/src/assets/fonts/roboto/NdF9MtnOpLzo-noMoG0miPesZW2xOQ-xsNqO47m55DA.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/studioxsoftware/studiox/73da8d7ec7f952e423c423192063ca4398eafcc6/angular/src/assets/fonts/roboto/NdF9MtnOpLzo-noMoG0miPesZW2xOQ-xsNqO47m55DA.woff2
--------------------------------------------------------------------------------
/angular/src/assets/fonts/roboto/PwZc-YbIL414wB9rB1IAPRJtnKITppOI_IvcXXDNrsc.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/studioxsoftware/studiox/73da8d7ec7f952e423c423192063ca4398eafcc6/angular/src/assets/fonts/roboto/PwZc-YbIL414wB9rB1IAPRJtnKITppOI_IvcXXDNrsc.woff2
--------------------------------------------------------------------------------
/angular/src/assets/fonts/roboto/UX6i4JxQDm3fVTc1CPuwqhJtnKITppOI_IvcXXDNrsc.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/studioxsoftware/studiox/73da8d7ec7f952e423c423192063ca4398eafcc6/angular/src/assets/fonts/roboto/UX6i4JxQDm3fVTc1CPuwqhJtnKITppOI_IvcXXDNrsc.woff2
--------------------------------------------------------------------------------
/angular/src/assets/fonts/roboto/d-6IYplOFocCacKzxwXSOFtXRa8TVwTICgirnJhmVJw.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/studioxsoftware/studiox/73da8d7ec7f952e423c423192063ca4398eafcc6/angular/src/assets/fonts/roboto/d-6IYplOFocCacKzxwXSOFtXRa8TVwTICgirnJhmVJw.woff2
--------------------------------------------------------------------------------
/angular/src/assets/fonts/roboto/ek4gzZ-GeXAPcSbHtCeQI_esZW2xOQ-xsNqO47m55DA.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/studioxsoftware/studiox/73da8d7ec7f952e423c423192063ca4398eafcc6/angular/src/assets/fonts/roboto/ek4gzZ-GeXAPcSbHtCeQI_esZW2xOQ-xsNqO47m55DA.woff2
--------------------------------------------------------------------------------
/angular/src/assets/fonts/roboto/isZ-wbCXNKAbnjo6_TwHThJtnKITppOI_IvcXXDNrsc.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/studioxsoftware/studiox/73da8d7ec7f952e423c423192063ca4398eafcc6/angular/src/assets/fonts/roboto/isZ-wbCXNKAbnjo6_TwHThJtnKITppOI_IvcXXDNrsc.woff2
--------------------------------------------------------------------------------
/angular/src/assets/fonts/roboto/jSN2CGVDbcVyCnfJfjSdfBJtnKITppOI_IvcXXDNrsc.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/studioxsoftware/studiox/73da8d7ec7f952e423c423192063ca4398eafcc6/angular/src/assets/fonts/roboto/jSN2CGVDbcVyCnfJfjSdfBJtnKITppOI_IvcXXDNrsc.woff2
--------------------------------------------------------------------------------
/angular/src/assets/fonts/roboto/mErvLBYg_cXG3rLvUsKT_fesZW2xOQ-xsNqO47m55DA.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/studioxsoftware/studiox/73da8d7ec7f952e423c423192063ca4398eafcc6/angular/src/assets/fonts/roboto/mErvLBYg_cXG3rLvUsKT_fesZW2xOQ-xsNqO47m55DA.woff2
--------------------------------------------------------------------------------
/angular/src/assets/fonts/roboto/u0TOpm082MNkS5K0Q4rhqvesZW2xOQ-xsNqO47m55DA.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/studioxsoftware/studiox/73da8d7ec7f952e423c423192063ca4398eafcc6/angular/src/assets/fonts/roboto/u0TOpm082MNkS5K0Q4rhqvesZW2xOQ-xsNqO47m55DA.woff2
--------------------------------------------------------------------------------
/angular/src/assets/images/user.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/studioxsoftware/studiox/73da8d7ec7f952e423c423192063ca4398eafcc6/angular/src/assets/images/user.png
--------------------------------------------------------------------------------
/angular/src/bsb-theme/images/user-img-background.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/studioxsoftware/studiox/73da8d7ec7f952e423c423192063ca4398eafcc6/angular/src/bsb-theme/images/user-img-background.jpg
--------------------------------------------------------------------------------
/angular/src/environments/environment.hmr.ts:
--------------------------------------------------------------------------------
1 | // "Hot Module Replacement" enabled environment
2 |
3 | export const environment = {
4 | production: false,
5 | hmr: true
6 | };
--------------------------------------------------------------------------------
/angular/src/environments/environment.prod.ts:
--------------------------------------------------------------------------------
1 | // "Production" enabled environment
2 |
3 | export const environment = {
4 | production: true,
5 | hmr: false
6 | };
--------------------------------------------------------------------------------
/angular/src/environments/environment.ts:
--------------------------------------------------------------------------------
1 | // The file contents for the current environment will overwrite these during build.
2 | // The build system defaults to the dev environment which uses `environment.ts`, but if you do
3 | // `ng build --env=prod` then `environment.prod.ts` will be used instead.
4 | // The list of which env maps to which file can be found in `angular-cli.json`.
5 |
6 | export const environment = {
7 | production: false,
8 | hmr: false
9 | };
--------------------------------------------------------------------------------
/angular/src/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/studioxsoftware/studiox/73da8d7ec7f952e423c423192063ca4398eafcc6/angular/src/favicon.ico
--------------------------------------------------------------------------------
/angular/src/framework/studiox-ng2-module/build.bat:
--------------------------------------------------------------------------------
1 | npm run build
--------------------------------------------------------------------------------
/angular/src/framework/studiox-ng2-module/dist/index.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;AAAA,sCAAiC;AACjC,uDAAkD;AAClD,2DAAsD;AACtD,4DAAuD;AACvD,6DAAwD;AACxD,oDAA+C;AAC/C,iDAA4C;AAC5C,mDAA8C;AAC9C,2CAAsC;AACtC,mEAA8D;AAC9D,8CAAyC;AACzC,+CAA0C;AAC1C,mCAA8B;AAC9B,0DAAqD"}
--------------------------------------------------------------------------------
/angular/src/framework/studiox-ng2-module/dist/src/auth/permission-checker.service.d.ts:
--------------------------------------------------------------------------------
1 | export declare class PermissionCheckerService {
2 | isGranted(permissionName: string): boolean;
3 | }
4 |
--------------------------------------------------------------------------------
/angular/src/framework/studiox-ng2-module/dist/src/auth/permission-checker.service.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"permission-checker.service.js","sourceRoot":"","sources":["../../../src/auth/permission-checker.service.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,sCAA2C;AAG3C,IAAa,wBAAwB;IAArC;IAMA,CAAC;IAJG,4CAAS,GAAT,UAAU,cAAsB;QAC5B,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC9C,CAAC;IAEL,+BAAC;AAAD,CAAC,AAND,IAMC;AANY,wBAAwB;IADpC,iBAAU,EAAE;;GACA,wBAAwB,CAMpC;AANY,4DAAwB"}
--------------------------------------------------------------------------------
/angular/src/framework/studiox-ng2-module/dist/src/auth/token.service.d.ts:
--------------------------------------------------------------------------------
1 | export declare class TokenService {
2 | getToken(): string;
3 | getTokenCookieName(): string;
4 | clearToken(): void;
5 | setToken(authToken: string, expireDate?: Date): void;
6 | }
7 |
--------------------------------------------------------------------------------
/angular/src/framework/studiox-ng2-module/dist/src/log/log.service.d.ts:
--------------------------------------------------------------------------------
1 | export declare class LogService {
2 | debug(logObject?: any): void;
3 | info(logObject?: any): void;
4 | warn(logObject?: any): void;
5 | error(logObject?: any): void;
6 | fatal(logObject?: any): void;
7 | }
8 |
--------------------------------------------------------------------------------
/angular/src/framework/studiox-ng2-module/dist/src/message/message.service.d.ts:
--------------------------------------------------------------------------------
1 | export declare class MessageService {
2 | info(message: string, title?: string): any;
3 | success(message: string, title?: string): any;
4 | warn(message: string, title?: string): any;
5 | error(message: string, title?: string): any;
6 | confirm(message: string, callback?: (result: boolean) => void): any;
7 | confirm(message: string, title?: string, callback?: (result: boolean) => void): any;
8 | }
9 |
--------------------------------------------------------------------------------
/angular/src/framework/studiox-ng2-module/dist/src/multi-tenancy/studiox-multi-tenancy.service.d.ts:
--------------------------------------------------------------------------------
1 | export declare class StudioXMultiTenancyService {
2 | readonly isEnabled: boolean;
3 | }
4 |
--------------------------------------------------------------------------------
/angular/src/framework/studiox-ng2-module/dist/src/multi-tenancy/studiox-multi-tenancy.service.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"studiox-multi-tenancy.service.js","sourceRoot":"","sources":["../../../src/multi-tenancy/studiox-multi-tenancy.service.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,sCAA2C;AAG3C,IAAa,sBAAsB;IAAnC;IAMA,CAAC;IAJG,sBAAI,6CAAS;aAAb;YACI,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,SAAS,CAAC;QACtC,CAAC;;;OAAA;IAEL,6BAAC;AAAD,CAAC,AAND,IAMC;AANY,sBAAsB;IADlC,iBAAU,EAAE;;GACA,sBAAsB,CAMlC;AANY,wDAAsB"}
--------------------------------------------------------------------------------
/angular/src/framework/studiox-ng2-module/dist/src/notify/notify.service.d.ts:
--------------------------------------------------------------------------------
1 | export declare class NotifyService {
2 | info(message: string, title?: string, options?: any): void;
3 | success(message: string, title?: string, options?: any): void;
4 | warn(message: string, title?: string, options?: any): void;
5 | error(message: string, title?: string, options?: any): void;
6 | }
7 |
--------------------------------------------------------------------------------
/angular/src/framework/studiox-ng2-module/dist/src/settings/setting.service.d.ts:
--------------------------------------------------------------------------------
1 | export declare class SettingService {
2 | get(name: string): string;
3 | getBoolean(name: string): boolean;
4 | getInt(name: string): number;
5 | }
6 |
--------------------------------------------------------------------------------
/angular/src/framework/studiox-ng2-module/dist/src/studiox-user-configuration.service.d.ts:
--------------------------------------------------------------------------------
1 | import { Http } from '@angular/http';
2 | export declare class StudioXUserConfigurationService {
3 | private _http;
4 | constructor(_http: Http);
5 | initialize(): void;
6 | }
7 |
--------------------------------------------------------------------------------
/angular/src/framework/studiox-ng2-module/dist/src/utils/utils.service.d.ts:
--------------------------------------------------------------------------------
1 | export declare class UtilsService {
2 | getCookieValue(key: string): string;
3 | setCookieValue(key: string, value: string, expireDate?: Date, path?: string): void;
4 | deleteCookie(key: string, path?: string): void;
5 | }
6 |
--------------------------------------------------------------------------------
/angular/src/framework/studiox-ng2-module/index.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * @module
3 | * @description
4 | * Entry point for all public APIs of the Angular Module
5 | */
6 | export * from './src/index';
--------------------------------------------------------------------------------
/angular/src/framework/studiox-ng2-module/rollup.config.js:
--------------------------------------------------------------------------------
1 | export default {
2 | entry: 'dist/index.js',
3 | dest: 'dist/bundles/studiox-ng2-module.umd.js',
4 | sourceMap: false,
5 | format: 'umd',
6 | moduleName: 'ng.studioxModule',
7 | globals: {
8 | '@angular/core': 'ng.core'
9 | }
10 | }
--------------------------------------------------------------------------------
/angular/src/framework/studiox-ng2-module/src/auth/permission-checker.service.ts:
--------------------------------------------------------------------------------
1 | import { Injectable } from '@angular/core';
2 |
3 | @Injectable()
4 | export class PermissionCheckerService {
5 |
6 | isGranted(permissionName: string): boolean {
7 | return studiox.auth.isGranted(permissionName);
8 | }
9 |
10 | }
--------------------------------------------------------------------------------
/angular/src/framework/studiox-ng2-module/src/index.ts:
--------------------------------------------------------------------------------
1 | export { StudioXModule } from './studiox.module';
2 |
--------------------------------------------------------------------------------
/angular/src/framework/studiox-ng2-module/src/multi-tenancy/studiox-multi-tenancy.service.ts:
--------------------------------------------------------------------------------
1 | import { Injectable } from '@angular/core';
2 |
3 | @Injectable()
4 | export class StudioXMultiTenancyService {
5 |
6 | get isEnabled(): boolean {
7 | return studiox.multiTenancy.isEnabled;
8 | }
9 |
10 | }
--------------------------------------------------------------------------------
/angular/src/framework/studiox-ng2-module/src/settings/setting.service.ts:
--------------------------------------------------------------------------------
1 | import { Injectable } from '@angular/core';
2 |
3 | @Injectable()
4 | export class SettingService {
5 |
6 | get(name: string): string {
7 | return studiox.setting.get(name);
8 | }
9 |
10 | getBoolean(name: string): boolean {
11 | return studiox.setting.getBoolean(name);
12 | }
13 |
14 | getInt(name: string): number {
15 | return studiox.setting.getInt(name);
16 | }
17 |
18 | }
--------------------------------------------------------------------------------
/angular/src/framework/studiox-table/studiox-table-directives.ts:
--------------------------------------------------------------------------------
1 | import { NgTableComponent } from './table/studiox-table.component';
2 | import { NgTableFilteringDirective } from './table/studiox-table-filtering.directive';
3 | import { NgTablePagingDirective } from './table/studiox-table-paging.directive';
4 | import { NgTableSortingDirective } from './table/studiox-table-sorting.directive';
5 | export const NgTableDirectives = [NgTableComponent, NgTableFilteringDirective, NgTablePagingDirective, NgTableSortingDirective];
6 |
--------------------------------------------------------------------------------
/angular/src/framework/studiox-table/studiox-table-module.d.ts:
--------------------------------------------------------------------------------
1 | export declare class StudioXTableModule {
2 | }
3 |
--------------------------------------------------------------------------------
/angular/src/framework/studiox-table/table/studiox-table-filtering.directive.d.ts:
--------------------------------------------------------------------------------
1 | import { EventEmitter, ElementRef, Renderer } from '@angular/core';
2 | export declare class NgTableFilteringDirective {
3 | ngTableFiltering: any;
4 | tableChanged: EventEmitter;
5 | config: any;
6 | private element;
7 | private renderer;
8 | onChangeFilter(event: any): void;
9 | constructor(element: ElementRef, renderer: Renderer);
10 | }
11 |
--------------------------------------------------------------------------------
/angular/src/framework/studiox-table/table/studiox-table-paging.directive.d.ts:
--------------------------------------------------------------------------------
1 | import { EventEmitter } from '@angular/core';
2 | export declare class NgTablePagingDirective {
3 | ngTablePaging: boolean;
4 | tableChanged: EventEmitter;
5 | config: any;
6 | onChangePage(event: any): void;
7 | }
8 |
--------------------------------------------------------------------------------
/angular/src/framework/studiox-table/table/studiox-table-sorting.directive.d.ts:
--------------------------------------------------------------------------------
1 | import { EventEmitter } from '@angular/core';
2 | export declare class NgTableSortingDirective {
3 | ngTableSorting: any;
4 | column: any;
5 | sortChanged: EventEmitter;
6 | config: any;
7 | onToggleSort(event: any): void;
8 | }
9 |
--------------------------------------------------------------------------------
/angular/src/framework/studiox/scripts/libs/requirejs/plugins/service.js:
--------------------------------------------------------------------------------
1 | define(function () {
2 | return {
3 | load: function (name, req, onload, config) {
4 | var url = studiox.appPath + 'api/StudioXServiceProxies/Get?name=' + name;
5 | req([url], function (value) {
6 | onload(value);
7 | });
8 | }
9 | };
10 | });
--------------------------------------------------------------------------------
/angular/src/framework/studiox/scripts/libs/studiox.jquery.d.ts:
--------------------------------------------------------------------------------
1 | declare namespace studiox {
2 |
3 | //TODO: Gets JQuery.AjaxOptions and returns JQuery.Promise
4 |
5 | function ajax(userOptions: any): any;
6 |
7 | }
--------------------------------------------------------------------------------
/angular/src/framework/studiox/scripts/libs/studiox.signalr.d.ts:
--------------------------------------------------------------------------------
1 | declare namespace studiox {
2 |
3 | namespace signalr {
4 |
5 | let autoConnect: boolean;
6 |
7 | function connect(): any;
8 |
9 | namespace hubs {
10 |
11 | let common: any;
12 |
13 | }
14 |
15 | }
16 |
17 | }
--------------------------------------------------------------------------------
/angular/src/framework/studiox/scripts/libs/utils/ie10fix.js:
--------------------------------------------------------------------------------
1 | //Windows Phone 8 and Internet Explorer 10 FIX
2 | if (navigator.userAgent.match(/IEMobile\/10\.0/)) {
3 | var msViewportStyle = document.createElement("style");
4 | msViewportStyle.appendChild(
5 | document.createTextNode(
6 | "@-ms-viewport{width:auto!important}"
7 | )
8 | );
9 |
10 | document.getElementsByTagName("head")[0].appendChild(msViewportStyle);
11 | }
--------------------------------------------------------------------------------
/angular/src/framework/studiox/styles/studiox.css.map:
--------------------------------------------------------------------------------
1 | "{\"version\":3,\"sources\":[\"studiox.less\",\"studiox.mixings.less\"],\"names\":[],\"mappings\":\"AAIA;EACI,eAAA;;AAKJ;ECSI,OAAA;EACA,MAAA;EACA,QAAA;EA0CA,kBAAA;EACA,SAAA;;ADlDJ;ECWI,QAAA;EACA,MAAA;EACA,SAAA;EAoCA,kBAAA;EACA,SAAA;;AD9CJ;ECaI,OAAA;EACA,QAAA;EACA,SAAA;EA8BA,kBAAA;EACA,SAAA;;AD1CJ;ECeI,OAAA;EACA,MAAA;EACA,SAAA;EAwBA,kBAAA;EACA,SAAA;;ADhCJ;EACI,WAAA;EACA,YAAA;;AAEA,yBAAC;AACD,yBAAC;EACG,YAAA\",\"file\":\"studiox.css\"}"
2 |
--------------------------------------------------------------------------------
/angular/src/framework/studiox/styles/studiox.min.css:
--------------------------------------------------------------------------------
1 | .studiox-clickable{cursor:pointer}.studiox-dock-top{left:0;top:0;right:0;position:absolute;margin:0}.studiox-dock-right{right:0;top:0;bottom:0;position:absolute;margin:0}.studiox-dock-bottom{left:0;right:0;bottom:0;position:absolute;margin:0}.studiox-dock-left{left:0;top:0;bottom:0;position:absolute;margin:0}.studiox-busy-indicator-small{width:36px;height:36px}.studiox-busy-indicator-small.studiox-dock-left,.studiox-busy-indicator-small.studiox-dock-right{height:auto}
2 |
--------------------------------------------------------------------------------
/angular/src/framework/studiox/styles/studiox.mixings.css:
--------------------------------------------------------------------------------
1 | /*# sourceMappingURL=studiox.mixings.css.map */
2 |
--------------------------------------------------------------------------------
/angular/src/framework/studiox/styles/studiox.mixings.css.map:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/angular/src/framework/studiox/styles/studiox.mixings.min.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/angular/src/framework/studiox/styles/utils/ie10fix.css:
--------------------------------------------------------------------------------
1 | @-webkit-viewport {
2 | width: device-width;
3 | }
4 |
5 | @-moz-viewport {
6 | width: device-width;
7 | }
8 |
9 | @-ms-viewport {
10 | width: device-width;
11 | }
12 |
13 | @-o-viewport {
14 | width: device-width;
15 | }
16 |
17 | @viewport
18 |
19 | {
20 | width: device-width;
21 | }
--------------------------------------------------------------------------------
/angular/src/root.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-root',
5 | template: ``
6 | })
7 | export class RootComponent {
8 |
9 | }
--------------------------------------------------------------------------------
/angular/src/shared/AppConsts.ts:
--------------------------------------------------------------------------------
1 | export class AppConsts {
2 |
3 | static remoteServiceBaseUrl: string;
4 | static appBaseUrl: string;
5 |
6 | static readonly userManagement = {
7 | defaultAdminUserName: 'admin'
8 | };
9 |
10 | static readonly localization = {
11 | defaultLocalizationSourceName: 'Boilerplate'
12 | };
13 |
14 | static readonly authorization = {
15 | encrptedAuthTokenName: 'enc_auth_token'
16 | };
17 | }
--------------------------------------------------------------------------------
/angular/src/shared/AppEnums.ts:
--------------------------------------------------------------------------------
1 | import { IsTenantAvailableOutputState } from '@shared/service-proxies/service-proxies';
2 |
3 |
4 | export class AppTenantAvailabilityState {
5 | static Available: number = IsTenantAvailableOutputState._1;
6 | static InActive: number = IsTenantAvailableOutputState._2;
7 | static NotFound: number = IsTenantAvailableOutputState._3;
8 | }
--------------------------------------------------------------------------------
/angular/src/shared/auth/app-auth.service.ts:
--------------------------------------------------------------------------------
1 | import { Injectable } from '@angular/core';
2 | import { AppConsts } from '@shared/AppConsts';
3 |
4 | @Injectable()
5 | export class AppAuthService {
6 |
7 | logout(reload?: boolean): void {
8 | studiox.auth.clearToken();
9 | if (reload !== false) {
10 | location.href = AppConsts.appBaseUrl;
11 | }
12 | }
13 | }
--------------------------------------------------------------------------------
/angular/src/shared/helpers/UrlHelper.ts:
--------------------------------------------------------------------------------
1 | export class UrlHelper {
2 | /**
3 | * The URL requested, before initial routing.
4 | */
5 | static readonly initialUrl = location.href;
6 |
7 | static getQueryParameters(): any {
8 | return document.location.search.replace(/(^\?)/, '').split("&").map(function (n) { return n = n.split("="), this[n[0]] = n[1], this }.bind({}))[0];
9 | }
10 | }
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Application/AppConsts.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Boilerplate
2 | {
3 | public class AppConsts
4 | {
5 | ///
6 | /// Default pass phrase for SimpleStringCipher decrypt/encrypt operations
7 | ///
8 | public const string DefaultPassPhrase = "gsKxGZ012HLL3MI5";
9 | }
10 | }
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Application/Authorization/Accounts/Dto/IsTenantAvailableInput.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel.DataAnnotations;
2 | using StudioX.MultiTenancy;
3 |
4 | namespace StudioX.Boilerplate.Authorization.Accounts.Dto
5 | {
6 | public class IsTenantAvailableInput
7 | {
8 | [Required]
9 | [MaxLength(StudioXTenantBase.MaxTenancyNameLength)]
10 | public string TenancyName { get; set; }
11 | }
12 | }
13 |
14 |
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Application/Authorization/Accounts/Dto/RegisterOutput.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Boilerplate.Authorization.Accounts.Dto
2 | {
3 | public class RegisterOutput
4 | {
5 | public bool CanLogin { get; set; }
6 | }
7 | }
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Application/Authorization/Accounts/Dto/TenantAvailabilityState.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Boilerplate.Authorization.Accounts.Dto
2 | {
3 | public enum TenantAvailabilityState
4 | {
5 | Available = 1,
6 | InActive,
7 | NotFound
8 | }
9 | }
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Application/BaseModel/InputConstant.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Boilerplate.BaseModel
2 | {
3 | public class InputConstant
4 | {
5 | public const string DefaultSorting = "Id DESC";
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Application/Configuration/Dto/ChangeUiThemeInput.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel.DataAnnotations;
2 |
3 | namespace StudioX.Boilerplate.Configuration.Dto
4 | {
5 | public class ChangeUiThemeInput
6 | {
7 | [Required]
8 | [MaxLength(32)]
9 | public string Theme { get; set; }
10 | }
11 | }
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Application/Configuration/IConfigurationAppService.cs:
--------------------------------------------------------------------------------
1 | using System.Threading.Tasks;
2 | using StudioX.Boilerplate.Configuration.Dto;
3 |
4 | namespace StudioX.Boilerplate.Configuration
5 | {
6 | public interface IConfigurationAppService
7 | {
8 | Task ChangeUiTheme(ChangeUiThemeInput input);
9 | }
10 | }
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Application/Configuration/Ui/UiThemeInfo.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Boilerplate.Configuration.Ui
2 | {
3 | public class UiThemeInfo
4 | {
5 | public string Name { get; }
6 | public string CssClass { get; }
7 |
8 | public UiThemeInfo(string name, string cssClass)
9 | {
10 | Name = name;
11 | CssClass = cssClass;
12 | }
13 | }
14 | }
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Application/MultiTenancy/ITenantAppService.cs:
--------------------------------------------------------------------------------
1 | using StudioX.Application.Services;
2 | using StudioX.Application.Services.Dto;
3 | using StudioX.Boilerplate.MultiTenancy.Dto;
4 |
5 | namespace StudioX.Boilerplate.MultiTenancy
6 | {
7 | public interface ITenantAppService :
8 | IAsyncCrudAppService
9 | {
10 | }
11 | }
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Application/Permissions/IPermissionAppService.cs:
--------------------------------------------------------------------------------
1 | using System.Threading.Tasks;
2 | using StudioX.Application.Services;
3 | using StudioX.Application.Services.Dto;
4 | using StudioX.Boilerplate.Permissions.Dto;
5 |
6 | namespace StudioX.Boilerplate.Permissions
7 | {
8 | public interface IPermissionAppService : IApplicationService
9 | {
10 | Task> GetAll();
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Application/Roles/Dto/UpdateRolePermissionsInput.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.ComponentModel.DataAnnotations;
3 |
4 | namespace StudioX.Boilerplate.Roles.Dto
5 | {
6 | public class UpdateRolePermissionsInput
7 | {
8 | [Range(1, int.MaxValue)]
9 | public int RoleId { get; set; }
10 |
11 | [Required]
12 | public List GrantedPermissionNames { get; set; }
13 | }
14 | }
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Application/Sessions/Dto/ApplicationInfoDto.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 |
4 | namespace StudioX.Boilerplate.Sessions.Dto
5 | {
6 | public class ApplicationInfoDto
7 | {
8 | public string Version { get; set; }
9 |
10 | public DateTime ReleaseDate { get; set; }
11 |
12 | public Dictionary Features { get; set; }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Application/Sessions/Dto/GetCurrentLoginInformationsOutput.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Boilerplate.Sessions.Dto
2 | {
3 | public class GetCurrentLoginInformationsOutput
4 | {
5 | public ApplicationInfoDto Application { get; set; }
6 |
7 | public UserLoginInfoDto User { get; set; }
8 |
9 | public TenantLoginInfoDto Tenant { get; set; }
10 | }
11 | }
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Application/Sessions/Dto/TenantLoginInfoDto.cs:
--------------------------------------------------------------------------------
1 | using StudioX.Application.Services.Dto;
2 | using StudioX.AutoMapper;
3 | using StudioX.Boilerplate.MultiTenancy;
4 |
5 | namespace StudioX.Boilerplate.Sessions.Dto
6 | {
7 | [AutoMapFrom(typeof(Tenant))]
8 | public class TenantLoginInfoDto : EntityDto
9 | {
10 | public string TenancyName { get; set; }
11 |
12 | public string Name { get; set; }
13 | }
14 | }
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Application/Sessions/ISessionAppService.cs:
--------------------------------------------------------------------------------
1 | using System.Threading.Tasks;
2 | using StudioX.Application.Services;
3 | using StudioX.Boilerplate.Sessions.Dto;
4 |
5 | namespace StudioX.Boilerplate.Sessions
6 | {
7 | public interface ISessionAppService : IApplicationService
8 | {
9 | Task GetCurrentLoginInformations();
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Application/Settings/Dto/SettingDto.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Boilerplate.Settings.Dto
2 | {
3 | public class SettingDto
4 | {
5 | public virtual DefaultPasswordComplexityDto DefaultPasswordComplexity { get; set; }
6 |
7 | public virtual PasswordComplexityDto PasswordComplexity { get; set; }
8 |
9 | public virtual UserLockOutDto UserLockOut { get; set; }
10 |
11 | public virtual UserManagementDto UserManagement { get; set; }
12 | }
13 | }
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Application/Settings/Dto/UserLockOutDto.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Boilerplate.Settings.Dto
2 | {
3 | public class UserLockOutDto
4 | {
5 | public virtual bool IsEnabled { get; set; }
6 |
7 | public virtual int DefaultAccountLockoutSeconds { get; set; }
8 |
9 | public virtual int MaxFailedAccessAttemptsBeforeLockout { get; set; }
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Application/Settings/Dto/UserManagementDto.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Boilerplate.Settings.Dto
2 | {
3 | public class UserManagementDto
4 | {
5 | public virtual bool IsEmailConfirmationRequiredForLogin { get; set; }
6 |
7 | public virtual bool IsNewRegisteredUserActiveByDefault { get; set; }
8 | }
9 | }
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Application/SignalR/SignalRFeature.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Boilerplate.SignalR
2 | {
3 | public static class SignalRFeature
4 | {
5 | public static bool IsAvailable
6 | {
7 | get
8 | {
9 | #if FEATURE_SIGNALR
10 | return true;
11 | #else
12 | return false;
13 | #endif
14 | }
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Application/Users/Dto/ProhibitPermissionInput.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel.DataAnnotations;
2 |
3 | namespace StudioX.Boilerplate.Users.Dto
4 | {
5 | public class ProhibitPermissionInput
6 | {
7 | [Range(1, long.MaxValue)]
8 | public int UserId { get; set; }
9 |
10 | [Required]
11 | public string PermissionName { get; set; }
12 | }
13 | }
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Core/Authorization/Modules/ModuleAuthorizationProvider.cs:
--------------------------------------------------------------------------------
1 | using StudioX.Localization;
2 |
3 | namespace StudioX.Boilerplate.Authorization.Modules
4 | {
5 | public class ModuleAuthorizationProvider
6 | {
7 | // TODO: Will be change to localization
8 | public ILocalizableString L(string name)
9 | {
10 | return new FixedLocalizableString(name);
11 | }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Core/Authorization/PermissionChecker.cs:
--------------------------------------------------------------------------------
1 | using StudioX.Authorization;
2 | using StudioX.Boilerplate.Authorization.Roles;
3 | using StudioX.Boilerplate.Authorization.Users;
4 |
5 | namespace StudioX.Boilerplate.Authorization
6 | {
7 | public class PermissionChecker : PermissionChecker
8 | {
9 | public PermissionChecker(UserManager userManager)
10 | : base(userManager)
11 | {
12 |
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Core/Authorization/Roles/StaticRoleNames.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Boilerplate.Authorization.Roles
2 | {
3 | public static class StaticRoleNames
4 | {
5 | public static class Host
6 | {
7 | public const string Admin = "Admin";
8 | }
9 |
10 | public static class Tenants
11 | {
12 | public const string Admin = "Admin";
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Core/BoilerplateConsts.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Boilerplate
2 | {
3 | public class BoilerplateConsts
4 | {
5 | public const string LocalizationSourceName = "Boilerplate";
6 |
7 | public const string ConnectionStringName = "Default";
8 |
9 | public const bool MultiTenancyEnabled = true;
10 | }
11 | }
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Core/Configuration/AppSettingNames.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Boilerplate.Configuration
2 | {
3 | public static class AppSettingNames
4 | {
5 | public const string UiTheme = "App.UiTheme";
6 | }
7 | }
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Core/MultiTenancy/Tenant.cs:
--------------------------------------------------------------------------------
1 | using StudioX.MultiTenancy;
2 | using StudioX.Boilerplate.Authorization.Users;
3 |
4 | namespace StudioX.Boilerplate.MultiTenancy
5 | {
6 | public class Tenant : StudioXTenant
7 | {
8 | public Tenant()
9 | {
10 |
11 | }
12 |
13 | public Tenant(string tenancyName, string name)
14 | : base(tenancyName, name)
15 | {
16 | }
17 | }
18 | }
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Core/Timing/AppTimes.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using StudioX.Dependency;
3 |
4 | namespace StudioX.Boilerplate.Timing
5 | {
6 | public class AppTimes : ISingletonDependency
7 | {
8 | ///
9 | /// Gets the startup time of the application.
10 | ///
11 | public DateTime StartupTime { get; set; }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.EntityFrameworkCore/EntityFrameworkCore/BoilerplateDbContextConfigurer.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.EntityFrameworkCore;
2 |
3 | namespace StudioX.Boilerplate.EntityFrameworkCore
4 | {
5 | public static class BoilerplateDbContextConfigurer
6 | {
7 | public static void Configure(DbContextOptionsBuilder builder, string connectionString)
8 | {
9 | builder.UseSqlServer(connectionString);
10 | }
11 | }
12 | }
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Migrator/appsettings.json:
--------------------------------------------------------------------------------
1 | {
2 | "ConnectionStrings": {
3 | "Default": "Server=localhost; Database=BoilerplateDb; Trusted_Connection=True;"
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Core/Authentication/External/ExternalAuthUserInfo.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Boilerplate.Authentication.External
2 | {
3 | public class ExternalAuthUserInfo
4 | {
5 | public string ProviderKey { get; set; }
6 |
7 | public string FirstName { get; set; }
8 |
9 | public string EmailAddress { get; set; }
10 |
11 | public string LastName { get; set; }
12 |
13 | public string Provider { get; set; }
14 | }
15 | }
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Core/Authentication/External/IExternalAuthConfiguration.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace StudioX.Boilerplate.Authentication.External
4 | {
5 | public interface IExternalAuthConfiguration
6 | {
7 | List Providers { get; }
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Core/Authentication/External/IExternalAuthManager.cs:
--------------------------------------------------------------------------------
1 | using System.Threading.Tasks;
2 |
3 | namespace StudioX.Boilerplate.Authentication.External
4 | {
5 | public interface IExternalAuthManager
6 | {
7 | Task IsValidUser(string provider, string providerKey, string providerAccessCode);
8 |
9 | Task GetUserInfo(string provider, string accessCode);
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Core/Models/TokenAuth/AuthenticateResultModel.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Boilerplate.Models.TokenAuth
2 | {
3 | public class AuthenticateResultModel
4 | {
5 | public string AccessToken { get; set; }
6 |
7 | public string EncryptedAccessToken { get; set; }
8 |
9 | public int ExpireInSeconds { get; set; }
10 |
11 | public long UserId { get; set; }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Core/Models/TokenAuth/ExternalAuthenticateResultModel.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Boilerplate.Models.TokenAuth
2 | {
3 | public class ExternalAuthenticateResultModel
4 | {
5 | public string AccessToken { get; set; }
6 |
7 | public string EncryptedAccessToken { get; set; }
8 |
9 | public int ExpireInSeconds { get; set; }
10 |
11 | public bool WaitingForActivation { get; set; }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Core/Models/TokenAuth/ExternalLoginProviderInfoModel.cs:
--------------------------------------------------------------------------------
1 | using StudioX.AutoMapper;
2 | using StudioX.Boilerplate.Authentication.External;
3 |
4 | namespace StudioX.Boilerplate.Models.TokenAuth
5 | {
6 | [AutoMapFrom(typeof(ExternalLoginProviderInfo))]
7 | public class ExternalLoginProviderInfoModel
8 | {
9 | public string Name { get; set; }
10 |
11 | public string ClientId { get; set; }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Host/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM microsoft/aspnetcore:1.1.2
2 |
3 | WORKDIR /app
4 | COPY . .
5 |
6 | ENTRYPOINT ["dotnet", "StudioX.Boilerplate.Web.Host.dll"]
7 |
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Host/app.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Host/appsettings.Staging.json:
--------------------------------------------------------------------------------
1 | {
2 | "ConnectionStrings": {
3 | "Default": "Server=10.0.75.1; Database=BoilerplateDb; User=sa; Password=123qwe;"
4 | },
5 | "App": {
6 | "WebSiteRootAddress": "http://localhost:9902/",
7 | "CorsOrigins": "http://localhost:9902"
8 | }
9 | }
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/.bowerrc:
--------------------------------------------------------------------------------
1 | {
2 | "directory": "wwwroot/lib"
3 | }
4 |
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/Controllers/AboutController.cs:
--------------------------------------------------------------------------------
1 | using StudioX.Boilerplate.Controllers;
2 | using Microsoft.AspNetCore.Mvc;
3 |
4 | namespace StudioX.Boilerplate.Web.Controllers
5 | {
6 | public class AboutController : BoilerplateControllerBase
7 | {
8 | public ActionResult Index()
9 | {
10 | return View();
11 | }
12 | }
13 | }
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/Controllers/HomeController.cs:
--------------------------------------------------------------------------------
1 | using StudioX.AspNetCore.Mvc.Authorization;
2 | using StudioX.Boilerplate.Controllers;
3 | using Microsoft.AspNetCore.Mvc;
4 |
5 | namespace StudioX.Boilerplate.Web.Controllers
6 | {
7 | [StudioXMvcAuthorize]
8 | public class HomeController : BoilerplateControllerBase
9 | {
10 | public ActionResult Index()
11 | {
12 | return View();
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM microsoft/aspnetcore:1.1.2
2 |
3 | WORKDIR /app
4 | COPY . .
5 |
6 | ENTRYPOINT ["dotnet", "StudioX.Boilerplate.Web.Mvc.dll"]
7 |
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/Models/Account/LoginFormViewModel.cs:
--------------------------------------------------------------------------------
1 | using StudioX.MultiTenancy;
2 |
3 | namespace StudioX.Boilerplate.Web.Models.Account
4 | {
5 | public class LoginFormViewModel
6 | {
7 | public string ReturnUrl { get; set; }
8 |
9 | public bool IsMultiTenancyEnabled { get; set; }
10 |
11 | public bool IsSelfRegistrationAllowed { get; set; }
12 |
13 | public MultiTenancySides MultiTenancySide { get; set; }
14 | }
15 | }
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/Models/Account/LoginViewModel.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel.DataAnnotations;
2 |
3 | namespace StudioX.Boilerplate.Web.Models.Account
4 | {
5 | public class LoginViewModel
6 | {
7 | [Required]
8 | public string UsernameOrEmailAddress { get; set; }
9 |
10 | [Required]
11 | public string Password { get; set; }
12 |
13 | public bool RememberMe { get; set; }
14 | }
15 | }
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/Models/Common/Modals/ModalHeaderViewModel.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Boilerplate.Web.Models.Common.Modals
2 | {
3 | public class ModalHeaderViewModel
4 | {
5 | public string Title { get; set; }
6 |
7 | public ModalHeaderViewModel(string title)
8 | {
9 | Title = title;
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/Models/Roles/RoleListViewModel.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using StudioX.Boilerplate.Permissions.Dto;
3 | using StudioX.Boilerplate.Roles.Dto;
4 |
5 | namespace StudioX.Boilerplate.Web.Models.Roles
6 | {
7 | public class RoleListViewModel
8 | {
9 | public IReadOnlyList Roles { get; set; }
10 |
11 | public IReadOnlyList Permissions { get; set; }
12 | }
13 | }
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/Models/Users/UserListViewModel.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using StudioX.Boilerplate.Roles.Dto;
3 | using StudioX.Boilerplate.Users.Dto;
4 |
5 | namespace StudioX.Boilerplate.Web.Models.Users
6 | {
7 | public class UserListViewModel
8 | {
9 | public IReadOnlyList Users { get; set; }
10 |
11 | public IReadOnlyList Roles { get; set; }
12 | }
13 | }
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/Resources/IWebResourceManager.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using Microsoft.AspNetCore.Mvc.Razor;
3 |
4 | namespace StudioX.Boilerplate.Web.Resources
5 | {
6 | public interface IWebResourceManager
7 | {
8 | void AddScript(string url, bool addMinifiedOnProd = true);
9 |
10 | IReadOnlyList GetScripts();
11 |
12 | HelperResult RenderScripts();
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/Startup/PageNames.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Boilerplate.Web.Startup
2 | {
3 | public class PageNames
4 | {
5 | public const string Home = "Home";
6 | public const string About = "About";
7 | public const string Tenants = "Tenants";
8 | public const string Roles = "Roles";
9 | public const string Users = "Users";
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/Views/Account/_ViewStart.cshtml:
--------------------------------------------------------------------------------
1 | @{
2 | Layout = "~/Views/Account/_Layout.cshtml";
3 | }
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/Views/BoilerplateViewComponent.cs:
--------------------------------------------------------------------------------
1 | using StudioX.AspNetCore.Mvc.ViewComponents;
2 |
3 | namespace StudioX.Boilerplate.Web.Views
4 | {
5 | public abstract class BoilerplateViewComponent : StudioXViewComponent
6 | {
7 | protected BoilerplateViewComponent()
8 | {
9 | LocalizationSourceName = BoilerplateConsts.LocalizationSourceName;
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/Views/Shared/Components/RightSideBar/RightSideBarViewModel.cs:
--------------------------------------------------------------------------------
1 | using StudioX.Boilerplate.Configuration.Ui;
2 |
3 | namespace StudioX.Boilerplate.Web.Views.Shared.Components.RightSideBar
4 | {
5 | public class RightSideBarViewModel
6 | {
7 | public UiThemeInfo CurrentTheme { get; set; }
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/Views/Shared/Components/SideBarNav/SideBarNavViewModel.cs:
--------------------------------------------------------------------------------
1 | using StudioX.Application.Navigation;
2 |
3 | namespace StudioX.Boilerplate.Web.Views.Shared.Components.SideBarNav
4 | {
5 | public class SideBarNavViewModel
6 | {
7 | public UserMenu MainMenu { get; set; }
8 |
9 | public string ActiveMenuItemName { get; set; }
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/Views/Shared/Components/TenantChange/ChangeModalViewModel.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Boilerplate.Web.Views.Shared.Components.TenantChange
2 | {
3 | public class ChangeModalViewModel
4 | {
5 | public string TenancyName { get; set; }
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/Views/Shared/Components/TenantChange/TenantChangeViewModel.cs:
--------------------------------------------------------------------------------
1 | using StudioX.AutoMapper;
2 | using StudioX.Boilerplate.Sessions.Dto;
3 |
4 | namespace StudioX.Boilerplate.Web.Views.Shared.Components.TenantChange
5 | {
6 | [AutoMapFrom(typeof(GetCurrentLoginInformationsOutput))]
7 | public class TenantChangeViewModel
8 | {
9 | public TenantLoginInfoDto Tenant { get; set; }
10 | }
11 | }
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/Views/Shared/Components/TopBarLanguageSwitch/TopBarLanguageSwitchViewModel.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using StudioX.Localization;
3 |
4 | namespace StudioX.Boilerplate.Web.Views.Shared.Components.TopBarLanguageSwitch
5 | {
6 | public class TopBarLanguageSwitchViewModel
7 | {
8 | public LanguageInfo CurrentLanguage { get; set; }
9 |
10 | public IReadOnlyList Languages { get; set; }
11 | }
12 | }
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/Views/Shared/Modals/_ModalFooterWithSaveAndCancel.cshtml:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/Views/Shared/Modals/_ModalHeader.cshtml:
--------------------------------------------------------------------------------
1 | @using StudioX.Boilerplate.Web.Models.Common.Modals
2 | @model ModalHeaderViewModel
3 |
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/Views/_ViewImports.cshtml:
--------------------------------------------------------------------------------
1 | @using StudioX.Localization
2 | @inherits StudioX.Boilerplate.Web.Views.BoilerplateRazorPage
3 | @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
4 | @addTagHelper *, StudioX.Boilerplate.Web.Mvc
5 |
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/Views/_ViewStart.cshtml:
--------------------------------------------------------------------------------
1 | @{
2 | Layout = "~/Views/Shared/_Layout.cshtml";
3 | }
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/app.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/appsettings.Staging.json:
--------------------------------------------------------------------------------
1 | {
2 | "ConnectionStrings": {
3 | "Default": "Server=10.0.75.1; Database=StudioXZeroTemplateDb; User=sa; Password=123qwe;"
4 | },
5 | "App": {
6 | "WebSiteRootAddress": "http://localhost:9903/"
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/StudioX/Framework/scripts/libs/requirejs/plugins/service.js:
--------------------------------------------------------------------------------
1 | define(function () {
2 | return {
3 | load: function (name, req, onload, config) {
4 | var url = studiox.appPath + 'api/StudioXServiceProxies/Get?name=' + name;
5 | req([url], function (value) {
6 | onload(value);
7 | });
8 | }
9 | };
10 | });
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/StudioX/Framework/scripts/libs/studiox.jquery.d.ts:
--------------------------------------------------------------------------------
1 | declare namespace studiox {
2 |
3 | //TODO: Gets JQuery.AjaxOptions and returns JQuery.Promise
4 |
5 | function ajax(userOptions: any): any;
6 |
7 | }
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/StudioX/Framework/scripts/libs/studiox.signalr.d.ts:
--------------------------------------------------------------------------------
1 | declare namespace studiox {
2 |
3 | namespace signalr {
4 |
5 | let autoConnect: boolean;
6 |
7 | function connect(): any;
8 |
9 | namespace hubs {
10 |
11 | let common: any;
12 |
13 | }
14 |
15 | }
16 |
17 | }
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/StudioX/Framework/scripts/libs/utils/ie10fix.js:
--------------------------------------------------------------------------------
1 | //Windows Phone 8 and Internet Explorer 10 FIX
2 | if (navigator.userAgent.match(/IEMobile\/10\.0/)) {
3 | var msViewportStyle = document.createElement("style");
4 | msViewportStyle.appendChild(
5 | document.createTextNode(
6 | "@-ms-viewport{width:auto!important}"
7 | )
8 | );
9 |
10 | document.getElementsByTagName("head")[0].appendChild(msViewportStyle);
11 | }
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/StudioX/Framework/styles/studiox.mixings.css:
--------------------------------------------------------------------------------
1 | /*# sourceMappingURL=studiox.mixings.css.map */
2 |
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/StudioX/Framework/styles/studiox.mixings.css.map:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/StudioX/Framework/styles/studiox.mixings.min.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/StudioX/Framework/styles/utils/ie10fix.css:
--------------------------------------------------------------------------------
1 | @-webkit-viewport {
2 | width: device-width;
3 | }
4 |
5 | @-moz-viewport {
6 | width: device-width;
7 | }
8 |
9 | @-ms-viewport {
10 | width: device-width;
11 | }
12 |
13 | @-o-viewport {
14 | width: device-width;
15 | }
16 |
17 | @viewport
18 |
19 | {
20 | width: device-width;
21 | }
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/studioxsoftware/studiox/73da8d7ec7f952e423c423192063ca4398eafcc6/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/favicon.ico
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/fonts/material-icons/materialicons.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/studioxsoftware/studiox/73da8d7ec7f952e423c423192063ca4398eafcc6/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/fonts/material-icons/materialicons.woff2
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/fonts/roboto/-2n2p-_Y08sg57CNWQfKNvesZW2xOQ-xsNqO47m55DA.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/studioxsoftware/studiox/73da8d7ec7f952e423c423192063ca4398eafcc6/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/fonts/roboto/-2n2p-_Y08sg57CNWQfKNvesZW2xOQ-xsNqO47m55DA.woff2
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/fonts/roboto/77FXFjRbGzN4aCrSFhlh3hJtnKITppOI_IvcXXDNrsc.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/studioxsoftware/studiox/73da8d7ec7f952e423c423192063ca4398eafcc6/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/fonts/roboto/77FXFjRbGzN4aCrSFhlh3hJtnKITppOI_IvcXXDNrsc.woff2
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/fonts/roboto/97uahxiqZRoncBaCEI3aWxJtnKITppOI_IvcXXDNrsc.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/studioxsoftware/studiox/73da8d7ec7f952e423c423192063ca4398eafcc6/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/fonts/roboto/97uahxiqZRoncBaCEI3aWxJtnKITppOI_IvcXXDNrsc.woff2
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/fonts/roboto/CWB0XYA8bzo0kSThX0UTuA.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/studioxsoftware/studiox/73da8d7ec7f952e423c423192063ca4398eafcc6/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/fonts/roboto/CWB0XYA8bzo0kSThX0UTuA.woff2
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/fonts/roboto/Fcx7Wwv8OzT71A3E1XOAjvesZW2xOQ-xsNqO47m55DA.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/studioxsoftware/studiox/73da8d7ec7f952e423c423192063ca4398eafcc6/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/fonts/roboto/Fcx7Wwv8OzT71A3E1XOAjvesZW2xOQ-xsNqO47m55DA.woff2
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/fonts/roboto/NdF9MtnOpLzo-noMoG0miPesZW2xOQ-xsNqO47m55DA.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/studioxsoftware/studiox/73da8d7ec7f952e423c423192063ca4398eafcc6/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/fonts/roboto/NdF9MtnOpLzo-noMoG0miPesZW2xOQ-xsNqO47m55DA.woff2
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/fonts/roboto/PwZc-YbIL414wB9rB1IAPRJtnKITppOI_IvcXXDNrsc.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/studioxsoftware/studiox/73da8d7ec7f952e423c423192063ca4398eafcc6/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/fonts/roboto/PwZc-YbIL414wB9rB1IAPRJtnKITppOI_IvcXXDNrsc.woff2
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/fonts/roboto/UX6i4JxQDm3fVTc1CPuwqhJtnKITppOI_IvcXXDNrsc.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/studioxsoftware/studiox/73da8d7ec7f952e423c423192063ca4398eafcc6/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/fonts/roboto/UX6i4JxQDm3fVTc1CPuwqhJtnKITppOI_IvcXXDNrsc.woff2
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/fonts/roboto/d-6IYplOFocCacKzxwXSOFtXRa8TVwTICgirnJhmVJw.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/studioxsoftware/studiox/73da8d7ec7f952e423c423192063ca4398eafcc6/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/fonts/roboto/d-6IYplOFocCacKzxwXSOFtXRa8TVwTICgirnJhmVJw.woff2
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/fonts/roboto/ek4gzZ-GeXAPcSbHtCeQI_esZW2xOQ-xsNqO47m55DA.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/studioxsoftware/studiox/73da8d7ec7f952e423c423192063ca4398eafcc6/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/fonts/roboto/ek4gzZ-GeXAPcSbHtCeQI_esZW2xOQ-xsNqO47m55DA.woff2
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/fonts/roboto/isZ-wbCXNKAbnjo6_TwHThJtnKITppOI_IvcXXDNrsc.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/studioxsoftware/studiox/73da8d7ec7f952e423c423192063ca4398eafcc6/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/fonts/roboto/isZ-wbCXNKAbnjo6_TwHThJtnKITppOI_IvcXXDNrsc.woff2
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/fonts/roboto/jSN2CGVDbcVyCnfJfjSdfBJtnKITppOI_IvcXXDNrsc.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/studioxsoftware/studiox/73da8d7ec7f952e423c423192063ca4398eafcc6/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/fonts/roboto/jSN2CGVDbcVyCnfJfjSdfBJtnKITppOI_IvcXXDNrsc.woff2
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/fonts/roboto/mErvLBYg_cXG3rLvUsKT_fesZW2xOQ-xsNqO47m55DA.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/studioxsoftware/studiox/73da8d7ec7f952e423c423192063ca4398eafcc6/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/fonts/roboto/mErvLBYg_cXG3rLvUsKT_fesZW2xOQ-xsNqO47m55DA.woff2
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/fonts/roboto/u0TOpm082MNkS5K0Q4rhqvesZW2xOQ-xsNqO47m55DA.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/studioxsoftware/studiox/73da8d7ec7f952e423c423192063ca4398eafcc6/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/fonts/roboto/u0TOpm082MNkS5K0Q4rhqvesZW2xOQ-xsNqO47m55DA.woff2
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/images/user-img-background.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/studioxsoftware/studiox/73da8d7ec7f952e423c423192063ca4398eafcc6/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/images/user-img-background.jpg
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/images/user.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/studioxsoftware/studiox/73da8d7ec7f952e423c423192063ca4398eafcc6/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/images/user.png
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/js/script.js:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/scss/_bootstrapnotify.scss:
--------------------------------------------------------------------------------
1 | .bootstrap-notify-container {
2 | max-width: 320px;
3 | text-align: center;
4 | }
5 |
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/scss/_collapse.scss:
--------------------------------------------------------------------------------
1 | .collapse,
2 | .collapse.in,
3 | .collapsing {
4 | .well {
5 | @include border-radius(0);
6 | margin-bottom: 0;
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/scss/_colorpicker.scss:
--------------------------------------------------------------------------------
1 | .colorpicker {
2 | z-index: 1;
3 |
4 | &:before,
5 | &:after {
6 | display: none !important;
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/scss/_dropzone.scss:
--------------------------------------------------------------------------------
1 | .dropzone {
2 | border: 2px solid transparent !important;
3 | background-color: #eee !important;
4 |
5 | .dz-message {
6 | .drag-icon-cph {
7 | .material-icons {
8 | font-size: 80px;
9 | color: #777;
10 | }
11 | }
12 | }
13 | }
14 |
15 | .dz-drag-hover {
16 | border: 2px dashed #888 !important;
17 | }
18 |
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/scss/_ionrangeslider.scss:
--------------------------------------------------------------------------------
1 | .irs {
2 | .irs-min,
3 | .irs-max,
4 | .irs-from,
5 | .irs-to,
6 | .irs-single {
7 | @include border-radius(0);
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/scss/_labels.scss:
--------------------------------------------------------------------------------
1 | .label {
2 | @include border-radius(0);
3 | }
4 |
5 | .label-primary {
6 | background-color: #1f91f3;
7 | }
8 |
9 | .label-success {
10 | background-color: #2b982b;
11 | }
12 |
13 | .label-info {
14 | background-color: #00b0e4;
15 | }
16 |
17 | .label-warning {
18 | background-color: #ff9600;
19 | }
20 |
21 | .label-danger {
22 | background-color: #fb483a;
23 | }
24 |
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/scss/_lightgallery.scss:
--------------------------------------------------------------------------------
1 | .lg-outer {
2 | .lg-thumb-item,
3 | .lg-toogle-thumb {
4 | @include border-radius(0 !important);
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/scss/_maps.scss:
--------------------------------------------------------------------------------
1 | /* Google Maps */
2 | .gmap {
3 | width: 100%;
4 | height: 400px;
5 | }
6 |
7 | /* jVector Map */
8 | .jvector-map {
9 | width: 100%;
10 | height: 600px;
11 | }
12 |
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/scss/_materialicons.scss:
--------------------------------------------------------------------------------
1 | .material-icons.md-18 { font-size: 18px; }
2 | .material-icons.md-24 { font-size: 24px; }
3 | .material-icons.md-26 { font-size: 26px; }
4 | .material-icons.md-28 { font-size: 28px; }
5 | .material-icons.md-30 { font-size: 30px; }
6 | .material-icons.md-32 { font-size: 32px; }
7 | .material-icons.md-36 { font-size: 36px; }
8 | .material-icons.md-48 { font-size: 48px; }
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/scss/_mediaobject.scss:
--------------------------------------------------------------------------------
1 | .media {
2 | margin-bottom: 25px;
3 |
4 | .media-body {
5 | color: #777;
6 | font-size: 13px;
7 |
8 | .media-heading {
9 | font-size: 16px;
10 | font-weight: bold;
11 | color: #333;
12 | }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/scss/_tagsinput.scss:
--------------------------------------------------------------------------------
1 | .bootstrap-tagsinput {
2 | @include box-shadow(none !important);
3 | border: none !important;
4 | }
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/scss/_thumbnails.scss:
--------------------------------------------------------------------------------
1 | .thumbnail {
2 | @include border-radius(0);
3 |
4 | p:not(button) {
5 | color: #999999;
6 | font-size: 14px;
7 | }
8 |
9 | h3 {
10 | font-weight: bold;
11 | font-size: 17px;
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/scss/_waveseffect.scss:
--------------------------------------------------------------------------------
1 | .waves-effect {
2 | @each $key, $val in $colors {
3 | &.waves-#{$key} {
4 | .waves-ripple {
5 | background: rgba($val, 0.5);
6 | }
7 | }
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/view-resources/Views/Account/Login.css:
--------------------------------------------------------------------------------
1 | #LoginArea {
2 | max-width: 400px;
3 | margin: 120px auto 10px auto;
4 | }
5 | .social-icons {
6 | padding-left: 0px;
7 | }
8 | .social-icons a.btn-sm {
9 | margin-right: 5px;
10 | }
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/view-resources/Views/Account/Login.less:
--------------------------------------------------------------------------------
1 | #LoginArea {
2 | max-width: 400px;
3 | margin: 120px auto 10px auto;
4 | }
5 |
6 | .social-icons {
7 | padding-left: 0px;
8 |
9 | a.btn-sm {
10 | margin-right: 5px;
11 | }
12 | }
13 |
14 |
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/view-resources/Views/Account/Login.min.css:
--------------------------------------------------------------------------------
1 | #LoginArea{max-width:400px;margin:120px auto 10px auto;}.social-icons{padding-left:0;}.social-icons a.btn-sm{margin-right:5px;}
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/view-resources/Views/Account/_Layout.css:
--------------------------------------------------------------------------------
1 | .language-switch-area {
2 | text-align: center;
3 | padding: 10px;
4 | }
5 | .famfamfam-flags {
6 | display: inline-block;
7 | }
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/view-resources/Views/Account/_Layout.less:
--------------------------------------------------------------------------------
1 | .language-switch-area {
2 | text-align: center;
3 | padding: 10px;
4 | }
5 |
6 | .famfamfam-flags {
7 | display: inline-block;
8 | }
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/view-resources/Views/Account/_Layout.min.css:
--------------------------------------------------------------------------------
1 | .language-switch-area{text-align:center;padding:10px;}.famfamfam-flags{display:inline-block;}
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/view-resources/Views/Shared/Components/TenantChange/Default.min.js:
--------------------------------------------------------------------------------
1 | (function(){$(".tenant-change-component a").click(function(n){n.preventDefault();$.ajax({url:studiox.appPath+"Account/TenantChangeModal",type:"POST",contentType:"application/html",success:function(n){$("#TenantChangeModal div.modal-content").html(n)},error:function(){}})});$(".tenant-change-component input:first").focus()})();
2 |
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/view-resources/Views/Shared/_Layout.css:
--------------------------------------------------------------------------------
1 | .famfamfam-flags {
2 | display: inline-block;
3 | }
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/view-resources/Views/Shared/_Layout.less:
--------------------------------------------------------------------------------
1 | .famfamfam-flags {
2 | display: inline-block;
3 | }
--------------------------------------------------------------------------------
/aspnet-core/src/StudioX.Boilerplate.Web.Mvc/wwwroot/view-resources/Views/Shared/_Layout.min.css:
--------------------------------------------------------------------------------
1 | .famfamfam-flags{display:inline-block;}
--------------------------------------------------------------------------------
/aspnet-core/test/StudioX.Boilerplate.Tests/MultiTenantFactAttribute.cs:
--------------------------------------------------------------------------------
1 | using Xunit;
2 |
3 | namespace StudioX.Boilerplate.Tests
4 | {
5 | public sealed class MultiTenantFactAttribute : FactAttribute
6 | {
7 | public MultiTenantFactAttribute()
8 | {
9 | if (!BoilerplateConsts.MultiTenancyEnabled)
10 | {
11 | Skip = "MultiTenancy is disabled.";
12 | }
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/framework/src/StudioX.AspNetCore.TestBase/TestOptions.cs:
--------------------------------------------------------------------------------
1 | using StudioX.Collections;
2 | using StudioX.Modules;
3 |
4 | namespace StudioX.AspNetCore.TestBase
5 | {
6 | public class TestOptions
7 | {
8 | public ITypeList Modules { get; private set; }
9 |
10 | public TestOptions()
11 | {
12 | Modules = new TypeList();
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.AspNetCore/AspNetCore/Mvc/Results/Caching/ClientCacheScope.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.AspNetCore.Mvc.Results.Caching
2 | {
3 | public enum ClientCacheScope
4 | {
5 | Public,
6 | Private
7 | }
8 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.AspNetCore/AspNetCore/Mvc/Results/Caching/IClientCacheAttribute.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.AspNetCore.Mvc.Filters;
2 |
3 | namespace StudioX.AspNetCore.Mvc.Results.Caching
4 | {
5 | public interface IClientCacheAttribute
6 | {
7 | void Apply(ResultExecutingContext context);
8 | }
9 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.AspNetCore/AspNetCore/Mvc/Results/Wrapping/IStudioXActionResultWrapper.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.AspNetCore.Mvc.Filters;
2 |
3 | namespace StudioX.AspNetCore.Mvc.Results.Wrapping
4 | {
5 | public interface IStudioXActionResultWrapper
6 | {
7 | void Wrap(ResultExecutingContext actionResult);
8 | }
9 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.AspNetCore/AspNetCore/Mvc/Results/Wrapping/IStudioXActionResultWrapperFactory.cs:
--------------------------------------------------------------------------------
1 | using JetBrains.Annotations;
2 | using Microsoft.AspNetCore.Mvc.Filters;
3 | using StudioX.Dependency;
4 |
5 | namespace StudioX.AspNetCore.Mvc.Results.Wrapping
6 | {
7 | public interface IStudioXActionResultWrapperFactory : ITransientDependency
8 | {
9 | IStudioXActionResultWrapper CreateFor([NotNull] ResultExecutingContext actionResult);
10 | }
11 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.AspNetCore/AspNetCore/Mvc/Results/Wrapping/NullStudioXActionResultWrapper.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.AspNetCore.Mvc;
2 | using Microsoft.AspNetCore.Mvc.Filters;
3 |
4 | namespace StudioX.AspNetCore.Mvc.Results.Wrapping
5 | {
6 | public class NullStudioXActionResultWrapper : IStudioXActionResultWrapper
7 | {
8 | public void Wrap(ResultExecutingContext actionResult)
9 | {
10 |
11 | }
12 | }
13 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.AspNetCore/AspNetCore/StudioXServiceOptions.cs:
--------------------------------------------------------------------------------
1 | using StudioX.Dependency;
2 | using StudioX.PlugIns;
3 |
4 | namespace StudioX.AspNetCore
5 | {
6 | public class StudioXServiceOptions
7 | {
8 | public IIocManager IocManager { get; set; }
9 |
10 | public PlugInSourceList PlugInSources { get; }
11 |
12 | public StudioXServiceOptions()
13 | {
14 | PlugInSources = new PlugInSourceList();
15 | }
16 | }
17 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.Castle.Log4Net/Castle/Logging/Log4Net/LoggingFacilityExtensions.cs:
--------------------------------------------------------------------------------
1 | using Castle.Facilities.Logging;
2 |
3 | namespace StudioX.Castle.Logging.Log4Net
4 | {
5 | public static class LoggingFacilityExtensions
6 | {
7 | public static LoggingFacility UseStudioXLog4Net(this LoggingFacility loggingFacility)
8 | {
9 | return loggingFacility.LogUsing();
10 | }
11 | }
12 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.Castle.Log4Net/Castle/Logging/Log4Net/StudioXCastleLog4NetModule.cs:
--------------------------------------------------------------------------------
1 | using StudioX.Modules;
2 |
3 | namespace StudioX.Castle.Logging.Log4Net
4 | {
5 | ///
6 | /// StudioX Castle Log4Net module.
7 | ///
8 | [DependsOn(typeof(StudioXKernelModule))]
9 | public class StudioXCastleLog4NetModule : StudioXModule
10 | {
11 | }
12 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.Dapper/Dapper/Filters/Action/IDapperActionFilter.cs:
--------------------------------------------------------------------------------
1 | using StudioX.Dependency;
2 | using StudioX.Domain.Entities;
3 |
4 | namespace StudioX.Dapper.Filters.Action
5 | {
6 | public interface IDapperActionFilter : ITransientDependency
7 | {
8 | void ExecuteFilter(TEntity entity) where TEntity : class, IEntity;
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/framework/src/StudioX.Dapper/Dapper/Repositories/IDapperRepositoryOfTEntity.cs:
--------------------------------------------------------------------------------
1 | using StudioX.Domain.Entities;
2 |
3 | namespace StudioX.Dapper.Repositories
4 | {
5 | public interface IDapperRepository : IDapperRepository where TEntity : class, IEntity
6 | {
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/framework/src/StudioX.EntityFramework.Common/DefaultDbContextAttribute.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace StudioX.EntityFramework
4 | {
5 | ///
6 | /// Used to mark a DbContext as default for a multi db context project.
7 | ///
8 | public class DefaultDbContextAttribute : Attribute
9 | {
10 |
11 | }
12 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.EntityFramework.Common/IDbContextEntityFinder.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using StudioX.Domain.Entities;
4 |
5 | namespace StudioX.EntityFramework
6 | {
7 | public interface IDbContextEntityFinder
8 | {
9 | IEnumerable GetEntityTypeInfos(Type dbContextType);
10 | }
11 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.EntityFramework.Common/IDbContextTypeMatcher.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace StudioX.EntityFramework
4 | {
5 | public interface IDbContextTypeMatcher
6 | {
7 | void Populate(Type[] dbContextTypes);
8 |
9 | Type GetConcreteType(Type sourceDbContextType);
10 | }
11 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.EntityFramework.Common/Repositories/IEfGenericRepositoryRegistrar.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using StudioX.Dependency;
3 | using StudioX.Domain.Repositories;
4 |
5 | namespace StudioX.EntityFramework.Repositories
6 | {
7 | public interface IEfGenericRepositoryRegistrar
8 | {
9 | void RegisterForDbContext(Type dbContextType, IIocManager iocManager, AutoRepositoryTypesAttribute defaultAutoRepositoryTypesAttribute);
10 | }
11 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.EntityFramework.GraphDiff/GraphDiff/Configuration/IStudioXEntityFrameworkGraphDiffModuleConfiguration.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using StudioX.EntityFramework.GraphDiff.Mapping;
3 |
4 | namespace StudioX.EntityFramework.GraphDiff.Configuration
5 | {
6 | public interface IStudioXEntityFrameworkGraphDiffModuleConfiguration
7 | {
8 | List EntityMappings { get; set; }
9 | }
10 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.EntityFramework.GraphDiff/GraphDiff/Configuration/StudioXEntityFrameworkGraphDiffModuleConfiguration.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using StudioX.EntityFramework.GraphDiff.Mapping;
3 |
4 | namespace StudioX.EntityFramework.GraphDiff.Configuration
5 | {
6 | public class StudioXEntityFrameworkGraphDiffModuleConfiguration : IStudioXEntityFrameworkGraphDiffModuleConfiguration
7 | {
8 | public List EntityMappings { get; set; }
9 | }
10 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.EntityFramework.GraphDiff/GraphDiff/Mapping/IEntityMappingManager.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Linq.Expressions;
3 | using RefactorThis.GraphDiff;
4 |
5 | namespace StudioX.EntityFramework.GraphDiff.Mapping
6 | {
7 | public interface IEntityMappingManager
8 | {
9 | Expression, object>> GetEntityMappingOrNull();
10 | }
11 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.EntityFramework/EntityFramework/DbContextTypeMatcher.cs:
--------------------------------------------------------------------------------
1 | using StudioX.Domain.Uow;
2 |
3 | namespace StudioX.EntityFramework
4 | {
5 | public class DbContextTypeMatcher : DbContextTypeMatcher
6 | {
7 | public DbContextTypeMatcher(ICurrentUnitOfWorkProvider currentUnitOfWorkProvider)
8 | : base(currentUnitOfWorkProvider)
9 | {
10 | }
11 | }
12 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.EntityFramework/EntityFramework/Repositories/IRepositoryWithDbContext.cs:
--------------------------------------------------------------------------------
1 | using System.Data.Entity;
2 |
3 | namespace StudioX.EntityFramework.Repositories
4 | {
5 | public interface IRepositoryWithDbContext
6 | {
7 | DbContext GetDbContext();
8 | }
9 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.EntityFramework/EntityFramework/Uow/ActiveDbContextInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Data.Entity;
2 |
3 | namespace StudioX.EntityFramework.Uow
4 | {
5 | public class ActiveDbContextInfo
6 | {
7 | public DbContext DbContext { get; }
8 |
9 | public ActiveDbContextInfo(DbContext dbContext)
10 | {
11 | DbContext = dbContext;
12 | }
13 | }
14 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.EntityFramework/EntityFramework/Uow/IEfUnitOfWorkFilterExecuter.cs:
--------------------------------------------------------------------------------
1 | using System.Data.Entity;
2 | using StudioX.Domain.Uow;
3 |
4 | namespace StudioX.EntityFramework.Uow
5 | {
6 | public interface IEfUnitOfWorkFilterExecuter : IUnitOfWorkFilterExecuter
7 | {
8 | void ApplyCurrentFilters(IUnitOfWork unitOfWork, DbContext dbContext);
9 | }
10 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.EntityFrameworkCore/EntityFrameworkCore/Configuration/IStudioXDbContextConfigurer.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.EntityFrameworkCore;
2 |
3 | namespace StudioX.EntityFrameworkCore.Configuration
4 | {
5 | public interface IStudioXDbContextConfigurer
6 | where TDbContext : DbContext
7 | {
8 | void Configure(StudioXDbContextConfiguration configuration);
9 | }
10 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.EntityFrameworkCore/EntityFrameworkCore/Configuration/IStudioXEfCoreConfiguration.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Microsoft.EntityFrameworkCore;
3 |
4 | namespace StudioX.EntityFrameworkCore.Configuration
5 | {
6 | public interface IStudioXEfCoreConfiguration
7 | {
8 | void AddDbContext(Action> action)
9 | where TDbContext : DbContext;
10 | }
11 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.EntityFrameworkCore/EntityFrameworkCore/DbContextTypeMatcher.cs:
--------------------------------------------------------------------------------
1 | using StudioX.Domain.Uow;
2 | using StudioX.EntityFramework;
3 |
4 | namespace StudioX.EntityFrameworkCore
5 | {
6 | public class DbContextTypeMatcher : DbContextTypeMatcher
7 | {
8 | public DbContextTypeMatcher(ICurrentUnitOfWorkProvider currentUnitOfWorkProvider)
9 | : base(currentUnitOfWorkProvider)
10 | {
11 | }
12 | }
13 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.EntityFrameworkCore/EntityFrameworkCore/IDbContextProvider.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.EntityFrameworkCore;
2 | using StudioX.MultiTenancy;
3 |
4 | namespace StudioX.EntityFrameworkCore
5 | {
6 | public interface IDbContextProvider
7 | where TDbContext : DbContext
8 | {
9 | TDbContext GetDbContext();
10 |
11 | TDbContext GetDbContext(MultiTenancySides? multiTenancySide);
12 | }
13 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.EntityFrameworkCore/EntityFrameworkCore/IDbContextResolver.cs:
--------------------------------------------------------------------------------
1 | using System.Data.Common;
2 | using Microsoft.EntityFrameworkCore;
3 |
4 | namespace StudioX.EntityFrameworkCore
5 | {
6 | public interface IDbContextResolver
7 | {
8 | TDbContext Resolve(string connectionString, DbConnection existingConnection)
9 | where TDbContext : DbContext;
10 | }
11 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.EntityFrameworkCore/EntityFrameworkCore/Repositories/IRepositoryWithDbContext.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.EntityFrameworkCore;
2 |
3 | namespace StudioX.EntityFrameworkCore.Repositories
4 | {
5 | public interface IRepositoryWithDbContext
6 | {
7 | DbContext GetDbContext();
8 | }
9 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.MailKit/IMailKitSmtpBuilder.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using MailKit.Net.Smtp;
3 |
4 | namespace StudioX.MailKit
5 | {
6 | public interface IMailKitSmtpBuilder
7 | {
8 | SmtpClient Build();
9 | }
10 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.MemoryDb/MemoryDb/Configuration/IStudioXMemoryDbModuleConfiguration.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.MemoryDb.Configuration
2 | {
3 | public interface IStudioXMemoryDbModuleConfiguration
4 | {
5 | //TODO: Configuration...
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/framework/src/StudioX.MemoryDb/MemoryDb/Configuration/StudioXMemoryDbModuleConfiguration.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.MemoryDb.Configuration
2 | {
3 | internal class StudioXMemoryDbModuleConfiguration : IStudioXMemoryDbModuleConfiguration
4 | {
5 | //TODO: Configuration...
6 | }
7 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.MemoryDb/MemoryDb/IMemoryDatabaseProvider.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.MemoryDb
2 | {
3 | ///
4 | /// Defines interface to obtain a object.
5 | ///
6 | public interface IMemoryDatabaseProvider
7 | {
8 | ///
9 | /// Gets the .
10 | ///
11 | MemoryDatabase Database { get; }
12 | }
13 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.MemoryDb/README.md:
--------------------------------------------------------------------------------
1 | ASP.NET Boilerplate - MemoryDB
2 | ------------------------------
3 |
4 | MemoryDb implementation for ASP.NET Boilerplate. It's aimed to be used in tests.
5 |
6 | IMPORTANT: This project is experimental for now and not tested yet.
--------------------------------------------------------------------------------
/framework/src/StudioX.MongoDB/MongoDb/Configuration/IStudioXMongoDbModuleConfiguration.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.MongoDb.Configuration
2 | {
3 | public interface IStudioXMongoDbModuleConfiguration
4 | {
5 | string ConnectionString { get; set; }
6 |
7 | string DatatabaseName { get; set; }
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/framework/src/StudioX.MongoDB/MongoDb/Configuration/StudioXMongoDbModuleConfiguration.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.MongoDb.Configuration
2 | {
3 | internal class StudioXMongoDbModuleConfiguration : IStudioXMongoDbModuleConfiguration
4 | {
5 | public string ConnectionString { get; set; }
6 |
7 | public string DatatabaseName { get; set; }
8 | }
9 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.MongoDB/MongoDb/IMongoDatabaseProvider.cs:
--------------------------------------------------------------------------------
1 | using MongoDB.Driver;
2 |
3 | namespace StudioX.MongoDb
4 | {
5 | ///
6 | /// Defines interface to obtain a object.
7 | ///
8 | public interface IMongoDatabaseProvider
9 | {
10 | ///
11 | /// Gets the .
12 | ///
13 | MongoDatabase Database { get; }
14 | }
15 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.Owin/StudioXOwinOptions.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Owin
2 | {
3 | public class StudioXOwinOptions
4 | {
5 | ///
6 | /// Default: true.
7 | ///
8 | public bool UseEmbeddedFiles { get; set; }
9 |
10 | public StudioXOwinOptions()
11 | {
12 | UseEmbeddedFiles = true;
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.Quartz/Quartz/Configuration/IStudioXQuartzConfiguration.cs:
--------------------------------------------------------------------------------
1 | using Quartz;
2 |
3 | namespace StudioX.Quartz.Configuration
4 | {
5 | public interface IStudioXQuartzConfiguration
6 | {
7 | IScheduler Scheduler { get;}
8 | }
9 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.Quartz/Quartz/Configuration/StudioXQuartzConfiguration.cs:
--------------------------------------------------------------------------------
1 | using Quartz;
2 | using Quartz.Impl;
3 |
4 | namespace StudioX.Quartz.Configuration
5 | {
6 | public class StudioXQuartzConfiguration : IStudioXQuartzConfiguration
7 | {
8 | public IScheduler Scheduler => StdSchedulerFactory.GetDefaultScheduler();
9 | }
10 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.RedisCache/Runtime/Caching/Redis/IStudioXRedisCacheDatabaseProvider.cs:
--------------------------------------------------------------------------------
1 | using StackExchange.Redis;
2 |
3 | namespace StudioX.Runtime.Caching.Redis
4 | {
5 | ///
6 | /// Used to get for Redis cache.
7 | ///
8 | public interface IStudioXRedisCacheDatabaseProvider
9 | {
10 | ///
11 | /// Gets the database connection.
12 | ///
13 | IDatabase GetDatabase();
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/framework/src/StudioX.Web.Api/WebApi/Controllers/Dynamic/Builders/IDynamicApiControllerBuilder.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 |
3 | namespace StudioX.WebApi.Controllers.Dynamic.Builders
4 | {
5 | public interface IDynamicApiControllerBuilder
6 | {
7 | IApiControllerBuilder For(string serviceName);
8 |
9 | IBatchApiControllerBuilder ForAll(Assembly assembly, string servicePrefix);
10 | }
11 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.Web.Api/WebApi/Controllers/Dynamic/Clients/ApiClientBuilder.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.WebApi.Controllers.Dynamic.Clients
2 | {
3 | internal class ApiClientBuilder : IApiClientBuilder
4 | {
5 | public ApiClientBuilder(string url)
6 | {
7 |
8 | }
9 |
10 | public void Build()
11 | {
12 |
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.Web.Api/WebApi/Controllers/Dynamic/Clients/IApiClientBuilder.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.WebApi.Controllers.Dynamic.Clients
2 | {
3 | ///
4 | ///
5 | ///
6 | public interface IApiClientBuilder
7 | {
8 | ///
9 | ///
10 | ///
11 | void Build();
12 | }
13 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.Web.Api/WebApi/Controllers/Dynamic/IDynamicApiController.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.WebApi.Controllers.Dynamic
2 | {
3 | ///
4 | /// This interface is just used to mark dynamic web api controllers.
5 | ///
6 | internal interface IDynamicApiController
7 | {
8 |
9 | }
10 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.Web.Api/WebApi/Controllers/Dynamic/Scripting/IScriptProxyGenerator.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.WebApi.Controllers.Dynamic.Scripting
2 | {
3 | internal interface IScriptProxyGenerator
4 | {
5 | string Generate();
6 | }
7 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.Web.Api/WebApi/Controllers/Dynamic/Scripting/ProxyScriptType.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.WebApi.Controllers.Dynamic.Scripting
2 | {
3 | ///
4 | ///
5 | ///
6 | public enum ProxyScriptType : byte
7 | {
8 | JQuery = 0,
9 | Angular = 1
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/framework/src/StudioX.Web.Api/WebApi/Runtime/Caching/ClearAllCacheModel.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.WebApi.Runtime.Caching
2 | {
3 | public class ClearAllCacheModel
4 | {
5 | public string Password { get; set; }
6 | }
7 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.Web.Api/WebApi/Runtime/Caching/ClearCacheModel.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.WebApi.Runtime.Caching
2 | {
3 | public class ClearCacheModel
4 | {
5 | public string Password { get; set; }
6 |
7 | public string[] Caches { get; set; }
8 | }
9 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.Web.Api/WebApi/Runtime/Caching/ClearCacheSettingNames.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.WebApi.Runtime.Caching
2 | {
3 | public static class ClearCacheSettingNames
4 | {
5 | ///
6 | /// StudioX.WebApi.Runtime.Caching.ClearPassword
7 | ///
8 | public const string Password = "StudioX.WebApi.Runtime.Caching.ClearPassword";
9 | }
10 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.Web.Common/Web/Api/Modeling/IApiDescriptionModelProvider.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Web.Api.Modeling
2 | {
3 | public interface IApiDescriptionModelProvider
4 | {
5 | ApplicationApiDescriptionModel CreateModel();
6 | }
7 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.Web.Common/Web/Api/Modeling/ReturnValueApiDescriptionModel.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace StudioX.Web.Api.Modeling
4 | {
5 | [Serializable]
6 | public class ReturnValueApiDescriptionModel
7 | {
8 | public Type Type { get; }
9 | public string TypeAsString { get; }
10 |
11 | public ReturnValueApiDescriptionModel(Type type)
12 | {
13 | Type = type;
14 | TypeAsString = type.FullName;
15 | }
16 | }
17 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.Web.Common/Web/Api/ProxyScripting/Configuration/IApiProxyScriptingConfiguration.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 |
4 | namespace StudioX.Web.Api.ProxyScripting.Configuration
5 | {
6 | public interface IApiProxyScriptingConfiguration
7 | {
8 | ///
9 | /// Used to add/replace proxy script generators.
10 | ///
11 | IDictionary Generators { get; }
12 | }
13 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.Web.Common/Web/Api/ProxyScripting/Generators/IProxyScriptGenerator.cs:
--------------------------------------------------------------------------------
1 | using StudioX.Web.Api.Modeling;
2 |
3 | namespace StudioX.Web.Api.ProxyScripting.Generators
4 | {
5 | public interface IProxyScriptGenerator
6 | {
7 | string CreateScript(ApplicationApiDescriptionModel model);
8 | }
9 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.Web.Common/Web/Api/ProxyScripting/IApiProxyScriptManager.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Web.Api.ProxyScripting
2 | {
3 | public interface IApiProxyScriptManager
4 | {
5 | string GetScript(ApiProxyGenerationOptions options);
6 | }
7 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.Web.Common/Web/Configuration/IWebEmbeddedResourcesConfiguration.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace StudioX.Web.Configuration
4 | {
5 | public interface IWebEmbeddedResourcesConfiguration
6 | {
7 | ///
8 | /// List of file extensions (without dot) to ignore for embedded resources.
9 | /// Default extensions: cshtml, config.
10 | ///
11 | HashSet IgnoredFileExtensions { get; }
12 | }
13 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.Web.Common/Web/Features/IFeaturesScriptManager.cs:
--------------------------------------------------------------------------------
1 | using System.Threading.Tasks;
2 |
3 | namespace StudioX.Web.Features
4 | {
5 | ///
6 | /// This class is used to build feature system script.
7 | ///
8 | public interface IFeaturesScriptManager
9 | {
10 | ///
11 | /// Gets Javascript that contains all feature information.
12 | ///
13 | Task GetScriptAsync();
14 | }
15 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.Web.Common/Web/Localization/StudioXWebXmlSource/StudioXWeb-zh-CN.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/framework/src/StudioX.Web.Common/Web/Models/StudioXUserConfiguration/StudioXLocalizationSourceDto.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Web.Models.StudioXUserConfiguration
2 | {
3 | public class StudioXLocalizationSourceDto
4 | {
5 | public string Name { get; set; }
6 |
7 | public string Type { get; set; }
8 | }
9 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.Web.Common/Web/Models/StudioXUserConfiguration/StudioXStringValueDto.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Web.Models.StudioXUserConfiguration
2 | {
3 | public class StudioXStringValueDto
4 | {
5 | public string Value { get; set; }
6 | }
7 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.Web.Common/Web/Models/StudioXUserConfiguration/StudioXUserAntiForgeryConfigDto.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Web.Models.StudioXUserConfiguration
2 | {
3 | public class StudioXUserAntiForgeryConfigDto
4 | {
5 | public string TokenCookieName { get; set; }
6 |
7 | public string TokenHeaderName { get; set; }
8 | }
9 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.Web.Common/Web/Models/StudioXUserConfiguration/StudioXUserAuthConfigDto.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace StudioX.Web.Models.StudioXUserConfiguration
4 | {
5 | public class StudioXUserAuthConfigDto
6 | {
7 | public Dictionary AllPermissions { get; set; }
8 |
9 | public Dictionary GrantedPermissions { get; set; }
10 |
11 | }
12 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.Web.Common/Web/Models/StudioXUserConfiguration/StudioXUserClockConfigDto.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Web.Models.StudioXUserConfiguration
2 | {
3 | public class StudioXUserClockConfigDto
4 | {
5 | public string Provider { get; set; }
6 | }
7 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.Web.Common/Web/Models/StudioXUserConfiguration/StudioXUserCurrentCultureConfigDto.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Web.Models.StudioXUserConfiguration
2 | {
3 | public class StudioXUserCurrentCultureConfigDto
4 | {
5 | public string Name { get; set; }
6 |
7 | public string DisplayName { get; set; }
8 | }
9 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.Web.Common/Web/Models/StudioXUserConfiguration/StudioXUserFeatureConfigDto.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace StudioX.Web.Models.StudioXUserConfiguration
4 | {
5 | public class StudioXUserFeatureConfigDto
6 | {
7 | public Dictionary AllFeatures { get; set; }
8 | }
9 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.Web.Common/Web/Models/StudioXUserConfiguration/StudioXUserIanaTimeZoneConfigDto.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Web.Models.StudioXUserConfiguration
2 | {
3 | public class StudioXUserIanaTimeZoneConfigDto
4 | {
5 | public string TimeZoneId { get; set; }
6 | }
7 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.Web.Common/Web/Models/StudioXUserConfiguration/StudioXUserNavConfigDto.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using StudioX.Application.Navigation;
3 |
4 | namespace StudioX.Web.Models.StudioXUserConfiguration
5 | {
6 | public class StudioXUserNavConfigDto
7 | {
8 | public Dictionary Menus { get; set; }
9 | }
10 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.Web.Common/Web/Models/StudioXUserConfiguration/StudioXUserSecurityConfigDto.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Web.Models.StudioXUserConfiguration
2 | {
3 | public class StudioXUserSecurityConfigDto
4 | {
5 | public StudioXUserAntiForgeryConfigDto AntiForgery { get; set; }
6 | }
7 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.Web.Common/Web/Models/StudioXUserConfiguration/StudioXUserSettingConfigDto.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace StudioX.Web.Models.StudioXUserConfiguration
4 | {
5 | public class StudioXUserSettingConfigDto
6 | {
7 | public Dictionary Values { get; set; }
8 | }
9 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.Web.Common/Web/Models/StudioXUserConfiguration/StudioXUserTimeZoneConfigDto.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Web.Models.StudioXUserConfiguration
2 | {
3 | public class StudioXUserTimeZoneConfigDto
4 | {
5 | public StudioXUserWindowsTimeZoneConfigDto Windows { get; set; }
6 |
7 | public StudioXUserIanaTimeZoneConfigDto Iana { get; set; }
8 | }
9 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.Web.Common/Web/Models/StudioXUserConfiguration/StudioXUserTimingConfigDto.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Web.Models.StudioXUserConfiguration
2 | {
3 | public class StudioXUserTimingConfigDto
4 | {
5 | public StudioXUserTimeZoneConfigDto TimeZoneInfo { get; set; }
6 | }
7 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.Web.Common/Web/MultiTenancy/IMultiTenancyScriptManager.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Web.MultiTenancy
2 | {
3 | ///
4 | /// Used to create client scripts for multi-tenancy.
5 | ///
6 | public interface IMultiTenancyScriptManager
7 | {
8 | string GetScript();
9 | }
10 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.Web.Common/Web/MultiTenancy/IWebMultiTenancyConfiguration.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Web.MultiTenancy
2 | {
3 | public interface IWebMultiTenancyConfiguration
4 | {
5 | string DomainFormat { get; set; }
6 | }
7 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.Web.Common/Web/MultiTenancy/WebMultiTenancyConfiguration.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Web.MultiTenancy
2 | {
3 | public class WebMultiTenancyConfiguration : IWebMultiTenancyConfiguration
4 | {
5 | public string DomainFormat { get; set; }
6 | }
7 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.Web.Common/Web/Security/AntiForgery/IStudioXAntiForgeryManager.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Web.Security.AntiForgery
2 | {
3 | public interface IStudioXAntiForgeryManager
4 | {
5 | IStudioXAntiForgeryConfiguration Configuration { get; }
6 |
7 | string GenerateToken();
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/framework/src/StudioX.Web.Common/Web/Security/ISecurityScriptManager.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Web.Security
2 | {
3 | public interface ISecurityScriptManager
4 | {
5 | string GetScript();
6 | }
7 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.Web.Common/Web/Sessions/ISessionScriptManager.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Web.Sessions
2 | {
3 | ///
4 | /// Used to create client scripts for session.
5 | ///
6 | public interface ISessionScriptManager
7 | {
8 | string GetScript();
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/framework/src/StudioX.Web.Common/Web/Settings/ISettingScriptManager.cs:
--------------------------------------------------------------------------------
1 | using System.Threading.Tasks;
2 |
3 | namespace StudioX.Web.Settings
4 | {
5 | ///
6 | /// Define interface to get setting scripts
7 | ///
8 | public interface ISettingScriptManager
9 | {
10 | ///
11 | /// Gets Javascript that contains setting values.
12 | ///
13 | Task GetScriptAsync();
14 | }
15 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.Web.Common/Web/StudioXWebConsts.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Web
2 | {
3 | public static class StudioXWebConsts
4 | {
5 | public const string LocalizaionSourceName = "StudioXWeb";
6 | }
7 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.Web.Common/Web/Timing/ITimingScriptManager.cs:
--------------------------------------------------------------------------------
1 | using System.Threading.Tasks;
2 |
3 | namespace StudioX.Web.Timing
4 | {
5 | ///
6 | /// Define interface to get timing scripts
7 | ///
8 | public interface ITimingScriptManager
9 | {
10 | ///
11 | /// Gets Javascript that contains all feature information.
12 | ///
13 | Task GetScriptAsync();
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/framework/src/StudioX.Web.Mvc/Web/Mvc/Resources/Embedded/EmbeddedResourceItemCacheDependency.cs:
--------------------------------------------------------------------------------
1 | using System.Web.Caching;
2 | using StudioX.Resources.Embedded;
3 |
4 | namespace StudioX.Web.Mvc.Resources.Embedded
5 | {
6 | public class EmbeddedResourceItemCacheDependency : CacheDependency
7 | {
8 | public EmbeddedResourceItemCacheDependency(EmbeddedResourceItem resource)
9 | {
10 | SetUtcLastModified(resource.LastModifiedUtc);
11 | }
12 | }
13 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.Web.Mvc/Web/Mvc/Views/StudioXWebViewPage.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Web.Mvc.Views
2 | {
3 | ///
4 | /// Base class for all views in StudioX system.
5 | ///
6 | public abstract class StudioXWebViewPage : StudioXWebViewPage
7 | {
8 |
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/framework/src/StudioX.Web/Web/Configuration/IStudioXWebLocalizationConfiguration.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Web.Configuration
2 | {
3 | public interface IStudioXWebLocalizationConfiguration
4 | {
5 | ///
6 | /// Default: "StudioX.Localization.CultureName".
7 | ///
8 | string CookieName { get; set; }
9 | }
10 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.Web/Web/Configuration/IStudioXWebModuleConfiguration.cs:
--------------------------------------------------------------------------------
1 | using StudioX.Web.Security.AntiForgery;
2 |
3 | namespace StudioX.Web.Configuration
4 | {
5 | public interface IStudioXWebModuleConfiguration
6 | {
7 | IStudioXAntiForgeryWebConfiguration AntiForgery { get; }
8 |
9 | IStudioXWebLocalizationConfiguration Localization { get; }
10 | }
11 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.Web/Web/Configuration/StudioXWebLocalizationConfiguration.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Web.Configuration
2 | {
3 | public class StudioXWebLocalizationConfiguration : IStudioXWebLocalizationConfiguration
4 | {
5 | public string CookieName { get; set; }
6 |
7 | public StudioXWebLocalizationConfiguration()
8 | {
9 | CookieName = "StudioX.Localization.CultureName";
10 | }
11 | }
12 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.Web/Web/Localization/ICurrentCultureSetter.cs:
--------------------------------------------------------------------------------
1 | using System.Web;
2 |
3 | namespace StudioX.Web.Localization
4 | {
5 | public interface ICurrentCultureSetter
6 | {
7 | void SetCurrentCulture(HttpContext httpContext);
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/framework/src/StudioX.Web/Web/Security/AntiForgery/DisableStudioXAntiForgeryTokenValidationAttribute.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace StudioX.Web.Security.AntiForgery
4 | {
5 | [AttributeUsage(AttributeTargets.Class | AttributeTargets.Interface | AttributeTargets.Method)]
6 | public class DisableStudioXAntiForgeryTokenValidationAttribute : Attribute
7 | {
8 |
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/framework/src/StudioX.Web/Web/Security/AntiForgery/ValidateStudioXAntiForgeryTokenAttribute.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace StudioX.Web.Security.AntiForgery
4 | {
5 | [AttributeUsage(AttributeTargets.Class | AttributeTargets.Interface | AttributeTargets.Method)]
6 | public class ValidateStudioXAntiForgeryTokenAttribute : Attribute
7 | {
8 |
9 | }
10 | }
--------------------------------------------------------------------------------
/framework/src/StudioX.Web/Web/Session/HttpContextPrincipalAccessor.cs:
--------------------------------------------------------------------------------
1 | using System.Security.Claims;
2 | using System.Web;
3 | using StudioX.Runtime.Session;
4 |
5 | namespace StudioX.Web.Session
6 | {
7 | public class HttpContextPrincipalAccessor : DefaultPrincipalAccessor
8 | {
9 | public override ClaimsPrincipal Principal => HttpContext.Current?.User as ClaimsPrincipal ?? base.Principal;
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/framework/src/StudioX/Application/Features/FeatureConfiguration.cs:
--------------------------------------------------------------------------------
1 | using StudioX.Collections;
2 |
3 | namespace StudioX.Application.Features
4 | {
5 | internal class FeatureConfiguration : IFeatureConfiguration
6 | {
7 | public ITypeList Providers { get; private set; }
8 |
9 | public FeatureConfiguration()
10 | {
11 | Providers = new TypeList();
12 | }
13 | }
14 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Application/Features/IFeatureConfiguration.cs:
--------------------------------------------------------------------------------
1 | using StudioX.Collections;
2 |
3 | namespace StudioX.Application.Features
4 | {
5 | ///
6 | /// Used to configure feature system.
7 | ///
8 | public interface IFeatureConfiguration
9 | {
10 | ///
11 | /// Used to add/remove s.
12 | ///
13 | ITypeList Providers { get; }
14 | }
15 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Application/Navigation/IHasMenuItemDefinitions.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace StudioX.Application.Navigation
4 | {
5 | ///
6 | /// Declares common interface for classes those have menu items.
7 | ///
8 | public interface IHasMenuItemDefinitions
9 | {
10 | ///
11 | /// List of menu items.
12 | ///
13 | IList Items { get; }
14 | }
15 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Application/Navigation/INavigationProviderContext.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Application.Navigation
2 | {
3 | ///
4 | /// Provides infrastructure to set navigation.
5 | ///
6 | public interface INavigationProviderContext
7 | {
8 | ///
9 | /// Gets a reference to the menu manager.
10 | ///
11 | INavigationManager Manager { get; }
12 | }
13 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Application/Navigation/NavigationProviderContext.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Application.Navigation
2 | {
3 | internal class NavigationProviderContext : INavigationProviderContext
4 | {
5 | public INavigationManager Manager { get; }
6 |
7 | public NavigationProviderContext(INavigationManager manager)
8 | {
9 | Manager = manager;
10 | }
11 | }
12 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Application/Services/Dto/IHasLongTotalCount.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Application.Services.Dto
2 | {
3 | ///
4 | /// This interface is defined to standardize to set "Total Count of Items" to a DTO for long type.
5 | ///
6 | public interface IHasLongTotalCount
7 | {
8 | ///
9 | /// Total count of Items.
10 | ///
11 | long TotalCount { get; set; }
12 | }
13 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Application/Services/Dto/IHasTotalCount.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Application.Services.Dto
2 | {
3 | ///
4 | /// This interface is defined to standardize to set "Total Count of Items" to a DTO.
5 | ///
6 | public interface IHasTotalCount
7 | {
8 | ///
9 | /// Total count of Items.
10 | ///
11 | int TotalCount { get; set; }
12 | }
13 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Application/Services/Dto/ILimitedResultRequest.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Application.Services.Dto
2 | {
3 | ///
4 | /// This interface is defined to standardize to request a limited result.
5 | ///
6 | public interface ILimitedResultRequest
7 | {
8 | ///
9 | /// Max expected result count.
10 | ///
11 | int MaxResultCount { get; set; }
12 | }
13 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Application/Services/Dto/IPagedAndSortedResultRequest.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Application.Services.Dto
2 | {
3 | ///
4 | /// This interface is defined to standardize to request a paged and sorted result.
5 | ///
6 | public interface IPagedAndSortedResultRequest : IPagedResultRequest, ISortedResultRequest
7 | {
8 | }
9 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Application/Services/Dto/IPagedResult.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Application.Services.Dto
2 | {
3 | ///
4 | /// This interface is defined to standardize to return a page of items to clients.
5 | ///
6 | /// Type of the items in the list
7 | public interface IPagedResult : IListResult, IHasTotalCount
8 | {
9 | }
10 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Application/Services/Dto/IPagedResultRequest.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Application.Services.Dto
2 | {
3 | ///
4 | /// This interface is defined to standardize to request a paged result.
5 | ///
6 | public interface IPagedResultRequest : ILimitedResultRequest
7 | {
8 | ///
9 | /// Skip count (beginning of the page).
10 | ///
11 | int SkipCount { get; set; }
12 | }
13 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Application/Services/Dto/LimitedResultRequestDto.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel.DataAnnotations;
2 |
3 | namespace StudioX.Application.Services.Dto
4 | {
5 | ///
6 | /// Simply implements .
7 | ///
8 | public class LimitedResultRequestDto : ILimitedResultRequest
9 | {
10 | [Range(1, int.MaxValue)]
11 | public virtual int MaxResultCount { get; set; } = 10;
12 | }
13 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Application/Services/Dto/PagedAndSortedResultRequestDto.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace StudioX.Application.Services.Dto
4 | {
5 | ///
6 | /// Simply implements .
7 | ///
8 | [Serializable]
9 | public class PagedAndSortedResultRequestDto : PagedResultRequestDto, IPagedAndSortedResultRequest
10 | {
11 | public virtual string Sorting { get; set; }
12 | }
13 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Application/Services/IApplicationService.cs:
--------------------------------------------------------------------------------
1 | using StudioX.Dependency;
2 |
3 | namespace StudioX.Application.Services
4 | {
5 | ///
6 | /// This interface must be implemented by all application services to identify them by convention.
7 | ///
8 | public interface IApplicationService : ITransientDependency
9 | {
10 | }
11 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Application/Services/IAvoidDuplicateCrossCuttingConcerns.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace StudioX.Application.Services
4 | {
5 | public interface IAvoidDuplicateCrossCuttingConcerns
6 | {
7 | List AppliedCrossCuttingConcerns { get; }
8 | }
9 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Auditing/AuditedAttribute.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace StudioX.Auditing
4 | {
5 | ///
6 | /// This attribute is used to apply audit logging for a single method or
7 | /// all methods of a class or interface.
8 | ///
9 | [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
10 | public class AuditedAttribute : Attribute
11 | {
12 |
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/framework/src/StudioX/Auditing/AuditingSelectorList.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace StudioX.Auditing
4 | {
5 | internal class AuditingSelectorList : List, IAuditingSelectorList
6 | {
7 | public bool RemoveByName(string name)
8 | {
9 | return RemoveAll(s => s.Name == name) > 0;
10 | }
11 | }
12 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Auditing/DisableAuditingAttribute.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace StudioX.Auditing
4 | {
5 | ///
6 | /// Used to disable auditing for a single method or
7 | /// all methods of a class or interface.
8 | ///
9 | [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method | AttributeTargets.Property)]
10 | public class DisableAuditingAttribute : Attribute
11 | {
12 |
13 | }
14 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Auditing/IAuditSerializer.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Auditing
2 | {
3 | public interface IAuditSerializer
4 | {
5 | string Serialize(object obj);
6 | }
7 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Auditing/IClientInfoProvider.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Auditing
2 | {
3 | public interface IClientInfoProvider
4 | {
5 | string BrowserInfo { get; }
6 |
7 | string ClientIpAddress { get; }
8 |
9 | string ComputerName { get; }
10 | }
11 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Auditing/NullClientInfoProvider.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Auditing
2 | {
3 | public class NullClientInfoProvider : IClientInfoProvider
4 | {
5 | public static NullClientInfoProvider Instance { get; } = new NullClientInfoProvider();
6 |
7 | public string BrowserInfo => null;
8 | public string ClientIpAddress => null;
9 | public string ComputerName => null;
10 | }
11 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Authorization/IAuthorizationHelper.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Reflection;
4 | using System.Threading.Tasks;
5 |
6 | namespace StudioX.Authorization
7 | {
8 | public interface IAuthorizationHelper
9 | {
10 | Task AuthorizeAsync(IEnumerable authorizeAttributes);
11 |
12 | Task AuthorizeAsync(MethodInfo methodInfo, Type type);
13 | }
14 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Authorization/IStudioXAllowAnonymousAttribute.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Authorization
2 | {
3 | public interface IStudioXAllowAnonymousAttribute
4 | {
5 | }
6 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Authorization/StudioXAllowAnonymousAttribute.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace StudioX.Authorization
4 | {
5 | ///
6 | /// Used to allow a method to be accessed by any user.
7 | /// Suppress defined in the class containing that method.
8 | ///
9 | public class StudioXAllowAnonymousAttribute : Attribute, IStudioXAllowAnonymousAttribute
10 | {
11 | }
12 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/BackgroundJobs/IBackgroundJob.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.BackgroundJobs
2 | {
3 | ///
4 | /// Defines interface of a background job.
5 | ///
6 | public interface IBackgroundJob
7 | {
8 | ///
9 | /// Executes the job with the .
10 | ///
11 | /// Job arguments.
12 | void Execute(TArgs args);
13 | }
14 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Configuration/Startup/EventBusConfiguration.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Configuration.Startup
2 | {
3 | internal class EventBusConfiguration : IEventBusConfiguration
4 | {
5 | public bool UseDefaultEventBus { get; set; }
6 |
7 | public EventBusConfiguration()
8 | {
9 | UseDefaultEventBus = true;
10 | }
11 | }
12 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Configuration/Startup/ISettingsConfiguration.cs:
--------------------------------------------------------------------------------
1 | using StudioX.Collections;
2 |
3 | namespace StudioX.Configuration.Startup
4 | {
5 | ///
6 | /// Used to configure setting system.
7 | ///
8 | public interface ISettingsConfiguration
9 | {
10 | ///
11 | /// List of settings providers.
12 | ///
13 | ITypeList Providers { get; }
14 | }
15 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Configuration/Startup/IValidationConfiguration.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 |
4 | namespace StudioX.Configuration.Startup
5 | {
6 | public interface IValidationConfiguration
7 | {
8 | List IgnoredTypes { get; }
9 | }
10 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Configuration/Startup/ModuleConfigurations.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Configuration.Startup
2 | {
3 | internal class ModuleConfigurations : IModuleConfigurations
4 | {
5 | public IStudioXStartupConfiguration StudioXConfiguration { get; }
6 |
7 | public ModuleConfigurations(IStudioXStartupConfiguration startupConfiguration)
8 | {
9 | StudioXConfiguration = startupConfiguration;
10 | }
11 | }
12 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Configuration/Startup/NavigationConfiguration.cs:
--------------------------------------------------------------------------------
1 | using StudioX.Application.Navigation;
2 | using StudioX.Collections;
3 |
4 | namespace StudioX.Configuration.Startup
5 | {
6 | internal class NavigationConfiguration : INavigationConfiguration
7 | {
8 | public ITypeList Providers { get; }
9 |
10 | public NavigationConfiguration()
11 | {
12 | Providers = new TypeList();
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Configuration/Startup/SettingsConfiguration.cs:
--------------------------------------------------------------------------------
1 | using StudioX.Collections;
2 |
3 | namespace StudioX.Configuration.Startup
4 | {
5 | internal class SettingsConfiguration : ISettingsConfiguration
6 | {
7 | public ITypeList Providers { get; }
8 |
9 | public SettingsConfiguration()
10 | {
11 | Providers = new TypeList();
12 | }
13 | }
14 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Configuration/Startup/ValidationConfiguration.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 |
4 | namespace StudioX.Configuration.Startup
5 | {
6 | public class ValidationConfiguration : IValidationConfiguration
7 | {
8 | public List IgnoredTypes { get; }
9 |
10 | public ValidationConfiguration()
11 | {
12 | IgnoredTypes = new List();
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Data/ActiveTransactionProviderArgs.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace StudioX.Data
4 | {
5 | public class ActiveTransactionProviderArgs : Dictionary
6 | {
7 | public static ActiveTransactionProviderArgs Empty { get; } = new ActiveTransactionProviderArgs();
8 | }
9 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Dependency/IIocManagerAccessor.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Dependency
2 | {
3 | public interface IIocManagerAccessor
4 | {
5 | IIocManager IocManager { get; }
6 | }
7 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Dependency/ISingletonDependency.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Dependency
2 | {
3 | ///
4 | /// All classes implement this interface are automatically registered to dependency injection as singleton object.
5 | ///
6 | public interface ISingletonDependency
7 | {
8 | }
9 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Dependency/ITransientDependency.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Dependency
2 | {
3 | ///
4 | /// All classes implement this interface are automatically registered to dependency injection as transient object.
5 | ///
6 | public interface ITransientDependency
7 | {
8 | }
9 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Domain/Entities/IEntity.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Domain.Entities
2 | {
3 | ///
4 | /// A shortcut of for most used primary key type ().
5 | ///
6 | public interface IEntity : IEntity
7 | {
8 |
9 | }
10 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Domain/Entities/IMayHaveTenant.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Domain.Entities
2 | {
3 | ///
4 | /// Implement this interface for an entity which may optionally have TenantId.
5 | ///
6 | public interface IMayHaveTenant
7 | {
8 | ///
9 | /// TenantId of this entity.
10 | ///
11 | int? TenantId { get; set; }
12 | }
13 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Domain/Entities/IMustHaveTenant.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Domain.Entities
2 | {
3 | ///
4 | /// Implement this interface for an entity which must have TenantId.
5 | ///
6 | public interface IMustHaveTenant
7 | {
8 | ///
9 | /// TenantId of this entity.
10 | ///
11 | int TenantId { get; set; }
12 | }
13 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Domain/Entities/IPassivable.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Domain.Entities
2 | {
3 | ///
4 | /// This interface is used to make an entity active/passive.
5 | ///
6 | public interface IPassivable
7 | {
8 | ///
9 | /// True: This entity is active.
10 | /// False: This entity is not active.
11 | ///
12 | bool IsActive { get; set; }
13 | }
14 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Domain/Policies/IPolicy.cs:
--------------------------------------------------------------------------------
1 | using StudioX.Dependency;
2 |
3 | namespace StudioX.Domain.Policies
4 | {
5 | ///
6 | /// This interface can be implemented by all Policy classes/interfaces to identify them by convention.
7 | ///
8 | public interface IPolicy : ITransientDependency
9 | {
10 |
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/framework/src/StudioX/Domain/Repositories/IRepository.cs:
--------------------------------------------------------------------------------
1 | using StudioX.Dependency;
2 |
3 | namespace StudioX.Domain.Repositories
4 | {
5 | ///
6 | /// This interface must be implemented by all repositories to identify them by convention.
7 | /// Implement generic version instead of this one.
8 | ///
9 | public interface IRepository : ITransientDependency
10 | {
11 |
12 | }
13 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Domain/Services/DomainService.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Domain.Services
2 | {
3 | ///
4 | /// This class can be used as a base class for domain services.
5 | ///
6 | public abstract class DomainService : StudioXServiceBase, IDomainService
7 | {
8 |
9 | }
10 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Domain/Services/IDomainService.cs:
--------------------------------------------------------------------------------
1 | using StudioX.Dependency;
2 |
3 | namespace StudioX.Domain.Services
4 | {
5 | ///
6 | /// This interface must be implemented by all domain services to identify them by convention.
7 | ///
8 | public interface IDomainService : ITransientDependency
9 | {
10 |
11 | }
12 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Domain/Uow/IUnitOfWorkFilterExecuter.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Domain.Uow
2 | {
3 | public interface IUnitOfWorkFilterExecuter
4 | {
5 | void ApplyDisableFilter(IUnitOfWork unitOfWork, string filterName);
6 | void ApplyEnableFilter(IUnitOfWork unitOfWork, string filterName);
7 | void ApplyFilterParameterValue(IUnitOfWork unitOfWork, string filterName, string parameterName, object value);
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/framework/src/StudioX/Events/Bus/Entities/EntityChangeType.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Events.Bus.Entities
2 | {
3 | public enum EntityChangeType
4 | {
5 | Created,
6 | Updated,
7 | Deleted
8 | }
9 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Events/Bus/Handlers/IEventHandler.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Events.Bus.Handlers
2 | {
3 | ///
4 | /// Undirect base interface for all event handlers.
5 | /// Implement instead of this one.
6 | ///
7 | public interface IEventHandler
8 | {
9 | }
10 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/IGuidGenerator.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace StudioX
4 | {
5 | ///
6 | /// Used to generate Ids.
7 | ///
8 | public interface IGuidGenerator
9 | {
10 | ///
11 | /// Creates a GUID.
12 | ///
13 | Guid Create();
14 | }
15 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/IHasErrorCode.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX
2 | {
3 | public interface IHasErrorCode
4 | {
5 | int Code { get; set; }
6 | }
7 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/IO/Extensions/StreamExtensions.cs:
--------------------------------------------------------------------------------
1 | using System.IO;
2 |
3 | namespace StudioX.IO.Extensions
4 | {
5 | public static class StreamExtensions
6 | {
7 | public static byte[] GetAllBytes(this Stream stream)
8 | {
9 | using (var memoryStream = new MemoryStream())
10 | {
11 | stream.CopyTo(memoryStream);
12 | return memoryStream.ToArray();
13 | }
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/framework/src/StudioX/IShouldInitialize.cs:
--------------------------------------------------------------------------------
1 | using Castle.Core;
2 |
3 | namespace StudioX
4 | {
5 | ///
6 | /// Defines interface for objects those should be Initialized before using it.
7 | /// If the object resolved using dependency injection,
8 | /// method is automatically called just after creation of the object.
9 | ///
10 | public interface IShouldInitialize : IInitializable
11 | {
12 | }
13 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/IUserIdentifier.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX
2 | {
3 | ///
4 | /// Interface to get a user identifier.
5 | ///
6 | public interface IUserIdentifier
7 | {
8 | ///
9 | /// Tenant Id. Can be null for host users.
10 | ///
11 | int? TenantId { get; }
12 |
13 | ///
14 | /// Id of the user.
15 | ///
16 | long UserId { get; }
17 | }
18 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Localization/ILanguageManager.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace StudioX.Localization
4 | {
5 | public interface ILanguageManager
6 | {
7 | LanguageInfo CurrentLanguage { get; }
8 |
9 | IReadOnlyList GetLanguages();
10 | }
11 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Localization/ILanguageProvider.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace StudioX.Localization
4 | {
5 | public interface ILanguageProvider
6 | {
7 | IReadOnlyList GetLanguages();
8 | }
9 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Localization/ILocalizationContext.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Localization
2 | {
3 | ///
4 | /// Localization context.
5 | ///
6 | public interface ILocalizationContext
7 | {
8 | ///
9 | /// Gets the localization manager.
10 | ///
11 | ILocalizationManager LocalizationManager { get; }
12 | }
13 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Localization/LanguageInfo.cs:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/studioxsoftware/studiox/73da8d7ec7f952e423c423192063ca4398eafcc6/framework/src/StudioX/Localization/LanguageInfo.cs
--------------------------------------------------------------------------------
/framework/src/StudioX/Localization/LocalizationSettingNames.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Localization
2 | {
3 | public static class LocalizationSettingNames
4 | {
5 | public const string DefaultLanguage = "StudioX.Localization.DefaultLanguageName";
6 | }
7 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Logging/IHasLogSeverity.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Logging
2 | {
3 | ///
4 | /// Interface to define a property (see ).
5 | ///
6 | public interface IHasLogSeverity
7 | {
8 | ///
9 | /// Log severity.
10 | ///
11 | LogSeverity Severity { get; set; }
12 | }
13 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Modules/IStudioXModuleManager.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 |
4 | namespace StudioX.Modules
5 | {
6 | public interface IStudioXModuleManager
7 | {
8 | StudioXModuleInfo StartupModule { get; }
9 |
10 | IReadOnlyList Modules { get; }
11 |
12 | void Initialize(Type startupModule);
13 |
14 | void StartModules();
15 |
16 | void ShutdownModules();
17 | }
18 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/MultiTenancy/ITenantResolveContributor.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.MultiTenancy
2 | {
3 | public interface ITenantResolveContributor
4 | {
5 | int? ResolveTenantId();
6 | }
7 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/MultiTenancy/ITenantResolver.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.MultiTenancy
2 | {
3 | public interface ITenantResolver
4 | {
5 | int? ResolveTenantId();
6 | }
7 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/MultiTenancy/ITenantResolverCache.cs:
--------------------------------------------------------------------------------
1 | using JetBrains.Annotations;
2 |
3 | namespace StudioX.MultiTenancy
4 | {
5 | public interface ITenantResolverCache
6 | {
7 | [CanBeNull]
8 | TenantResolverCacheItem Value { get; set; }
9 | }
10 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/MultiTenancy/ITenantStore.cs:
--------------------------------------------------------------------------------
1 | using JetBrains.Annotations;
2 |
3 | namespace StudioX.MultiTenancy
4 | {
5 | public interface ITenantStore
6 | {
7 | [CanBeNull]
8 | TenantInfo Find(int tenantId);
9 |
10 | [CanBeNull]
11 | TenantInfo Find([NotNull] string tenancyName);
12 | }
13 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/MultiTenancy/MultiTenancyConsts.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.MultiTenancy
2 | {
3 | public static class MultiTenancyConsts
4 | {
5 | ///
6 | /// Default tenant id: 1.
7 | ///
8 | public const int DefaultTenantId = 1;
9 |
10 | public const string TenantIdResolveKey = "StudioX.TenantId";
11 | }
12 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/MultiTenancy/NullTenantResolverCache.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.MultiTenancy
2 | {
3 | public class NullTenantResolverCache : ITenantResolverCache
4 | {
5 | public TenantResolverCacheItem Value
6 | {
7 | get { return null; }
8 | set { }
9 | }
10 | }
11 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/MultiTenancy/NullTenantStore.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.MultiTenancy
2 | {
3 | public class NullTenantStore : ITenantStore
4 | {
5 | public TenantInfo Find(int tenantId)
6 | {
7 | return null;
8 | }
9 |
10 | public TenantInfo Find(string tenancyName)
11 | {
12 | return null;
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/MultiTenancy/TenantInfo.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.MultiTenancy
2 | {
3 | public class TenantInfo
4 | {
5 | public int Id { get; set; }
6 |
7 | public string TenancyName { get; set; }
8 |
9 | public TenantInfo(int id, string tenancyName)
10 | {
11 | Id = id;
12 | TenancyName = tenancyName;
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/MultiTenancy/TenantResolverCacheItem.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.MultiTenancy
2 | {
3 | public class TenantResolverCacheItem
4 | {
5 | public int? TenantId { get; }
6 |
7 | public TenantResolverCacheItem(int? tenantId)
8 | {
9 | TenantId = tenantId;
10 | }
11 | }
12 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Notifications/INotificationConfiguration.cs:
--------------------------------------------------------------------------------
1 | using StudioX.Collections;
2 |
3 | namespace StudioX.Notifications
4 | {
5 | ///
6 | /// Used to configure notification system.
7 | ///
8 | public interface INotificationConfiguration
9 | {
10 | ///
11 | /// Notification providers.
12 | ///
13 | ITypeList Providers { get; }
14 | }
15 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Notifications/INotificationDefinitionContext.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Notifications
2 | {
3 | ///
4 | /// Used as a context while defining notifications.
5 | ///
6 | public interface INotificationDefinitionContext
7 | {
8 | ///
9 | /// Gets the notification definition manager.
10 | ///
11 | INotificationDefinitionManager Manager { get; }
12 | }
13 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Notifications/NotificationConfiguration.cs:
--------------------------------------------------------------------------------
1 | using StudioX.Collections;
2 |
3 | namespace StudioX.Notifications
4 | {
5 | internal class NotificationConfiguration : INotificationConfiguration
6 | {
7 | public ITypeList Providers { get; }
8 |
9 | public NotificationConfiguration()
10 | {
11 | Providers = new TypeList();
12 | }
13 | }
14 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Notifications/NotificationDefinitionContext.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Notifications
2 | {
3 | internal class NotificationDefinitionContext : INotificationDefinitionContext
4 | {
5 | public INotificationDefinitionManager Manager { get; }
6 |
7 | public NotificationDefinitionContext(INotificationDefinitionManager manager)
8 | {
9 | Manager = manager;
10 | }
11 | }
12 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Orm/ISecondaryOrmRegistrar.cs:
--------------------------------------------------------------------------------
1 | using StudioX.Dependency;
2 | using StudioX.Domain.Repositories;
3 |
4 | namespace StudioX.Orm
5 | {
6 | public interface ISecondaryOrmRegistrar
7 | {
8 | string OrmContextKey { get; }
9 |
10 | void RegisterRepositories(IIocManager iocManager, AutoRepositoryTypesAttribute defaultRepositoryTypes);
11 | }
12 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/PlugIns/IPlugInSource.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Reflection;
4 |
5 | namespace StudioX.PlugIns
6 | {
7 | public interface IPlugInSource
8 | {
9 | List GetAssemblies();
10 |
11 | List GetModules();
12 | }
13 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/PlugIns/IStudioXPlugInManager.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.PlugIns
2 | {
3 | public interface IStudioXPlugInManager
4 | {
5 | PlugInSourceList PlugInSources { get; }
6 | }
7 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/RealTime/OnlineClientEventArgs.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace StudioX.RealTime
4 | {
5 | public class OnlineClientEventArgs : EventArgs
6 | {
7 | public IOnlineClient Client { get; }
8 |
9 | public OnlineClientEventArgs(IOnlineClient client)
10 | {
11 | Client = client;
12 | }
13 | }
14 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/RealTime/OnlineUserEventArgs.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.RealTime
2 | {
3 | public class OnlineUserEventArgs : OnlineClientEventArgs
4 | {
5 | public UserIdentifier User { get; }
6 |
7 | public OnlineUserEventArgs(UserIdentifier user, IOnlineClient client)
8 | : base(client)
9 | {
10 | User = user;
11 | }
12 | }
13 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Reflection/Extensions/TypeExtensions.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Reflection;
3 |
4 | namespace StudioX.Reflection.Extensions
5 | {
6 | public static class TypeExtensions
7 | {
8 | public static Assembly GetAssembly(this Type type)
9 | {
10 | return type.GetTypeInfo().Assembly;
11 | }
12 | }
13 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Reflection/ITypeFinder.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace StudioX.Reflection
4 | {
5 | public interface ITypeFinder
6 | {
7 | Type[] Find(Func predicate);
8 |
9 | Type[] FindAll();
10 | }
11 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/RegularGuidGenerator.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using StudioX.Dependency;
3 |
4 | namespace StudioX
5 | {
6 | ///
7 | /// Implements by using .
8 | ///
9 | public class RegularGuidGenerator : IGuidGenerator, ITransientDependency
10 | {
11 | public virtual Guid Create()
12 | {
13 | return Guid.NewGuid();
14 | }
15 | }
16 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Resources/Embedded/EmbeddedResourcesConfiguration.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace StudioX.Resources.Embedded
4 | {
5 | public class EmbeddedResourcesConfiguration : IEmbeddedResourcesConfiguration
6 | {
7 | public List Sources { get; }
8 |
9 | public EmbeddedResourcesConfiguration()
10 | {
11 | Sources = new List();
12 | }
13 | }
14 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Resources/Embedded/IEmbeddedResourcesConfiguration.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace StudioX.Resources.Embedded
4 | {
5 | public interface IEmbeddedResourcesConfiguration
6 | {
7 | List Sources { get; }
8 | }
9 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Runtime/Caching/CacheManagerExtensions.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Runtime.Caching
2 | {
3 | ///
4 | /// Extension methods for .
5 | ///
6 | public static class CacheManagerExtensions
7 | {
8 | public static ITypedCache GetCache(this ICacheManager cacheManager, string name)
9 | {
10 | return cacheManager.GetCache(name).AsTyped();
11 | }
12 | }
13 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Runtime/IAmbientDataContext.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Runtime
2 | {
3 | public interface IAmbientDataContext
4 | {
5 | void SetData(string key, object value);
6 |
7 | object GetData(string key);
8 | }
9 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Runtime/IAmbientScopeProvider.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace StudioX.Runtime
4 | {
5 | public interface IAmbientScopeProvider
6 | {
7 | T GetValue(string contextKey);
8 |
9 | IDisposable BeginScope(string contextKey, T value);
10 | }
11 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Runtime/Session/IPrincipalAccessor.cs:
--------------------------------------------------------------------------------
1 | using System.Security.Claims;
2 |
3 | namespace StudioX.Runtime.Session
4 | {
5 | public interface IPrincipalAccessor
6 | {
7 | ClaimsPrincipal Principal { get; }
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/framework/src/StudioX/Runtime/Session/SessionOverride.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Runtime.Session
2 | {
3 | public class SessionOverride
4 | {
5 | public long? UserId { get; }
6 |
7 | public int? TenantId { get; }
8 |
9 | public SessionOverride(int? tenantId, long? userId)
10 | {
11 | TenantId = tenantId;
12 | UserId = userId;
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Runtime/Validation/AlwaysValidValueValidator.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace StudioX.Runtime.Validation
4 | {
5 | [Validator("NULL")]
6 | [Serializable]
7 | public class AlwaysValidValueValidator : ValueValidatorBase
8 | {
9 | public override bool IsValid(object value)
10 | {
11 | return true;
12 | }
13 | }
14 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Runtime/Validation/DisableValidationAttribute.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace StudioX.Runtime.Validation
4 | {
5 | ///
6 | /// Can be added to a method to disable auto validation.
7 | ///
8 | [AttributeUsage(AttributeTargets.Method | AttributeTargets.Class | AttributeTargets.Property)]
9 | public class DisableValidationAttribute : Attribute
10 | {
11 |
12 | }
13 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Runtime/Validation/EnableValidationAttribute.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace StudioX.Runtime.Validation
4 | {
5 | ///
6 | /// Can be added to a method to enable auto validation if validation is disabled for it's class.
7 | ///
8 | [AttributeUsage(AttributeTargets.Method)]
9 | public class EnableValidationAttribute : Attribute
10 | {
11 |
12 | }
13 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Runtime/Validation/IShouldNormalize.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Runtime.Validation
2 | {
3 | ///
4 | /// This interface is used to normalize inputs before method execution.
5 | ///
6 | public interface IShouldNormalize
7 | {
8 | ///
9 | /// This method is called lastly before method execution (after validation if exists).
10 | ///
11 | void Normalize();
12 | }
13 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Runtime/Validation/IValueValidator.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace StudioX.Runtime.Validation
4 | {
5 | public interface IValueValidator
6 | {
7 | string Name { get; }
8 |
9 | object this[string key] { get; set; }
10 |
11 | IDictionary Attributes { get; }
12 |
13 | bool IsValid(object value);
14 | }
15 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Runtime/Validation/ValidatorAttribute.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace StudioX.Runtime.Validation
4 | {
5 | [AttributeUsage(AttributeTargets.Class)]
6 | public class ValidatorAttribute : Attribute
7 | {
8 | public string Name { get; set; }
9 |
10 | public ValidatorAttribute(string name)
11 | {
12 | Name = name;
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Text/Formatting/FormatStringToken.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Text.Formatting
2 | {
3 | internal class FormatStringToken
4 | {
5 | public string Text { get; private set; }
6 |
7 | public FormatStringTokenType Type { get; private set; }
8 |
9 | public FormatStringToken(string text, FormatStringTokenType type)
10 | {
11 | Text = text;
12 | Type = type;
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Text/Formatting/FormatStringTokenType.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Text.Formatting
2 | {
3 | internal enum FormatStringTokenType
4 | {
5 | ConstantText,
6 | DynamicValue
7 | }
8 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Threading/BackgroundWorkers/IBackgroundWorker.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Threading.BackgroundWorkers
2 | {
3 | ///
4 | /// Interface for a worker (thread) that runs on background to perform some tasks.
5 | ///
6 | public interface IBackgroundWorker : IRunnable
7 | {
8 |
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/framework/src/StudioX/Threading/StudioXTaskCache.cs:
--------------------------------------------------------------------------------
1 | using System.Threading.Tasks;
2 |
3 | namespace StudioX.Threading
4 | {
5 | public static class StudioXTaskCache
6 | {
7 | public static Task CompletedTask { get; } = Task.FromResult(0);
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/framework/src/StudioX/Timing/ClockProviders.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Timing
2 | {
3 | public static class ClockProviders
4 | {
5 | public static UnspecifiedClockProvider Unspecified { get; } = new UnspecifiedClockProvider();
6 |
7 | public static LocalClockProvider Local { get; } = new LocalClockProvider();
8 |
9 | public static UtcClockProvider Utc { get; } = new UtcClockProvider();
10 | }
11 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/Timing/TimingSettingNames.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Timing
2 | {
3 | public static class TimingSettingNames
4 | {
5 | public const string TimeZone = "StudioX.Timing.TimeZone";
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/framework/src/StudioX/UI/Inputs/IInputType.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using StudioX.Runtime.Validation;
3 |
4 | namespace StudioX.UI.Inputs
5 | {
6 | public interface IInputType
7 | {
8 | string Name { get; }
9 |
10 | object this[string key] { get; set; }
11 |
12 | IDictionary Attributes { get; }
13 |
14 | IValueValidator Validator { get; set; }
15 | }
16 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/UI/Inputs/ILocalizableComboboxItem.cs:
--------------------------------------------------------------------------------
1 | using StudioX.Localization;
2 | using Newtonsoft.Json;
3 |
4 | namespace StudioX.UI.Inputs
5 | {
6 | public interface ILocalizableComboboxItem
7 | {
8 | string Value { get; set; }
9 |
10 | [JsonConverter(typeof(LocalizableStringToStringJsonConverter))]
11 | ILocalizableString DisplayText { get; set; }
12 | }
13 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/UI/Inputs/ILocalizableComboboxItemSource.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace StudioX.UI.Inputs
4 | {
5 | public interface ILocalizableComboboxItemSource
6 | {
7 | ICollection Items { get; }
8 | }
9 | }
--------------------------------------------------------------------------------
/framework/src/StudioX/UI/Inputs/InputTypeAttribute.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace StudioX.UI.Inputs
4 | {
5 | [AttributeUsage(AttributeTargets.Class)]
6 | public class InputTypeAttribute : Attribute
7 | {
8 | public string Name { get; set; }
9 |
10 | public InputTypeAttribute(string name)
11 | {
12 | Name = name;
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/framework/test/StudioX.AspNetCore.Tests/App/AppServices/NameConflictAppService.cs:
--------------------------------------------------------------------------------
1 | using StudioX.Application.Services;
2 | using Microsoft.AspNetCore.Mvc;
3 |
4 | namespace StudioX.AspNetCore.App.AppServices
5 | {
6 | public class NameConflictAppService : ApplicationService
7 | {
8 | [HttpGet]
9 | public string GetConstantString()
10 | {
11 | return "return-value-from-app-service";
12 | }
13 | }
14 | }
--------------------------------------------------------------------------------
/framework/test/StudioX.AspNetCore.Tests/App/AppServices/ParameterTestAppService.cs:
--------------------------------------------------------------------------------
1 | using StudioX.Application.Services;
2 | using StudioX.AspNetCore.App.Models;
3 |
4 | namespace StudioX.AspNetCore.App.AppServices
5 | {
6 | public class ParameterTestAppService : ApplicationService
7 | {
8 | public string GetComplexInput(SimpleViewModel model, bool testBool)
9 | {
10 | return "42";
11 | }
12 | }
13 | }
--------------------------------------------------------------------------------
/framework/test/StudioX.Dapper.Tests/Mappings/Product.cs:
--------------------------------------------------------------------------------
1 | using StudioX.Dapper.Tests.Entities;
2 |
3 | using DapperExtensions.Mapper;
4 |
5 | namespace StudioX.Dapper.Tests.Mappings
6 | {
7 | public sealed class ProductMap : ClassMapper
8 | {
9 | public ProductMap()
10 | {
11 | Table("Products");
12 | Map(x => x.Id).Key(KeyType.Identity);
13 | AutoMap();
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/framework/test/StudioX.Dapper.Tests/Mappings/ProductDetail.cs:
--------------------------------------------------------------------------------
1 | using StudioX.Dapper.Tests.Entities;
2 |
3 | using DapperExtensions.Mapper;
4 |
5 | namespace StudioX.Dapper.Tests.Mappings
6 | {
7 | public sealed class ProductDetailMap : ClassMapper
8 | {
9 | public ProductDetailMap()
10 | {
11 | Table("ProductDetails");
12 | AutoMap();
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/framework/test/StudioX.EntityFramework.GraphDiff.Tests/Entities/MyDependentEntity.cs:
--------------------------------------------------------------------------------
1 | using StudioX.Domain.Entities;
2 |
3 | namespace StudioX.EntityFramework.GraphDIff.Tests.Entities
4 | {
5 | public class MyDependentEntity : Entity
6 | {
7 | public virtual MyMainEntity MyMainEntity { get; set; }
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/framework/test/StudioX.EntityFramework.GraphDiff.Tests/Entities/MyMainEntity.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using StudioX.Domain.Entities;
3 |
4 | namespace StudioX.EntityFramework.GraphDIff.Tests.Entities
5 | {
6 | public class MyMainEntity : Entity
7 | {
8 | public virtual ICollection MyDependentEntities { get; set; }
9 | }
10 | }
--------------------------------------------------------------------------------
/framework/test/StudioX.EntityFramework.GraphDiff.Tests/Entities/MyUnmappedEntity.cs:
--------------------------------------------------------------------------------
1 | using StudioX.Domain.Entities;
2 |
3 | namespace StudioX.EntityFramework.GraphDIff.Tests.Entities
4 | {
5 | public class MyUnmappedEntity : Entity
6 | {
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/framework/test/StudioX.EntityFramework.GraphDiff.Tests/StudioXEntityFrameworkGraphDiffTestBase.cs:
--------------------------------------------------------------------------------
1 | using StudioX.TestBase;
2 |
3 | namespace StudioX.EntityFramework.GraphDIff.Tests
4 | {
5 | public class StudioXEntityFrameworkGraphDiffTestBase : StudioXIntegratedTestBase
6 | {
7 |
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/framework/test/StudioX.EntityFrameworkCore.Dapper.Tests/Dapper/CommentMap.cs:
--------------------------------------------------------------------------------
1 | using DapperExtensions.Mapper;
2 | using StudioX.EntityFrameworkCore.Dapper.Tests.Domain;
3 |
4 | namespace StudioX.EntityFrameworkCore.Dapper.Tests.Dapper
5 | {
6 | public sealed class CommentMap : ClassMapper
7 | {
8 | public CommentMap()
9 | {
10 | Table("Comments");
11 | Map(x => x.Id).Key(KeyType.Identity);
12 | AutoMap();
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/framework/test/StudioX.EntityFrameworkCore.Dapper.Tests/Domain/Comment.cs:
--------------------------------------------------------------------------------
1 | using StudioX.Domain.Entities;
2 |
3 | namespace StudioX.EntityFrameworkCore.Dapper.Tests.Domain
4 | {
5 | public class Comment : Entity
6 | {
7 | protected Comment()
8 | {
9 | }
10 |
11 | public Comment(string text) : this()
12 | {
13 | Text = text;
14 | }
15 |
16 | public string Text { get; set; }
17 | }
18 | }
--------------------------------------------------------------------------------
/framework/test/StudioX.EntityFrameworkCore.Dapper.Tests/Ef/IPostRepository.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | using StudioX.Domain.Repositories;
4 | using StudioX.EntityFrameworkCore.Dapper.Tests.Domain;
5 |
6 | namespace StudioX.EntityFrameworkCore.Dapper.Tests.Ef
7 | {
8 | public interface IPostRepository : IRepository
9 | {
10 | }
11 | }
--------------------------------------------------------------------------------
/framework/test/StudioX.EntityFrameworkCore.Tests/Ef/IPostRepository.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using StudioX.Domain.Repositories;
3 | using StudioX.EntityFrameworkCore.Tests.Domain;
4 |
5 | namespace StudioX.EntityFrameworkCore.Tests.Ef
6 | {
7 | public interface IPostRepository : IRepository
8 | {
9 | }
10 | }
--------------------------------------------------------------------------------
/framework/test/StudioX.TestBase.SampleApplication.Tests/Authorization/CrudServiceAuthTest.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.TestBase.SampleApplication.Tests.Authorization
2 | {
3 | public class CrudServiceAuthTest : SampleApplicationTestBase
4 | {
5 | public CrudServiceAuthTest()
6 | {
7 |
8 | }
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/framework/test/StudioX.TestBase.SampleApplication/ContacLists/ContactListDto.cs:
--------------------------------------------------------------------------------
1 | using StudioX.Application.Services.Dto;
2 | using StudioX.AutoMapper;
3 |
4 | namespace StudioX.TestBase.SampleApplication.ContacLists
5 | {
6 | [AutoMapFrom(typeof(ContactList))]
7 | public class ContactListDto : EntityDto
8 | {
9 | public virtual string Name { get; set; }
10 | }
11 | }
--------------------------------------------------------------------------------
/framework/test/StudioX.TestBase.SampleApplication/ContacLists/IContactListAppService.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using StudioX.Application.Services;
3 |
4 | namespace StudioX.TestBase.SampleApplication.ContacLists
5 | {
6 | public interface IContactListAppService : IApplicationService
7 | {
8 | void Test();
9 |
10 | List GetContactLists();
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/framework/test/StudioX.TestBase.SampleApplication/GuidEntities/TestEntityWithGuidPk.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using StudioX.Domain.Entities;
3 |
4 | namespace StudioX.TestBase.SampleApplication.GuidEntities
5 | {
6 | public class TestEntityWithGuidPk : Entity
7 | {
8 |
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/framework/test/StudioX.TestBase.SampleApplication/GuidEntities/TestEntityWithGuidPkAndDbGeneratedValue.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.ComponentModel.DataAnnotations.Schema;
3 | using StudioX.Domain.Entities;
4 |
5 | namespace StudioX.TestBase.SampleApplication.GuidEntities
6 | {
7 | public class TestEntityWithGuidPkAndDbGeneratedValue : Entity
8 | {
9 | [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
10 | public override Guid Id { get; set; }
11 | }
12 | }
--------------------------------------------------------------------------------
/framework/test/StudioX.TestBase.SampleApplication/Messages/GetMessagesWithFilterInput.cs:
--------------------------------------------------------------------------------
1 | using StudioX.Application.Services.Dto;
2 |
3 | namespace StudioX.TestBase.SampleApplication.Messages
4 | {
5 | public class GetMessagesWithFilterInput : PagedAndSortedResultRequestDto
6 | {
7 | public string Text { get; set; }
8 | }
9 | }
--------------------------------------------------------------------------------
/framework/test/StudioX.TestBase.SampleApplication/Messages/IAsyncMessageAppService.cs:
--------------------------------------------------------------------------------
1 | using StudioX.Application.Services;
2 |
3 | namespace StudioX.TestBase.SampleApplication.Messages
4 | {
5 | public interface IAsyncMessageAppService : IAsyncCrudAppService
6 | {
7 |
8 | }
9 | }
--------------------------------------------------------------------------------
/framework/test/StudioX.TestBase.SampleApplication/Messages/MessageDto.cs:
--------------------------------------------------------------------------------
1 | using StudioX.Application.Services.Dto;
2 | using StudioX.AutoMapper;
3 |
4 | namespace StudioX.TestBase.SampleApplication.Messages
5 | {
6 | [AutoMap(typeof(Message))]
7 | public class MessageDto : FullAuditedEntityDto
8 | {
9 | public int? TenantId { get; set; }
10 |
11 | public string Text { get; set; }
12 | }
13 | }
--------------------------------------------------------------------------------
/framework/test/StudioX.TestBase.SampleApplication/People/Dto/GetPeopleInput.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.TestBase.SampleApplication.People.Dto
2 | {
3 | public class GetPeopleInput
4 | {
5 | public string NameFilter { get; set; }
6 | }
7 | }
--------------------------------------------------------------------------------
/framework/test/StudioX.TestBase.SampleApplication/People/Dto/PersonDto.cs:
--------------------------------------------------------------------------------
1 | using StudioX.Application.Services.Dto;
2 | using StudioX.AutoMapper;
3 |
4 | namespace StudioX.TestBase.SampleApplication.People.Dto
5 | {
6 | [AutoMap(typeof(Person))]
7 | public class PersonDto : EntityDto
8 | {
9 | public int ContactListId { get; set; }
10 |
11 | public string Name { get; set; }
12 | }
13 | }
--------------------------------------------------------------------------------
/framework/test/StudioX.Tests/Domain/Entities/Department.cs:
--------------------------------------------------------------------------------
1 | using StudioX.Domain.Entities;
2 |
3 | namespace StudioX.Tests.Domain.Entities
4 | {
5 | public class Department : Entity
6 | {
7 | public string Name { get; set; }
8 | }
9 | }
--------------------------------------------------------------------------------
/framework/test/StudioX.Tests/Domain/Entities/Manager.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Tests.Domain.Entities
2 | {
3 | public class Manager : Worker
4 | {
5 | public string Title { get; set; }
6 | }
7 | }
--------------------------------------------------------------------------------
/framework/test/StudioX.Tests/Domain/Entities/Worker.cs:
--------------------------------------------------------------------------------
1 | using StudioX.Domain.Entities;
2 |
3 | namespace StudioX.Tests.Domain.Entities
4 | {
5 | public class Worker : Entity
6 | {
7 | public string Name { get; set; }
8 | }
9 | }
--------------------------------------------------------------------------------
/framework/test/StudioX.Tests/Events/Bus/EventBusTestBase.cs:
--------------------------------------------------------------------------------
1 | using StudioX.Events.Bus;
2 |
3 | namespace StudioX.Tests.Events.Bus
4 | {
5 | public abstract class EventBusTestBase
6 | {
7 | protected IEventBus EventBus;
8 |
9 | protected EventBusTestBase()
10 | {
11 | EventBus = new EventBus();
12 | }
13 | }
14 | }
--------------------------------------------------------------------------------
/framework/test/StudioX.Tests/Events/Bus/MyDerivedEventData.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Tests.Events.Bus
2 | {
3 | public class MyDerivedEventData : MySimpleEventData
4 | {
5 | public MyDerivedEventData(int value)
6 | : base(value)
7 | {
8 | }
9 | }
10 | }
--------------------------------------------------------------------------------
/framework/test/StudioX.Tests/Events/Bus/MySimpleEventData.cs:
--------------------------------------------------------------------------------
1 | using StudioX.Events.Bus;
2 |
3 | namespace StudioX.Tests.Events.Bus
4 | {
5 | public class MySimpleEventData : EventData
6 | {
7 | public int Value { get; set; }
8 |
9 | public MySimpleEventData(int value)
10 | {
11 | Value = value;
12 | }
13 | }
14 | }
--------------------------------------------------------------------------------
/framework/test/StudioX.Tests/Json/JsonExtensionsTests.cs:
--------------------------------------------------------------------------------
1 | using StudioX.Json;
2 | using Shouldly;
3 | using Xunit;
4 |
5 | namespace StudioX.Tests.Json
6 | {
7 | public class JsonExtensionsTests
8 | {
9 | [Fact]
10 | public void ToJsonStringTest()
11 | {
12 | 42.ToJsonString().ShouldBe("42");
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/framework/test/StudioX.Tests/Localization/Json/JsonSources/Lang-zh-CN.json:
--------------------------------------------------------------------------------
1 | {
2 | "culture": "zh-CN",
3 | "texts": {
4 | "Apple": "苹果",
5 | "Banana": "香蕉"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/framework/test/StudioX.Tests/Localization/Json/JsonSources/Lang.json:
--------------------------------------------------------------------------------
1 | {
2 | "culture": "en",
3 | "texts": {
4 | "Apple": "Apple",
5 | "Banana": "Banana"
6 | }
7 | }
--------------------------------------------------------------------------------
/framework/test/StudioX.Tests/Localization/Json/XmlSources/Lang-zh-CN.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | 这是一个测试.
6 |
7 |
--------------------------------------------------------------------------------
/framework/test/StudioX.Tests/Localization/Json/XmlSources/Lang.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | This is a test.
6 |
7 |
--------------------------------------------------------------------------------
/framework/test/StudioX.Tests/Localization/TestXmlFiles/Test-tr.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Dünya
6 |
7 |
--------------------------------------------------------------------------------
/framework/test/StudioX.Tests/Localization/TestXmlFiles/Test.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | World
6 |
7 |
--------------------------------------------------------------------------------
/framework/test/StudioX.Tests/Localization/XmlLocalizationDictionaryBuilderTests.cs:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/studioxsoftware/studiox/73da8d7ec7f952e423c423192063ca4398eafcc6/framework/test/StudioX.Tests/Localization/XmlLocalizationDictionaryBuilderTests.cs
--------------------------------------------------------------------------------
/framework/test/StudioX.Tests/Resources/Embedded/MyResources/js/MyScriptFile1.js:
--------------------------------------------------------------------------------
1 | /* This file is just a sample to use in tests */
2 | alert('hello world!');
--------------------------------------------------------------------------------
/framework/test/StudioX.Web.Api.Tests/AppServices/IMyFirstAppService.cs:
--------------------------------------------------------------------------------
1 | using StudioX.Application.Services;
2 |
3 | namespace StudioX.Web.Api.Tests.AppServices
4 | {
5 | public interface IMyFirstAppService : IApplicationService
6 | {
7 | string GetStr(int i);
8 |
9 | [MyIgnoreApi]
10 | string GetStr2(int i);
11 | }
12 | }
--------------------------------------------------------------------------------
/framework/test/StudioX.Web.Api.Tests/AppServices/MyFirstAppService.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Web.Api.Tests.AppServices
2 | {
3 | public class MyFirstAppService : IMyFirstAppService
4 | {
5 | public string GetStr(int i)
6 | {
7 | return i.ToString();
8 | }
9 |
10 | public string GetStr2(int i)
11 | {
12 | return (i + 1).ToString();
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/framework/test/StudioX.Web.Api.Tests/AppServices/MyIgnoreApiAttribute.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace StudioX.Web.Api.Tests.AppServices
4 | {
5 | public class MyIgnoreApiAttribute : Attribute
6 | {
7 |
8 | }
9 | }
--------------------------------------------------------------------------------
/framework/tools/gitlink/GitLink.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/studioxsoftware/studiox/73da8d7ec7f952e423c423192063ca4398eafcc6/framework/tools/gitlink/GitLink.exe
--------------------------------------------------------------------------------
/framework/tools/nuget/nuget.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/studioxsoftware/studiox/73da8d7ec7f952e423c423192063ca4398eafcc6/framework/tools/nuget/nuget.exe
--------------------------------------------------------------------------------
/module-zero/src/StudioX.Zero.AspNetCore/SignInStatus.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Zero.AspNetCore
2 | {
3 | public enum SignInStatus
4 | {
5 | RequiresVerification,
6 | Success,
7 | Failure,
8 | LockedOut
9 | }
10 | }
--------------------------------------------------------------------------------
/module-zero/src/StudioX.Zero.Common/Authorization/Roles/RolePermissionSetting.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Authorization.Roles
2 | {
3 | ///
4 | /// Used to store setting for a permission for a role.
5 | ///
6 | public class RolePermissionSetting : PermissionSetting
7 | {
8 | ///
9 | /// Role id.
10 | ///
11 | public virtual int RoleId { get; set; }
12 | }
13 | }
--------------------------------------------------------------------------------
/module-zero/src/StudioX.Zero.Common/Authorization/Users/UserPermissionSetting.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.Authorization.Users
2 | {
3 | ///
4 | /// Used to store setting for a permission for a user.
5 | ///
6 | public class UserPermissionSetting : PermissionSetting
7 | {
8 | ///
9 | /// User id.
10 | ///
11 | public virtual long UserId { get; set; }
12 | }
13 | }
--------------------------------------------------------------------------------
/module-zero/src/StudioX.Zero.Common/MultiTenancy/IStudioXZeroDbMigrator.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.MultiTenancy
2 | {
3 | public interface IStudioXZeroDbMigrator
4 | {
5 | void CreateOrMigrateForHost();
6 |
7 | void CreateOrMigrateForTenant(StudioXTenantBase tenant);
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/module-zero/src/StudioX.Zero.Common/MultiTenancy/ITenantCache.cs:
--------------------------------------------------------------------------------
1 | namespace StudioX.MultiTenancy
2 | {
3 | public interface ITenantCache
4 | {
5 | TenantCacheItem Get(int tenantId);
6 |
7 | TenantCacheItem Get(string tenancyName);
8 |
9 | TenantCacheItem GetOrNull(string tenancyName);
10 |
11 | TenantCacheItem GetOrNull(int tenantId);
12 | }
13 | }
--------------------------------------------------------------------------------
/module-zero/src/StudioX.Zero.Common/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.CompilerServices;
2 |
3 | [assembly: InternalsVisibleTo("StudioX.Zero")]
4 | [assembly: InternalsVisibleTo("StudioX.ZeroCore")]
--------------------------------------------------------------------------------
/module-zero/src/StudioX.Zero.Common/Zero/Configuration/IRoleManagementConfig.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace StudioX.Zero.Configuration
4 | {
5 | public interface IRoleManagementConfig
6 | {
7 | List StaticRoles { get; }
8 | }
9 | }
--------------------------------------------------------------------------------
/module-zero/src/StudioX.Zero.Common/Zero/Configuration/IUserManagementConfig.cs:
--------------------------------------------------------------------------------
1 | using StudioX.Collections;
2 |
3 | namespace StudioX.Zero.Configuration
4 | {
5 | ///
6 | /// User management configuration.
7 | ///
8 | public interface IUserManagementConfig
9 | {
10 | ITypeList